Php/Mysql Suchformular

tomhu

Grünschnabel
hallo leute ich komm einfach nicht weiter :rolleyes:
ich versuche eine einfache suchabfrage mittels post einer mysql db zu erstellen

ohne searchstring bekomm ich die tabelle angezeigt , nur möchte ich mittels suchfunktion nur die gesuchten artikelnr und bestände die sich in der tabelle Lagerbestand befinden und nur aus zahlen bestehen angezeigt bekommen ..
anbei mein formular
Code:
<html>
<body>
Anzeige der artikel:
<form action = "search.php" method = "post">
    <input name = "search">Artikelnummer<p>
    
    <input type = "submit">
    <input type = "reset">
</form>
</body>
</html>
Code:
<?php 
$db = mysql_connect(localhost, user, pw)
or die ("Keine Verbindung moeglich"); 
mysql_select_db ("datenbank", $db)
or die ("Die Datenbank existiert nicht"); 
$searchstring = $_POST['search'];
$sql = mysql_query('SELECT * from Lagerbestand WHERE Artikelnummer LIKE '%$searchstring%' ');
$menge = mysql_num_rows($sql);
echo "$menge Datensaetze gefunden<br/>";
while ($row = mysql_fetch_row($sql)) {
echo "$row[0] $row[1] <br />";
}
?>

plz help :confused:

ups hatte die fehlemeldung noch vergessen
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /srv/www/vhosts/..............php on line 8
Datensaetze gefunden

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /srv/www/vhosts/..........php on line 10
 
Zuletzt bearbeitet:
Vermutlich schlug die Datenbankabfrage fehl. Lass dir mal die MySQL-Fehlermeldung (mysql_error()-Funktion) ausgeben.
 
PHP:
mysql_query('SELECT * from Lagerbestand WHERE Artikelnummer LIKE '%$searchstring%' ');
Die einfachen Anführungszeichen sind falsch gesetzt, probier es mal so:

PHP:
mysql_query("SELECT * from Lagerbestand WHERE Artikelnummer LIKE '%$searchstring%'");
 
supi ;-) kleiner fehler grosse wirkung :D:D
top vielen dank für die schnelle hilfe.....
hab den wald vor lauter bäumen nicht mehr gesehen :)
 
so erste hürde bezwungen nun der nächste kleine fehler :confused:

ich muss aus 2 unterschiedlichen tabellen informationen auslesen die einzigen identischen rows in den tabellen sind die artikelnummern ..
nur befindet sich der matchcode der für die suchabfrage wichtig ist in tabelle artikel und die bestands führung in tabelle lagerbestand .. wie bekomm ich es nun hin das die suchabfrage beide tabellen durchsucht und anhand der artikelnummer die ja in beiden gleich ist mir durch eingabe des matchcodes den bestand ausspuckt...

folgenden code hab ich bis jetzt in dem aber leider noch irgendein fehler steckt
Code:
$searchstring = $_POST['search'];
$sql = mysql_query("SELECT DISTINCTROW Artikel.Matchcode, 
Artikel.Bezeichnung, 
Lagerbestand.Bestand, 
ArtikelErweiterung.Eigenschaft3, 
Artikel.DELETE, 
Lagerbestand.Bestellt
FROM Artikel, ArtikelErweiterung, Lagerbestand 
WHERE Artikel.Artikelnummer LIKE '%$searchstring%'
OR Lagerbestand.Artikelnummer LIKE '%$searchstring%'
OR ArtikelErweiterung.Artikelnummer LIKE '%$searchstring%'");

$menge = mysql_num_rows($sql);
echo "$menge Datensaetze gefunden<br/>";
while ($row = mysql_fetch_row($sql)) {
echo "$row[0] $row[1] <br />";
}
?>
 
Sorry, alles mein Fehler... Er war auf dem richtigen Weg und ich hab ihn abgebracht davon...


SQL:
SELECT DISTINCTROW Artikel.Matchcode, 
Artikel.Bezeichnung, 
Lagerbestand.Bestand, 
ArtikelErweiterung.Eigenschaft3, 
Artikel.delete, 
Lagerbestand.Bestellt
FROM Artikel 
LEFT JOIN ArtikelErweiterung ON Artikel.Artikelnummer = ArtikelErweiterung.Artikelnummer 
LEFT JOIN Lagerbestand ON Artikel.Artikelnummer = Lagerbestand.Artikelnummer 
WHERE Artikelnummer LIKE '%$searchstring%'");

Versuch es einmal so.
 
so ähnlich hab ich mir das theoretisch vorgestellt nur die praxis wirft leider einen fehler aus

Code:
$searchstring = $_POST['search'];
$sql = mysql_query("SELECT DISTINCTROW Artikel.Matchcode, Artikel.Bezeichnung, Lagerbestand.Bestand from Artikel LEFT JOIN Lagerbestand ON Artikel.Artikelnummer = Lagerbestand.Artikelnummer WHERE Artikelnummer LIKE '%$searchstring%'"); 
$menge = mysql_num_rows($sql);
echo "$menge Datensaetze gefunden<br/>";
while ($row = mysql_fetch_row($sql)) {
echo "$row[0] $row[1] <br />";
}
?>

fehler: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /srv/www/vhosts/form.php on line 8
Datensaetze gefunden

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /srv/www/vhosts/form.php on line 10
bestimmt hab ich wieder irgendwas übersehen ^^
 
Es könnte daran liegen, dass Delete ein SQL Keyword ist und somit expliziert als Tabelle angegeben werden muss:

SQL:
SELECT DISTINCT `Artikel`.`Matchcode`, 
`Artikel`.`Bezeichnung`, 
`Lagerbestand`.`Bestand`, 
`ArtikelErweiterung`.`Eigenschaft3`, 
`Artikel`.`delete`, 
`Lagerbestand`.`Bestellt`
FROM `Artikel` 
LEFT JOIN `ArtikelErweiterung` ON `Artikel`.`Artikelnummer` = `ArtikelErweiterung`.`Artikelnummer` 
LEFT JOIN `Lagerbestand` ON `Artikel`.`Artikelnummer` = `Lagerbestand`.`Artikelnummer` 
WHERE `Artikelnummer` LIKE '%$searchstring%'");

Wird denn delete auch sicher klein geschrieben? Ich frage nur, weil du bei allen anderen den ersten Buchstaben großgeschrieben hast.

Und ich habe DISTINCTROW in DISTINCT geändert, da DISTINCTROW ja nur ein Synonym ist.
 
Zuletzt bearbeitet:
jo delete ist klein geschrieben , hab vorsichtshalber alles bis aufs wesentliche reduziert .. aber trotzdem t es nicht :confused:
evtl ist meine denk weise auch ganz falsch ?
ich verzweifel :suspekt:

Code:
$searchstring = $_POST['search'];
$sql = mysql_query("SELECT DISTINCT `Artikel`.`Matchcode`, 
`Artikel`.`Bezeichnung`, 
`Lagerbestand`.`Bestand`,` 
FROM `Artikel` 
LEFT JOIN `Lagerbestand` ON `Artikel`.`Artikelnummer` = `Lagerbestand`.`Artikelnummer` 
WHERE `Artikelnummer` LIKE '%$searchstring%'");  
$menge = mysql_num_rows($sql);
echo "$menge Datensaetze gefunden<br/>";
while ($row = mysql_fetch_row($sql)) {
echo "$row[0] $row[1]<br/>";
}
 
Zurück