Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenbankabfrage klappt nicht!
xZeLeRaToR
15.02.2002, 22:57
Huhu,
und wieder hab ich mal ein neues Problem, diesmal möcht och ne Datenbankabfrage machen, die erst eine Spalte auswählt, und alle Zeilen darstellt, die den Ihalt dieser Spalte hat, dann den nächsten Inhalt.
Aber ich bleib immer bei der letzten Meldung unten hängen.
$verbindung = mysql_connect("$xNews_Adresse_Datenbank","$xNews_Username_Datenbank","$xNews_Passwort_Datenbank") or die ("Keine Verbindung");
mysql_select_db($xNews_Name_Datenbank) or die ("Kann keine Verbindug zur Datenbank herstellen");
$bereich_auswahl = "SELECT DISTINCT Bereich FROM xlinks ORDER BY Bereich ASC";
$bereich_abfrage = mysql_query($bereich_auswahl) or die ("Abfrage der Datenbank fehlgeschlagen 1");
echo "<table width=\"$xNews_Breite_Tabelle\" border=\"$xNews_Rahmendicke\">\n";
for ($i=0; $i<mysql_num_rows($bereich_abfrage); $i++)
{
while ($Bereich = mysql_fetch_row($bereich_abfrage))
{
$links_auswahl = "SELECT Link, Text FROM xlinks WHERE Bereich = $Bereich[0]";
$links_abfrage = mysql_query($links_auswahl) or die ("Abfrage der Datenbank fehlgeschlagen 2");
habt ihr ne ahnung was ich wieder vergeigt hab?
cu
x
xZeLeRaToR
15.02.2002, 23:07
an der Stelle wo $Bereich[0] steht sollte eigebtlich $Bereich[$i] stehen.
cu
x
haut´s dir irgendwo ne fehlermeldung raus, oder kommt einfach ein NULL zurück ??
hast du dein query schon mal so auf der mysql command line eingegeben oder wenigstens versucht per mysql_num_rows(); abzufragen ob überhaupt was rauskommt ????
und btw .. bei dem mysql_connect brauchst du keine "" um die variablen namen .. lösch die gleich ma weg :D
okay:
for ($i=0; $i<mysql_num_rows($bereich_abfrage); $i++)
kann ned gehn, weil du mysql_num_rows so nicht aufrufen darfst... du musst einer variablie den wert zuweisen und die dann hernehmen
also:
$rows=mysql_num_rows($bereich_abfrage);
for ($i=0; $i<$rows; $i++)
dann:
while ($Bereich = mysql_fetch_row($bereich_abfrage))
{
$links_auswahl = "SELECT Link, Text FROM xlinks WHERE Bereich = $Bereich[0]";
kann gar ned gehn, weil :
du machst ein fetch_row und versucht $Bereich[$i] aufzurufen... $Bereich->$i wäre glaube ich sinnvoller, oder ein fetch_array
xZeLeRaToR
15.02.2002, 23:25
die meldung ist die "die" Meldung, also "Abfrage der Datenbank fehlgeschlagen 2"! ich denke das hat was mit dem where zu tun!
cu
x
xZeLeRaToR
15.02.2002, 23:28
Da bin ich wieder!
Ich hab grad mal komplett die 2. for und while schleife rausgeschnitten, und nun werden die Bereiche angezeigt! Also muss das in den link_xxx Varibalen stecken!
cu
x
xZeLeRaToR
15.02.2002, 23:29
ach ich glaub jetzt wisstihr nicht mehr was ich meine mom!
$verbindung = mysql_connect($xNews_Adresse_Datenbank,$xNews_Username_Datenbank,$xNews_Passwort_Datenbank) or die ("Keine Verbindung");
mysql_select_db($xNews_Name_Datenbank) or die ("Kann keine Verbindug zur Datenbank herstellen");
$bereich_auswahl = "SELECT DISTINCT Bereich FROM xlinks ORDER BY Bereich ASC";
$bereich_abfrage = mysql_query($bereich_auswahl) or die ("Abfrage der Datenbank fehlgeschlagen 1");
echo "<table width=\"$xNews_Breite_Tabelle\" border=\"$xNews_Rahmendicke\">\n";
for ($i=0; $i<mysql_num_rows($bereich_abfrage); $i++)
{
while ($Bereich = mysql_fetch_row($bereich_abfrage))
{
#$links_auswahl = "SELECT Link, Text FROM xlinks WHERE Bereich = $Bereich[0]";
#$links_abfrage = mysql_query($links_auswahl) or die ("Abfrage der Datenbank fehlgeschlagen 2");
#for ($j=0; $i<mysql_num_rows($links_abfrage); $j++)
#{
#while ($links = mysql_fetch_row($links_abfrage))
#{
echo " <tr>\n";
echo " <th colspan=\"3\">\n";
echo " <div align=\"right\">$Bereich[$i]</div>\n";
echo " </th>\n";
echo " </tr>\n";
#echo " <tr>\n";
#echo " <td height=\"20\"><font color=\"#0066CC\">$links[0]</font></td>\n";
#echo " <td height=\"20\"><font color=\"#666666\">$links[1]</font></td>\n";
#echo " </tr>\n";
#}
#}
}
}
so!
ich hab mein posting oben upgedated anstatt unten dran zu posten .. lies ma kurz was ich oben getippt hab :D
und .. man könnte das ganze sicher besser lesen ohne 400 leerzeilen dazwischen :evil:
xZeLeRaToR
16.02.2002, 11:34
Das mit dem Array unten ist mir nicht klar,dass mpsste doch auch so gehen! Ich sach ihm er sol nur die Spalte Bereich auswählen, und die keine gleichen Inhalte anzeigen. Die ersten beiden Schleifen bezihen sich also nur für die Spalte Bereich. Und da die While Schleife nur einmal durchlaufen wird, läuft dir for weiter. Somot habe ich dann doch Bereich definiert.
Dann möcht ich in den nächsten beiden Schleifen nur jeweils die dazugehörigen für den Bereich darstellen (WHERE). Aber bei der Abfrage muss der Fehler sein, weil ja der "die" Teil davon aufgerufen wird.
cu
x
okay honey ...
schmeiss die scheiss "or die(blablabla)"´s raus, so das du die orig. fehlermeldungen bekommst... die sind meist aussagekräftiger...
dann haust du mal mindestens 50 echo´s rein ... und in der while schleife am besten ein vardump ...
und lässt dir immer alle variablen ausgeben ..
sowas nennt man debuggen ... und wenn du dann mal schaust, was dir dabei rausfliegt (ich weiss es sieht hässlich aus ...) kann dir dann helfen dein problem zu lösen ...
xZeLeRaToR
16.02.2002, 14:35
honey?
da ist es ja was mich bei php aufregt. es gibt keine Entwicklungsumgebung mit zeilenweisem durchlaufen des Programms und wo ich während des durchlaufs über die Variable gehen kann und deren inhalt seh. ählich visual basic! Oder kann das Zend Dev Studio das?
cu
x
xZeLeRaToR
16.02.2002, 15:16
Ok hier der Quellcode und die Ausgabe:
$verbindung = mysql_connect($xNews_Adresse_Datenbank,$xNews_Username_Datenbank,$xNews_Passwort_Datenbank);
mysql_select_db($xNews_Name_Datenbank);
$bereich_auswahl = "SELECT DISTINCT Bereich FROM xlinks ORDER BY Bereich ASC";
echo "\$bereich_auswahl = $bereich_auswahl<br><br>\n";
$bereich_abfrage = mysql_query($bereich_auswahl);
echo "\$bereich_abfrage = $bereich_abfrage<br><br>\n";
$bereich_rows = mysql_num_rows($bereich_abfrage);
echo "\$bereich_rows = $bereich_rows<br><br>\n";
#echo "<table width=\"$xNews_Breite_Tabelle\" border=\"$xNews_Rahmendicke\">\n";
for ($i=0; $i < $bereich_rows; $i++)
{
echo "\$i = $i<br><br>\n";
while ($Bereich = mysql_fetch_row($bereich_abfrage))
{
echo "\$Bereich[$i] = $Bereich[$i]<br><br>\n";
$links_auswahl = "SELECT Link, Text FROM xlinks WHERE Bereich = $Bereich[0]";
echo "\$links_auswahl = $links_auswahl<br><br>\n";
$links_abfrage = mysql_query($links_auswahl);
echo "\$links_abfrage = $links_abfrage<br><br>\n";
$links_rows = mysql_num_rows($links_abfrage);
echo "\$$links_rows = $links_rows<br><br>\n";
und die Ausgabe:
$bereich_auswahl = SELECT DISTINCT Bereich FROM xlinks ORDER BY Bereich ASC
$bereich_abfrage = Resource id #2
$bereich_rows = 1
$i = 0
$Bereich[0] = Foren
$links_auswahl = SELECT Link, Text FROM xlinks WHERE Bereich = Foren
$links_abfrage =
Warning: Supplied argument is not a valid MySQL result resource in /opt/root/home/xzeleratorauch-onlinede/public_html/content.php on line 120
Ich meine das der Fehler im 2. query ist, muss ich vielleicht das erste query von dem 2.trennen oder so ähnlich?
cu
x
mhhh der fehler müsste sein:
$links_auswahl = SELECT Link, Text FROM xlinks WHERE Bereich = Foren
richtig müsste es sein:
$links_auswahl = SELECT Link, Text FROM xlinks WHERE Bereich = ´Foren´
also mit ´´ drum rum ...
ma ne frage.. schon mal das query genommen und per mysql client auf die db connected und durchlaufen lassen ..
da siehste dann auch was geht, und was ned geht :-)
btw entwicklungsumgebung:
zend studio (http://www.zend.com) / phpedit (http://www.phpedit.com)
xZeLeRaToR
16.02.2002, 17:44
Oh juhu et funzt! es waren die " " Striche (bzw \"\")
Hab mir mal die Testversion vopm Zend Studio geladne um zu gucken wie geil das ist. PHPEdit hatte ich mal und das hat mir nicht so gefallen. Danke Bauchi
cu
x
xZeLeRaToR
16.02.2002, 17:45
Oh juhu et funzt! es waren die " " Striche (bzw \"\")
Hab mir mal die Testversion vopm Zend Studio geladne um zu gucken wie geil das ist. PHPEdit hatte ich mal und das hat mir nicht so gefallen. Danke Bauchi
cu
x
xZeLeRaToR
16.02.2002, 17:46
Oh juhu et funzt! es waren die " " Striche (bzw \"\")
Hab mir mal die Testversion vopm Zend Studio geladne um zu gucken wie geil das ist. PHPEdit hatte ich mal und das hat mir nicht so gefallen. Danke Bauchi
cu
x
Hehe .. wolltest du deine posting zahlen hochtreiben ?? *G*
btw.. ich mache alles mit ´ und nicht mit " wg. quotings etc..
aber das ist imho geschmackssache :-)
ach ja .... wg. hilfe .. np .. immer wieder gern :D
xZeLeRaToR
16.02.2002, 19:58
danke!
P.S. Das war jetzt ein Witz und kein Versuch meiene Posting zahlen hochzutreiben :D
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.