• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Problem bei der Suchabfrage

Michael_S

Newbie
Hallo zusammen,

dies ist mein erste Frage hier - ich hoffe mir kann geholfen werden :)

Ich habe eine Suchabfrage geschrieben - diese sucht in meiner Datenbank bestimmte Datensätze.

Quelltext:
Code:
if ($aktion == "suchen")
{
    echo"<html>".
        "<head>".
        "<title>Datenbank-Anzeiger </title>".
        "</head>".
        "<body>";
    $conn =  mysql_connect($dbserver,$dbuser,$dbpass);
     mysql_select_db($dbname,$conn);
    $anfang = ($seite-1)*$beitraege+1;
    $ende = $anfang+$beitraege-1;
    $query = "SELECT * FROM gb WHERE artikelnummer1=$suchbegriff OR id=$suchbegriff OR kundennummer=$suchbegriff ORDER BY id DESC";

    $result = mysql_query($query, $conn);
    $gesamt = mysql_num_rows($result);

    if ($gesamt == 0)
        {
            echo "Keine Beiträge vorhanden !";
        }
    $counter = 1;
    if ($ende > $gesamt) { $ende = $gesamt; }

//
Dies funktioniert auch für id (= Zahlen) und kundennummer ( = Zahlen) ohne Probleme. Nur für artikelnummer1 ( = Zahlen und Komma) funktioniert die Abfrage nicht.

Was kann ich machen?

Vielen Dank für Eure Hilfe.

Michael
 

roemi

Advanced Hacker
hi,

hast du dir die variablen mal per echo anzeigen lassen?
gehe ich aber von aus.

setzt mal die artikelnummer so ein

"SELECT * FROM gb WHERE '" & artikelnummer1 & "'=$suchbegriff OR id=$suchbegriff OR kundennummer=$suchbegriff ORDER BY id DESC"

so sollte sie in ' gefasst werden (also ' und " 17,25 " und ')
 
OP
M

Michael_S

Newbie
Hallo,

leider besteht artikelnummer1 aus Zahlen und Punkten.

Ein Beispiel:

artikelnummer1 = 12.0001.345
oder
artikelnummer1 = F2.0001.222

Bei Komma funktioniert es :)

Vielen Dank für die Hilfe.

Michael
 

roemi

Advanced Hacker
hi,

versteh ich jetzt nicht
Nur für artikelnummer1 ( = Zahlen und Komma) funktioniert die Abfrage nicht.

das funzt, jetzt (nach meinem vorschlag)???

aber die artikelnummer besteht in wirklichkeit auf zahlen, punkten und buchstaben?
dann ist sie alphanumerisch und es muss genauso funzen.
 
OP
M

Michael_S

Newbie
Hallo,

leider hat sich noch kein Erfolg eingestellt.

Ich habe Deine Änderungen vorgenommen.

Die Abfrage funktioniert immer dann, wenn nur Zahlen vorhanden sind.

Beispiel:

id = 147
id = 4711
artikelnummer1 = 12345

Die Abfrage funkioniert nicht bei:

artilenummer1 = 12.3456.123
artikelnummer1 = F1.1234.567

Was kann ich noch tun?

Liebe Grüsse

Michael
 

roemi

Advanced Hacker
ich habe doch blödsinn erzählt

"SELECT * FROM gb WHERE artikelnummer1= '" & $suchbegriff & "' OR id=$suchbegriff OR kundennummer=$suchbegriff ORDER BY id DESC"

so muss es gehen
 
OP
M

Michael_S

Newbie
Hallo,

leider funktioniert das auch nicht.

Zum Vergleich, die Schreibweise:


' " & $ suchbegriff & " '

also zuerst ' und dann Anführungszeichen "

Vielen Dank für Deine Hilfe.

LG

MIchael
 

roemi

Advanced Hacker
genau.

echo sollte das ergeben ".... artikelnummer = 'F32.117.911' ...."

ich habe nun leider erst morgen die möglichkeit das ganze zu checken.
aber so sollte es funzen ' " & $suchbegriff & " ' ,

zum test kannst du aber mal ein suchkriterium "hard" angeben.
also:

"SELECT * FROM gb WHERE artikelnummer1= 'F32.117.911'"
und
"SELECT * FROM gb WHERE artikelnummer1= F32.117.911"

1. siehst du dann was funzt
2. stellst du fest ob der wurm nicht wo anderst ist

wenn eines von beiden funktioniert ersetzt du F32... dur die $...
 
Oben