Zahlen suchen
Moin.
Ich habe Buchtitel in meiner Datenbank und möchte die durchsuchen.
Dabei will ich halt nach Buchstaben und Zahlen durchsuchen.
Nun habe ich 2 Probleme.
Einmal bin ich überzeugt das der Code Korrekt ist, trotzdem klappt es mit der Ausgabe nicht.
Er gibt immer alle Titel aus.
Zweitens weiß ich nicht was ich für eine Variable übergeben muss damit ich zahlen finde.
Ich übergebe mit nem normalen link die $letter Variable.
<a href="systeme.php?letter=z">Z</a>
Was muss ich bei den Zahlen angeben im Link?
Jan
Ich habe Buchtitel in meiner Datenbank und möchte die durchsuchen.
Dabei will ich halt nach Buchstaben und Zahlen durchsuchen.
Nun habe ich 2 Probleme.
Einmal bin ich überzeugt das der Code Korrekt ist, trotzdem klappt es mit der Ausgabe nicht.
Er gibt immer alle Titel aus.
Zweitens weiß ich nicht was ich für eine Variable übergeben muss damit ich zahlen finde.
Ich übergebe mit nem normalen link die $letter Variable.
<a href="systeme.php?letter=z">Z</a>
|
|
PHP-Quelltext |
1 2 3 |
$letter = $HTTP_POST_VARS["letter"];
$abfrage = "SELECT * FROM rpgsammlung_1 WHERE Titel LIKE '$letter%' ORDER BY Titel ASC";
|
Was muss ich bei den Zahlen angeben im Link?
Jan
"Fehler sind immer zu Verzeihen, wenn man den Mut hat, diese auch zu zugeben." Lee Jun-Fan
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Jan Schattling« (4. September 2006, 02:13)
RE: Zahlen suchen
Hmm, also genau kann ich es im Moment auch nicht nachvollziehen, aber zumindest könntest du den code etwas "sauberer" schreiben, vielleicht klappt es dann ja auch. 
Ich hoff ja, dass du mysql_real_escape_string(); dann auch ncoh auf die DB-Abfrage anwendest. wobei dann:
wohl besser wär.
MfG
OnkelJürgen

|
|
PHP-Quelltext |
1 |
$abfrage = "SELECT * FROM rpgsammlung_1 WHERE Titel LIKE '" . $letter . "%' ORDER BY Titel ASC";
|
Ich hoff ja, dass du mysql_real_escape_string(); dann auch ncoh auf die DB-Abfrage anwendest. wobei dann:
|
|
PHP-Quelltext |
1 |
$abfrage = "SELECT * FROM rpgsammlung_1 WHERE Titel LIKE '" . mysql_real_escape_string($letter) . "%' ORDER BY Titel ASC";
|
wohl besser wär.
MfG
OnkelJürgen
Auf jede Frage gibt es eine Antwort, man muss nur lange genug danach suchen.
z.B. auf www.netscripter.de :-P
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »OnkelJürgen« (4. September 2006, 02:38)
öhm... von der basis wende ich es nicht an... ich hab keine ahnung was das ist. 
Das ist alles was ich mache:
Es lag übrigends am POST... mit GET ging es.
Jan

