PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suchen in mehreren Spalten und Ordnen der Ausgabe


DanielSNRW
18.01.2007, 15:11:33
Hallo,

ich habe mal wieder ein Problem:)...bzw. zwei.

Ich möchte gerne eine Inventar-Liste zusammenstellen (also Inventar-Nummer, Art, Modell, Seriennummer, Garantie und der derzeitiger User. Für diesen wurde eine andere Tabelle angelegt)

Ich habe mit den Formularen zur Eingabe der Daten (für Artikel und User) angefangen und beides funktioniert auch wunderbar.

Nun zu meinem eigentlichen Problem Nr.1 , die Suche. Es soll ein Eingabefeld geben, in dem der Suchbegriff eingegeben wird. Da ich diesen Suchbegriff aber mit allen Spalteninhalten vergleichen will, habe ich folgendes probiert:


$db_search = "SELECT * FROM artikel WHERE inventurnr LIKE '" . $suchbegriff ."'
OR
SELECT * FROM artikel WHERE art LIKE '" . $suchbegriff ."'
OR
SELECT * FROM artikel WHERE modell LIKE '" . $suchbegriff ."'
OR
SELECT * FROM artikel WHERE serial LIKE '" . $suchbegriff ."'
OR
SELECT * FROM artikel WHERE garantie LIKE '" . $suchbegriff ."'";

Als Fehler bekomme ich:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM artikel WHERE art LIKE '101001,' OR SELECT * FROM ar' at line 3

Aber genau da finde ich keinen Fehler. Ich habe es mit nur einer Spalte versucht, da klappte es wunderbar.

Was mache ich da falsch?

Problem Nummer 2:


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



echo "Folgende Inventurgüter wurden gefunden:<br>\n";
while($row = mysql_fetch_assoc($result))
{
echo "Inventargut Nr." . $row['ID'];

foreach($row as $key => $value)
{
if($key == "user")
{
echo $key . "<input name=\"suche_inventur\" type='text' size='6' value='" . $value ."' readonly><br>";

}
else
{
echo $key . " = ' . $value '<br>";
}
}
echo "<br \>";


}


Ich bekomme auch eine Ausgabe (sofern ich oben die Suche nur auf eine Suchspalte begrenzt habe). Wie kann ich diese formatieren?

Vielen Dank im Vorraus,

Grüße,
Daniel

DanielSNRW
18.01.2007, 15:37:59
Der erste Teil hat sich soeben erledigt:D

BenniG.
18.01.2007, 16:14:22
Wie kann ich diese formatieren?
Mit HTML-Code halt.. Was hast du da konkret für ein Problem?

DanielSNRW
18.01.2007, 16:22:50
Es sieht aus, wie im Anhang. Wie kann ich das innerhalb der Schleife umstricken? Die Daten sollten horizontal verlaufen...

Grüße,
Daniel

BenniG.
18.01.2007, 17:27:38
Die Daten sollten horizontal verlaufen...
Dann nimm das <br> in der foreach($row as $key => $value) - Schleife raus..
Innerhalb der while($row = mysql_fetch_assoc($result)) - Schleife kannst du ja das <br> einbauen, um die Datenbankzeilen voneinander zu trennen.

DanielSNRW
18.01.2007, 18:46:30
Moin,

danke für den Tipp. Nun möchte ich noch beim Feld "User" kein Eingabefeld, sondern ein Drop-Down-Menü, hatte mir da folgendes überlegt, funktioniert aber nicht richtig:


while($row = mysql_fetch_assoc($result))
{
echo "Inventargut Nr." . $row['ID'];

foreach($row as $key => $value)
{
if($key == "user")
{
$query_user="SELECT ID, name FROM user";
$result_user = mysql_query($query_user) or die("Fehler:".mysql_error());
while ($rows_user = mysql_fetch_array($result_user,MYSQL_ASSOC))
echo $key . "echo '<option name='ID' value='".$rows_user["ID"]."'>".$rows_user['name']."</option>'";

}
else
{
echo $key . " = ' . $value '<br>";
}
}
echo "<br \>";


}

Was ist da falsch? Es kommt zwar eine Ausgabe, aber kein Drop-Down-Menü...

DanielSNRW
19.01.2007, 10:18:32
Keiner eine Idee?

BenniG.
19.01.2007, 10:24:43
Es fehlt der <select> - Tag
Das hier find ich eh etwas blöd:
foreach($row as $key => $value)

Sprich die Spalten die du Brauchst lieber explizit an:
$row['name'], $row['user'], etc..

Ich würde außerdem die Benutzer in ein Array lesen, damit du sie nicht bei jedem Datensatz neu auslesen musst.