MySQL PHP prob. ein atensatz fehlt immer

bogys

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

also ich habe folgenes problem ... ich such nach artikeln in meiner db ..
wenn ich mnein sqltag in phpmyadmin eintipp bekomm ich 3 datensätze ausgegeben ..
such ich aber auf meiner seite fehlt der erste datensatz .. wo is der hin ? warum wird mir der nicht angezeigt ?

wenn cih aber nach etwas suche wo es nur ein datensatz als ausgabe gibt .. wird der auch ohne probs angezeigt ... hmm

also am sql liegts net .. muss iwas bei mir im php code nich stimmen ...

nur was ?

Code:
<html>
<head>
<title></title>
<meta name="author" content="Administrator">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<center>
<?php

echo "<form name='form' method='post' action='description.php'>";

echo "Bitte geben sie ein Artikelnamen ein.";

         echo "<br>";
	if(isset($_POST['suche']))
         echo "<td><input type='Text' name='suche' value='" . $_POST['suche'] . "' size='' maxlength=''></td>";
	else
	echo "<td><input type='Text' name='suche'></td>";
         echo "<br>";
         if(isset($_POST['suche1']))
         echo "<td><input type='Text' name='suche1' value='" . $_POST['suche1'] . "' size='' maxlength=''></td>";
	else
	echo "<td><input type='Text' name='suche1'></td>";
         echo "<br>";

echo "<input type='hidden' name='gesendet' value='1'>";
echo "<input type='Submit' name='go' value='Go-->'>";
echo "</form>";
echo "Bitte geben sie pro Feld nur <u>ein(e)</u> Wort/Zahl ein.";
echo "<br>";
echo "<a href='main.php'>Zurück</a>";




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


include("connect.inc.php");
$sql = "SELECT `components`.`IDManufacturer` , `components`.`Description` , `data sheets`.`Data Sheet Name` , `components`.`Component_code` FROM `components`,`data sheets` WHERE `components`.`Description` like '%" .mysql_real_escape_string($suche) ."%' AND `components`.`Data Sheet Id`=`data sheets`.`Data Sheet Id`";
$B=mysql_query($sql);
$ausgabe= mysql_fetch_assoc($B);
mysql_close($connect);
echo $sql;


if ($ausgabe!=""){

echo "<table border='1'>";
echo "<tr>";
echo "<td>"."<b>"."Component Code"."</b>"."</td>";
echo "<td>"."<b>"."Description"."</b>"."</td>";
echo "<td>"."<b>"."IDManufacturer"."</b>"."</td>";
echo "<td>"."<b>"."Data Sheet Name"."</b>"."</td>";
echo "</tr>";

while($ausgabe= mysql_fetch_assoc($B))
{
if ($suche1 !=""){
if (eregi($suche1, $ausgabe['Description']))
{
include ("zeile.inc.php");
}
}else{
include ("zeile.inc.php");
}
}

echo "</table>";
echo "<br>";

}else{
if (isset($_POST['gesendet']))
    echo ("Es existiert kein Artikel mit dem Namen $suche.");
}

}else{
if (isset($_POST['gesendet']))
    echo ("Sie muessen auch einen Artikelnamen eingeben.");
}

echo "<br>";
echo "<br>";

php?>
</center>
</body>
</html>
 
Ich wage mich einfach mal zu täuschen aber heiste es nicht mysql_fetch_query($B); statt mysql_fetch_assoc($B);

Greetz
Highweb
 
Hi,

versuch doch mal, ob mit diesem code
Code:
include("connect.inc.php");
$sql = "SELECT `components`.`IDManufacturer` , `components`.`Description` , `data sheets`.`Data Sheet Name` , `components`.`Component_code` FROM `components`,`data sheets` WHERE `components`.`Description` like '%" .mysql_real_escape_string($suche) ."%' AND `components`.`Data Sheet Id`=`data sheets`.`Data Sheet Id`";
$B=mysql_query($sql);

while ($row = mysql_fetch_assoc($result)) {
    print_r($row);
}

mysql_close($connect);

drei Datensätze zurückkommen. Ich vermute, bei Dir liegt es an der Art wie die Ergebnisse abgerufen werden, nicht am SQL selber.

Gruß,
Scooby
 
wenn ich das so mach wie du sagst kommt folgender fehler

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\localhost\description.php on line 50

.. da es ja in phpmyadmin geht ... kanns ja eigentlich nur noch am php code liegen .. =/ hmm
 
Hi,

sorry, da war der Copy-und-Paste Teufel am Werk .. :evillol:

Statt
Code:
($row = mysql_fetch_assoc($result)) {
müsste es wohl
Code:
($row = mysql_fetch_assoc($B)) {
heissen.

Und ja, es liegt wohl am PHP Code, nicht am SQL.

Gruß,
Scooby
 
Natürlich liegt es am PHP-Code.

Bevor du den ersten Datensatz ausgibst, überschreibst du $Ausgabe schon mit dem zweiten Datensatz.

Du könntest das Problem mit einer fussgesteuerten Schleife lösen:
Code:
do {
  if ($suche1 !="") {
    if (eregi($suche1, $ausgabe['Description']))
    {
      include ("zeile.inc.php");
    }
  }
  else {
    include ("zeile.inc.php");
  }
} while ($ausgabe= mysql_fetch_assoc($B))
Dass ganze als Ausgabe-Schleife statt der while-do-Schleife nach Ausgabe des Tabellen-Headers.
 
ja vielen dank mit der fußgesteuerten hats denn geklappt =)
 
Oder du machst die erste $ausgabe ganz weg und schleifst es wie gehabt durch die while dann gehts auch, war aber wirklich logisch ^^

Funzt das überhaupt wenn du oben schon mysql_close machst und unten abrufst? Hat der das schon gebuffert? Hab da nie drauf geachtet *g* Wenn ja einfach die Zeile darüber wo du $ausgabe setzt weg und es sollte richtig funktionieren.
 
Zurück
Oben