[PHP] Probleme mit MySQL abfrage

bogys

Cadet 3rd Year
Registriert
Feb. 2007
Beiträge
50
hi

ich hab da ma nen kleines problem..
für euch bestimmt ganz simple für mich abe rne riesen hürde =/

also ich hab eine DB die funzt soweit .. jetzt soll ich ne benutzeroberfläche mit PHP basteln wo man artikelname eintippt und die denn auf de rnächsten seite ausgegeben bekommt.. also z.b. tipp ich ein "LED" und dann werden alle artikel wo LED vorkommt aufgelistet.

so hab jetzt schon ne abfrage und alles gebastelt nur bekomm ich immer den feheler ausgegeben "Resource id #3"

was muss cih ändern?

hier mein code

<html>
<head>
<title></title>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<form name="form" method="post" action="index.php">
name <input type="Text" name="suche" value="" size="" maxlength="">
<input type="hidden" name="gesendet" value="1" size="" maxlength="">
<input type="Submit" name="go" value="Go --->">

</form>
<?php

if ($_POST['suche']!=""){

$connect = mysql_connect("server","benutzer","pw");
mysql_select_db("semidata");
$sql= " SELECT `Manufacturers Part Number` , `Description` , `CD Number` FROM `components` WHERE Description='" .$suche ."'";
$B=mysql_query($sql);
$ausgabe= mysql_fetch_array($B);
mysql_close($connect);

echo $B;

}else{
if (isset($_POST['gesendet']))
echo ("Sie muessen auch nach was suchen.");
}



php?>

</body>
</html>
 
AW: Probleme mit MySQL abfrage

$B ist immernoch das MySQL-Ergebnis.
Wenn du schon was auslesen willst, nimm doch $ausgabe. Hierbei handelt es sich, wie es der Name der Funktion schon vermuten lässt um ein Array, also muss du es über eine Schleife auslesen.

gruß
bassti
 
AW: Probleme mit MySQL abfrage

echo $ausgabe["Manufacturers Part Number"];
echo $ausgabe["Description"];
echo $ausgabe["CD Number"];

Edit: Formatierung etc fehlt, soll nur zeigen, wie du an die Werte kommst...
 
AW: Probleme mit MySQL abfrage

Das Ganze muss aber dann noch in ne Schleife wenn Du alle ausgeben willst.

foreach($ausgabe as $datensatz)
{
echo $datensatz["Manufacturers Part Number"];
echo $datensatz["Description"];
echo $datensatz["CD Number"];
}
 
AW: Probleme mit MySQL abfrage

Allerdings solltest du dir das SQL Statement nochmal anschauen. So wie du es hast bekommst du nur Datensätze zurück deren Beschreibung genau 'LED' ist uns sonst nichts anderes.
Wenn du also einen Datensatz zurückbekommen willst der eine Beschreibung wie z.B. "Das LED ist sehr hell" hat, müstest du auf folgende Abfrage zurückgreifen:

PHP:
$sql= " SELECT `Manufacturers Part Number` , `Description` , `CD Number` FROM `components` WHERE Description like '%" .$suche ."%'";

Also den Operator LIKE anstelle von = verwenden und das Platzhalterzeichen '%' nicht vergessen. ;)

Ansonsten die Ausgabe der gefunden Werte so wie meine Vorredner schon gesagt haben.
 
AW: Probleme mit MySQL abfrage

hab das ma so übernommen und bekomm jetzt

Warning: Invalid argument supplied for foreach() in C:\localhost\index.php on line 26

25:
26: foreach($ausgabe as $datensatz)
27: {
28: echo $datensatz["Manufacturers Part Number"];
29: echo $datensatz["Description"];
30: echo $datensatz["CD Number"];
31: }
32:
 
AW: Probleme mit MySQL abfrage

Bist du dir sicher, dass die Abfrage treffer geliefert hat?
Mach vielleicht noch
if ($ausgabe != null) {
foreach (...)...
} else {
echo "Keine Treffer";
}

ginge bestimmt auch schöner
 
Zuletzt bearbeitet:
AW: Probleme mit MySQL abfrage

so hab den SQL befehl abgeändert und die foreach übernommenn von 1668mib von 12:15

folgende ausgabe

a: 0 / b: DMH23441R04
a: Manufacturers Part Number / b: DMH23441R04
a: 1 / b: LED DISPLAY BEZEL
a: Description / b: LED DISPLAY BEZEL
a: 2 / b: 0
a: CD Number / b: 0
 
AW: Probleme mit MySQL abfrage

mit der neuen sql anweisung und diesem foreach

25:
26: foreach($ausgabe as $datensatz)
27: {
28: echo $datensatz["Manufacturers Part Number"];
29: echo $datensatz["Description"];
30: echo $datensatz["CD Number"];
31: }
32:


kommt diese ausgabe:

DDDDDDLLLLLL000000
 
AW: Probleme mit MySQL abfrage

Das foreach das ich da hatte war nur ein Test, bis mir auffiel, dass die Abfrage ja vielleicht nichts liefert...

das foreach sah der vollständigkeit halber so aus:
Code:
foreach ($ausgabe as $a=>$b)
{
  echo "a: $a / b: $b<br>";
}

Edit:
Mein "Debug-Code" zeigt dass die Anfrage ohne LIKE definitiv nur einen Datensatz lieferte, der erste Code war sogar überraschenderweise dann - mehr oder weniger - sogar korrekt...
 
Zuletzt bearbeitet:
AW: Probleme mit MySQL abfrage

ok um ma wieder auf ein stand zu kommen ^^
Code:
<html>
<head>
<title></title>
<meta name="author" content="Administrator">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<form name="form" method="post" action="index.php">
name <input type="Text" name="suche" value="" size="" maxlength="">
<input type="hidden" name="gesendet" value="1" size="" maxlength="">
<input type="Submit" name="go" value="Go --->">

</form>
<?php

if ($_POST['suche']!=""){

$connect = mysql_connect("xxx","xxx","xxx");
mysql_select_db("semidata");
$sql= "  SELECT `Manufacturers Part Number` , `Description` , `CD Number` FROM `components` WHERE Description like '%" .$suche ."%'";
$B=mysql_query($sql);
$ausgabe= mysql_fetch_array($B);
mysql_close($connect);

foreach($ausgabe as $a=>$b)
{
echo "a: $a / b: $b<br>";
}

}else{
if (isset($_POST['gesendet']))
 echo ("Sie muessen auch nach was suchen.");
}



php?>

</body>
</html>
 
AW: Probleme mit MySQL abfrage

der sql befehk funzt und hat auch ne ausgabe hab gerad bei phpmyadmin mal den code eingegeben ..

Code:
Zeige Datensätze 0 - 29 (2.202 insgesamt, die Abfrage dauerte 0.0015 sek)

SQL-Befehl: 

SELECT `Manufacturers Part Number` , `Description` , `CD Number`
FROM `components`
WHERE Description LIKE '%led%'
LIMIT 0 , 30
 
AW: Probleme mit MySQL abfrage

Das mit foreach($ausgabe as $a=>$b) ist nur zum _testen_

Und ich lag sogar in meinem ersten Post richtig:
http://de.php.net/manual/de/function.mysql-fetch-array.php schrieb:
mysql_fetch_array — Liefert einen Datensatz als assoziatives Array, als numerisches Array oder beides

Du brauchst keine "foreach ($ausgabe as ..)"-Schleife, sondern wenn dann eher eine Schleife, die alle Datenbankergebnisse holt...
Auf die Werte in Ausgabe kommst du, wie oben schon geschrieben, so:
echo $ausgabe["Manufacturers Part Number"];
echo $ausgabe["Description"];
echo $ausgabe["CD Number"];
 
AW: Probleme mit MySQL abfrage

ah cool ja funzt.. is nur noch das mit allen datensätzen wie realisier ich das denn jetzt noch??

sry bin nich so der hellste wenns um php geht


aber schonmal VIELEN DANK für eure hilfe =)
 
AW: Probleme mit MySQL abfrage

mir is gerad noch nen kleiner fehler aufgefallen =/ egal was ich in die suche eintipp er gibt mir immer nur den datensatz von der LED aus
 
AW: Probleme mit MySQL abfrage

damit alle Zeilen ausgegeben werden würde sich folgende Konstruktion eignen:

PHP:
while($ausgabe= mysql_fetch_array($B)) 
{
     //Block wird für jeden Datensatz ausgeführt
     echo $ausgabe["Manufacturers Part Number"];
     echo $ausgabe["Description"];
     echo $ausgabe["CD Number"]; 
}

Dieses Konstrukt gibt dir alle Datensätze nacheinander aus

Wegen dem anderen Problem keine Ahnung, hast du vieleicht irgendwo für Testzwecke die Variable $suche fest auf "LED" gesetzt?
 
AW: Probleme mit MySQL abfrage

das hatte ich am anfang ma gemacht hab aber alles durchgeguckt und hab eigentlich alles wieder geändert .. werd gleich nochmal schaun ... haba uch schon nach LED gesucht im Qtext aber nix gefunden
=/
 
AW: Probleme mit MySQL abfrage

so jetzt gibt er mir die komplette tabelle aus wenn ich in die suche LED eintipp... das heiß es muss iwo nen fehler bei dem suchwort ein oder ?? also bei der variablen des sfeldes oder so ?
 
Zurück
Oben