Das ist alles was ich mache:
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?
include ("config.php");
include ("connect.php");
$letter = $HTTP_POST_VARS["letter"];
$abfrage = "SELECT * FROM rpgsammlung_1 WHERE Titel LIKE '$letter%' ORDER BY Titel ASC";
$result=mysql_query($abfrage);
while($row = mysql_fetch_object($result))
{
echo "<tr><td><div align='center'> <font face='Verdana, Arial, Helvetica, sans-serif' size='2'><a href='anzeige.php?ID=$row->ID'>$row->Titel</a></font></div></td></tr>";
}
?>
|
Es lag übrigends am POST... mit GET ging es.
Jan
"Fehler sind immer zu Verzeihen, wenn man den Mut hat, diese auch zu zugeben." Lee Jun-Fan
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Jan Schattling« (4. September 2006, 04:17)
Zitat
Original von Jan Schattling
öhm... von der basis wende ich es nicht an... ich hab keine ahnung was das ist.![]()
http://www.inside-php.de/tutorial/PHP-Si…-vermeiden.html
C'est le problème.
mmmh...interessant... habe ich nie sonderlich drüber nachgedacht.
Ich bin mir nicht sicher ob es wirklich soo wichtig ist... aber ansich ist es etwas das ich in Zukunft eventuell mit einbeziehen kann.
Und zum nutzen muss ich einfach nur statt '$letter', 'mysql_real_escape_string($letter)' schreiben?
Dann ist es recht einfach.
Kann mir noch jemand bei meinem Problem mit den Zahlen und Sonderzeichen helfen?
Jan
Ich bin mir nicht sicher ob es wirklich soo wichtig ist... aber ansich ist es etwas das ich in Zukunft eventuell mit einbeziehen kann.
Und zum nutzen muss ich einfach nur statt '$letter', 'mysql_real_escape_string($letter)' schreiben?
Dann ist es recht einfach.
Kann mir noch jemand bei meinem Problem mit den Zahlen und Sonderzeichen helfen?
Jan
"Fehler sind immer zu Verzeihen, wenn man den Mut hat, diese auch zu zugeben." Lee Jun-Fan
mmmh... ich dachte die punkte sind nur escapezeichen und nicht wichtig bei variablen wenn man nicht escaped.
und machen mir die " keine Probleme wenn ich sie zwischen " "verwende?
Normalerweise macht mir das nämlich welche da sie fehlerhaft interpretiert werden.
Jan
und machen mir die " keine Probleme wenn ich sie zwischen " "verwende?
Normalerweise macht mir das nämlich welche da sie fehlerhaft interpretiert werden.
Jan
"Fehler sind immer zu Verzeihen, wenn man den Mut hat, diese auch zu zugeben." Lee Jun-Fan
wenn du ein " in einem block von " " haben willst dann musst du mit / escapen zBsp:
siehe:
http://www.inside-php.de/tutorial/PHP-Ei…pen-in-PHP.html
der . ist der konkatenationsoperator. der fügt strings zusammen.
jperl
ps: dein problem mit den zahlen hab ich immer noch nicht verstanden.
|
|
PHP-Quelltext |
1 |
echo "<img src=\"src.gif\" />";
|
siehe:
http://www.inside-php.de/tutorial/PHP-Ei…pen-in-PHP.html
der . ist der konkatenationsoperator. der fügt strings zusammen.
jperl
ps: dein problem mit den zahlen hab ich immer noch nicht verstanden.
Konfuzius [chinesischer Philosoph (551 - 479 v. Chr.)]
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?
include ("config.php");
include ("connect.php");
$letter = $HTTP_POST_VARS["letter"];
if( is_numeric( $letter ))
{
$abfrage = 'SELECT ID, Titel'
. ' FROM rpgsammlung_1'
. ' WHERE Titel LIKE "1%"'
. ' OR Titel LIKE "2%"'
. ' OR Titel LIKE "3%"'
. ' OR Titel LIKE "4%"'
. ' OR Titel LIKE "5%"'
. ' OR Titel LIKE "6%"'
. ' OR Titel LIKE "7%"'
. ' OR Titel LIKE "8%"'
. ' OR Titel LIKE "9%"'
. ' OR Titel LIKE "0%"'
. ' ORDER BY Titel ASC';
}
else
{
$abfrage = 'SELECT ID, Titel'
. ' FROM rpgsammlung_1'
. ' WHERE Titel LIKE '. mysql_real_escape_string( $letter ).'%'
. ' ORDER BY Titel ASC';
}
$result = mysql_query( $abfrage );
while($row = mysql_fetch_object( $result ))
{
echo "<tr><td><div align='center'> <font face='Verdana, Arial, Helvetica, sans-serif' size='2'><a href='anzeige.php?ID=".$row->ID."'>".$row->Titel."</a></font></div></td></tr>";
}
?>
|
wenn du jetzt alle titel die mit ner zahl anfangen ausgeben möchtest, den llink einfach so machen:
<a href="systeme.php?letter=0">#</a>
EDIT: vergessen es als php-code zu markieren
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Jegres« (4. September 2006, 13:22)
man möge mir verzeihen, regex und mysql habe ich schon seit n paar jahren nicht mehr kombiniert, deswegen habe ich vergessen das es sowas überhaupt gibt
aber du hast recht würde das ganze ein wenig vereinfachen, dann würde der mysql code halt so laufen, wenn ich mich nicht täusche:
aber du hast recht würde das ganze ein wenig vereinfachen, dann würde der mysql code halt so laufen, wenn ich mich nicht täusche:|
|
Quellcode |
1 2 3 |
SELECT ID, Titel FROM rpgsammlung_1' REGEXP '^[[:alnum:]]+'; |
mmmh... und was mache ich mit Sonderzeichen?
Da will ich eher nicht alle einzeln angeben.
Und kann ich das Regexp eigentlich auch in ne Variable nehmen?
Also quasi:
Jan
Da will ich eher nicht alle einzeln angeben.
Und kann ich das Regexp eigentlich auch in ne Variable nehmen?
Also quasi:
|
|
PHP-Quelltext |
1 2 3 4 |
if ($letter < a)
{
$letter = "REGEXP '^[[:allnum:]]+'";
}
|
Jan
"Fehler sind immer zu Verzeihen, wenn man den Mut hat, diese auch zu zugeben." Lee Jun-Fan
kannst du auch, aber bei deinem code würde die das if um die ohren fliegen
auf anhieb fällt mir da nur sowas hier ein:
mit sonderzeichen würde ich sagen, machste am besten ein \W hin, ergo so hier:
weis jetzt nicht genau obs funzen wird, da ich nicht genau weis welches regex mysql verwendet oder ob alles gleich ist ... normalerweise matcht das bei allen non-Word chars, musst dann glaub ich vorher auf zahlen überprüfen ergo so (da jetzt zu faul für php code, der vlt. eh net funzt, mal pseudocode)
auf anhieb fällt mir da nur sowas hier ein:|
|
PHP-Quelltext |
1 2 3 4 |
if( is_string( $letter ) && !is_numeric( $letter ))
{
// moh
}
|
mit sonderzeichen würde ich sagen, machste am besten ein \W hin, ergo so hier:
|
|
Quellcode |
1 |
REGEX '^\W+' |
weis jetzt nicht genau obs funzen wird, da ich nicht genau weis welches regex mysql verwendet oder ob alles gleich ist ... normalerweise matcht das bei allen non-Word chars, musst dann glaub ich vorher auf zahlen überprüfen ergo so (da jetzt zu faul für php code, der vlt. eh net funzt, mal pseudocode)
|
|
Quellcode |
1 2 3 4 5 6 7 8 |
if( $letter == string ) regex für buchstaben elseif( $letter == zahl ) regex für zahlen elseif( $letter == sonderzeichen ) regex für sonderzeichen else moh |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Jegres« (4. September 2006, 23:37)
so... ich habe nun zwischen Nummern und Buchstaben per IF unterschieden und einfach 2 Abfragen.
Sonderzeichen werde ich einfach vermeiden.
Eines meiner Probleme war das ich folgenden Link hatte:
<a href="systeme.php?letter=#">#</a>
Wobei er das # nicht erkannte. Ich habe es nun gegen ne 1 ausgetauscht und es geht ohne Probleme.
Jan
Sonderzeichen werde ich einfach vermeiden.
Eines meiner Probleme war das ich folgenden Link hatte:
<a href="systeme.php?letter=#">#</a>
Wobei er das # nicht erkannte. Ich habe es nun gegen ne 1 ausgetauscht und es geht ohne Probleme.
Jan
"Fehler sind immer zu Verzeihen, wenn man den Mut hat, diese auch zu zugeben." Lee Jun-Fan
das # steht bei html für ein anker
wenn kein entsprechender anker gesetzt ist, dann wird zum seitenanfang gescrollt. für numerische einträge kannst aber auch ruhig ne 0 verwenden, würde auch gehen. und bei sonderzeichen, hmm ... machst zB ne 1 und suchst nach sonderzeichen ... oder machst ne einfache negativliste, ergo die weder alphanumerisch, noch numerisch sind müssen dann sinnvollerweise sonderzeichen sein.
wenn kein entsprechender anker gesetzt ist, dann wird zum seitenanfang gescrollt. für numerische einträge kannst aber auch ruhig ne 0 verwenden, würde auch gehen. und bei sonderzeichen, hmm ... machst zB ne 1 und suchst nach sonderzeichen ... oder machst ne einfache negativliste, ergo die weder alphanumerisch, noch numerisch sind müssen dann sinnvollerweise sonderzeichen sein. 

