MySQL abfrage Problem

Webmage

Grünschnabel
Ich habe folgendes Script:
PHP:
  <form action="produkt.php" method="post">
  <center>
  <input type="text" size="25" name="Inhalt">
  <input type="submit" value="Suchen">  
  </center>
  </form> 

<?php
 include("db_connect.php");
       $sql = "SELECT * FROM item WHERE name like '%$_POST%' ORDER BY name DESC";
    $result = mysql_query($sql) OR die(mysql_error());
    while ($row = mysql_fetch_assoc($result)) {
        echo $row["name"]; 
    }
?>

Vielleicht kann mir dabei jemand unter die Arme greifen.
Das ganze soll ne Abfrage auf eine Datenbank werden, die eine Inventurliste führt, das Element "Echo $row" soll noch mit weiteren Punkten aufgestockt werden, wie Anzahl usw. Am ende soll man eine Suchmaske bekommen, in welcher man das Produkt eintipt, dieses in $_Post übergeben wird, und mit der Variable, dann die Abfrage gestartet wird.
Ich habe das gefühl das die Variable $_Post nicht vernuenftig im Select eingelesen wird, habe auch schon die verschiedenen Versionen hier aus einem anderen Beitrag ausprobiert, aber leider ohne Erfolg.
Ich vermute das es etwas mit der einbindung der Variablen in den Select-Befehl zu tun hat. Wenn ich in der Select-Abfrage '"%$_POST%"' verwende bekomme ich vom Browser folgende Meldung: Query was empty

schon mal dake im vorraus fuer kommende hilfe.
 
Also nun bin ich ein wenig enttaeuscht, ich hatte gehofft, das mit bei einem, wie mir scheint einfachen Problem, im Vergleich mit anderne Problemen hier im Forum, jemand helfen koennte. Denoch scheint niemad dazu in der Lage zu sein, oder aber es ist nicht anspruchsvoll genug. So werde ich mich dann anderswo umschauen, ob jemand mir beim Start ins PHP helfen kann

MFG
 
Webmage, nicht unterkriegen lassen, die sind eigentlich alle sehr hilfreich hier, manchmal übersieht man Dinge aber auch.

Also ein kleiner Tip, schreibe mal echo $sql; rein, dann siehst Du was drinn steht.
Dein $_POST sieht auch ein wenig seltsam aus, also eigentlich müsste das doch $_POST['Inhalt'] heissen, wobei man natürlich POST Variablen niemal direkt in SQL schreiben sollte sondern erst validieren (SQL Injection Gefahr)

Also erstmal echo $sql;

und dann schau weiter. Hoffe es klappt und ich habe Dich nicht falsch verstanden.

Gruss Bicko
 
Danke für die Hinweise, das mit dem Echo hatte ich shcon mal ausprobiert, habe das Script erstmal so abgeaendert:
PHP:
<form action="produkt.php" method="post">
  <center>
  <input type="text" size="25" name="Inhalt">
  <input type="submit" value="Suchen">  
  </center>
  </form>

<?php
	include("db_connect.php");
	
    echo "<pre>\n";
    print_r($_POST);
    echo "</pre>\n";
   
$sql = "SELECT * FROM item WHERE name LIKE '%$_POST%' ORDER BY name ASC";

	echo "<pre>\n";
    print_r($sql);
    echo "</pre>\n";

$result = mysql_query($sql) OR die(mysql_error());

	echo "<pre>\n";
    print_r($result);
    echo "</pre>\n";
    
	while ($row = mysql_fetch_array($result)) {
	
	echo "<pre>\n";
    print_r($row);
    echo "</pre>\n";
    
		echo $row["name"]."<br />\n"; 
	}

?>

Danach erfolgt bei aufruf der Seite, ohne Argument im Form diese Ausgabe im Browser:
Array
(
)

SELECT * FROM item WHERE name LIKE '%Array%' ORDER BY name ASC

Resource id #2

Bei Eingabe des Wertes Schockolade kommt folgende ausgabe
Array
(
[Inhalt] => Schockolade
)

SELECT * FROM item WHERE name LIKE '%Array%' ORDER BY name ASC

Resource id #2
Vielleicht hilft das weiter, ich bin echt am Verzweifeln, hänge an dieser Sache nunmehr seit 2 Wochen und komme nicht vorran.
Und einer der Beiträge hat bei mir eine weitere Frage aufgeworfen, wie Vallidiere ich die $_POST Variable?
 
Zuletzt bearbeitet:
Hallo,

Also nun bin ich ein wenig enttaeuscht, ich hatte gehofft, das mit bei einem, wie mir scheint einfachen Problem, im Vergleich mit anderne Problemen hier im Forum, jemand helfen koennte. Denoch scheint niemad dazu in der Lage zu sein, oder aber es ist nicht anspruchsvoll genug. So werde ich mich dann anderswo umschauen, ob jemand mir beim Start ins PHP helfen kann
Vielleicht hätte es geholfen, das Thema im richtigen Forum zu platzieren... verschoben in das PHP-Forum.

Grüße,
Matthias
 
Sorry,

bin davon ausgegangen, das da ich eine DB Abfrage vormuliere, es in das forum fuer die relationale Datanbanken gehoert.
 
Sag mir bitte mal warum Du mit dem $_POST arbeitest und nicht einfach $_POST['Inhalt']
Ich würde so etwas immer erstmal in eine Varaible speichern (mit validieren)

Valdieren, da solltest Du mal folgende Befehle anschauen:

Strip_tags
trim

das ist wohl erstmal das Wichtigste, andere mögen dieses erweitern.

Also:

$Inhalt=strip_tags(trim($_POST['Inhalt']));

und dann verwendest Du $Inhalt in der SQL Anweisung. Versuche es mal damit und lass wissen wie es geht.

Gruss Bicko
 
Normalerweise hat man ein Edit-Feld wo der User sein Suchbegriff eingibt das hat einen bestimmten name z.B. suche

Code:
<input name="suche" type="text" size="50" maxlength="80">
PHP:
if (isset($_POST['suche']))
{
  $suche = trim(strip_tags(mysql_real_escape_string($_POST['suche'])));
  $sql = "SELECT name FROM item WHERE name LIKE '%$suche%' ORDER BY name";
  
}

mfg
 
Wenn die Magic Quotes an sind sollten diese vor der Uebergabe an mysql_real_escape_string() entfernt werden.
PHP:
$suche=$_POST['suche'];
if (get_magic_quotes_gpc())
	{
		$suche=stripslashes($suche);
	}
$suche = trim(strip_tags(mysql_real_escape_string($suche))); 
$sql = "SELECT name FROM item WHERE name LIKE '%".$suche."%' ORDER BY name";
 
Zurück