1Danke
ERLEDIGT
JA
JA
ANTWORTEN
13
13
ZUGRIFFE
424
424
EMPFEHLEN
-
10.01.12 15:30 #1
- Registriert seit
- Jan 2012
- Beiträge
- 7
Hallo,
habe folgendes Problem in meinem Script, welches ich für ein Forum erstellt habe:
Es sollen zu dem jeweiligen Thema die Kommentare aus der Tabelle 'thread_comments' abgerufen werden und für jedes Kommentar der jeweilige Inhalt der Spalte 'createdby' (der Benutzer der den Kommentar erstellt hat)in der Variable '$akt_user_result' gespeichert werden. Dies klappt auch soweit, jedoch kann ich '${$result_userinfo_comment_string.$x}' nicht in einem Array auslesen:
(zur Info: der befehl 'echo $akt_user_result;' klappt, jedoch 'echo $bla['Nachname'];' nicht...)PHP-Code:$usercomment = "SELECT * FROM thread_comments WHERE topic = '$akt_thread';";
$result_usercomment_2 = mysql_query($usercomment);
$x=0;
while ($werte = mysql_fetch_array($result_usercomment_2))
{
$akt_user_result = $werte['createdby'];
$result_userinfo_comment_string = "result_userinfo_comment";
$userinfo_comment_string = "userinfo_comment";
${$userinfo_comment_string.$x}="SELECT Nachname, Vorname, Beitraege, dabeiseit FROM benutzerdaten WHERE Nickname = '$akt_user_result' ;";
${$result_userinfo_comment_string.$x}=mysql_query((${$userinfo_comment_string.$x}));
$test = mysql_fetch_array((${$result_userinfo_comment_string.$x}));
while ($bla=mysql_fetch_array((${$result_userinfo_comment_string.$x})))
echo $bla['Nachname'];
echo $akt_user_result;
$x++;
}
ich glaube, es liegt an der Verschachtelung der Variablen, gebe ich aber ein 'echo $test; ' kommt das Ergebnis 'Array'.Geändert von xplOoosive (10.01.12 um 15:38 Uhr) Grund: deklarierung von $x fehlte
-
item: Ich sehe nirgens das $x gesetzt wird
item: $test kannst du mit var_dump() anschauen
item: Verscuhe dein Code zu vereinfachen. Die variablen zusammengesetzten Variablennamen verwirren extrem. Wenn du unbedingt das SQL-Result von jedem durchgang der Schleife behalten musst, würd ich es mit einem array machen.
PHP-Code:$result_userinfo_comment[$x] = mysql_query($sql_userinfo_comment[$x]);
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
10.01.12 18:34 #4
- Registriert seit
- Jan 2012
- Beiträge
- 7
Danke schonmal!!
Es gibt jedoch noch ein Problem, und zwar bei der Ausgabe der Daten:
in der Tabelle sollen links die Infos über den jeweiligen User angezeigt werden und rechts der jewelige Kommentar. Es erscheint jedoch kein Kommentar.. Kann es sein, dass es daran liegt, dass mysql_fetch_array($result_usercomment_2) mehrere Strings enthält und mysql_fetch_array($result_userinfo_comment[$x]) nur einen ? Der Befehl echo "blaaa" wird auch nicht ausgeführt, was daraufhin deutet, dass die Bedingung der while-schleife wohl nicht erfüllt ist.PHP-Code:<?php
$x=0;
while ($werte = mysql_fetch_array($result_usercomment_2))
{
$akt_user_result = $werte['createdby'];
$userinfo_comment[$x] = "SELECT Nachname, Vorname, Beitraege, dabeiseit FROM benutzerdaten WHERE Nickname = '$akt_user_result';";
$result_userinfo_comment[$x] = mysql_query($userinfo_comment[$x]);
$test = mysql_fetch_array($result_userinfo_comment[$x]);
$blaa=var_dump($test);
echo $blaa;
$x++;
//...
$akt_thread = $_GET["thread"];
$usercomment = "SELECT * FROM thread_comments WHERE topic = '$akt_thread';";
$result_usercomment_2 = mysql_query($usercomment);
$x=0;
while (($comment_info = mysql_fetch_array($result_userinfo_comment[$x])) AND ($comment = mysql_fetch_array($result_usercomment_2)))
{
echo "blaaa";
?>
<tr><td><h2 id="intro"><u>Infos</u></h2>
<?php print "Name: ".$comment_info['Vorname']." ".$comment_info['Nachname']; ?><br />
<?php print "Bisherige Beiträge: ".$comment_info['Beitraege']; ?><br />
<?php print "Dabei seit: ".$comment_info['dabeiseit']; ?></td><td id="intro">
<?php //print $comment['comment']; ?></p></td></tr>
<?php
$x++;
}
}
der befehl var_dump($test) lieferte bei mir das folgende ergebnis:
seltsam finde ich hier jedenfalls, dass in jedem index der string zweimal vorhanden ist...PHP-Code:array(8) {
[0]=>
string(3) "abc"
["Nachname"]=>
string(3) "abc"
[1]=>
string(3) "abc"
["Vorname"]=>
string(3) "abc"
[2]=>
string(2) "24"
["Beitraege"]=>
string(2) "24"
[3]=>
string(22) "03.01.2012 - 15:17 Uhr"
["dabeiseit"]=>
string(22) "03.01.2012 - 15:17 Uhr"
}
array(8) {
[0]=>
string(3) "abc"
["Nachname"]=>
string(3) "abc"
[1]=>
string(3) "abc"
["Vorname"]=>
string(3) "abc"
[2]=>
string(2) "24"
["Beitraege"]=>
string(2) "24"
[3]=>
string(22) "03.01.2012 - 15:17 Uhr"
["dabeiseit"]=>
string(22) "03.01.2012 - 15:17 Uhr"
}
array(8) {
[0]=>
string(3) "abc"
["Nachname"]=>
string(3) "abc"
[1]=>
string(3) "abc"
["Vorname"]=>
string(3) "abc"
[2]=>
string(2) "24"
["Beitraege"]=>
string(2) "24"
[3]=>
string(22) "03.01.2012 - 15:17 Uhr"
["dabeiseit"]=>
string(22) "03.01.2012 - 15:17 Uhr"
}
Geändert von xplOoosive (10.01.12 um 18:44 Uhr)
-
Das jedes 2 mal vorhanden ist, leigt an der Funktion mysql_fetch_array()
Ansonsten mit mysql_fetch_assoc() (Zugriff über Keys) oder mysql_fetch_row() (Zugriff über Index) arbeitenmysql_fetch_array — Liefert einen Datensatz als assoziatives Array, als numerisches Array oder beides
Die Bedinung (echo "BlaBla"): Du arbeitest dort mit =. Ergi weist du Werte zu. Zum vergleichen solltest du == verwenden. Zudem mischst du dort irgendwei ein while() mit einem if() oder osnstwas. Was soll die folgende Zeile genau bewirken? Warum weisst du dem $comment die Resourse von letzten SQL-Aufruf zu?
PHP-Code:while (($comment_info = mysql_fetch_array($result_userinfo_comment[$x])) AND ($comment = $result_usercomment_2)){
..
}
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
10.01.12 18:51 #6
- Registriert seit
- Jan 2012
- Beiträge
- 7
Gut, ich denke ich werde es mal mit mysql_fetch_row() probieren.
Ich habe die while-schleife jedoch erstmal falsch kopiert, habe sie nochmal neu eingegeben:
Was mir jedoch neu ist, ist dass ich == verwenden muss. Ich habe bis jetzt immer nur ein = benutzt z.B. bei anderen Abfragen von Arrays, wo es auch geklappt hat.PHP-Code:while (($comment_info = mysql_fetch_array($result_userinfo_comment[$x])) AND ($comment = mysql_fetch_array($result_usercomment_2)))
-
Zum Zuweisen ist = schon richtig. Ich dachte zuerst du willst Vergleichen.
Das mit den 2 Zuweisungen im while() ist aber nicht wirklich Sinnvoll oder?---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
10.01.12 21:09 #8
- Registriert seit
- Jan 2012
- Beiträge
- 7
Ich habe die while schleife nun mal getrennt:
Klappen tut es aber immer noch nicht. echo $result_userinfo_comment[$e] gibt resource id#10 zurück, stimmt also. Die while-schleifen werden jedoch nicht aufgerufen.PHP-Code:<?php $e=0;
echo $result_userinfo_comment[$e];
while ($comment_info = mysql_fetch_array($result_userinfo_comment[$e]))
{
?>
<tr><td><h2 id="intro"><u>Infos</u></h2>
<?php print "Name: ".$comment_info['Vorname']." ".$comment_info['Nachname']; ?><br />
<?php print "Bisherige Beiträge: ".$comment_info['Beitraege']; ?><br />
<?php print "Dabei seit: ".$comment_info['dabeiseit']; ?></td><td id="intro">
<?php $e++;
}
while ($comment = mysql_fetch_array($result_usercomment_2))
{
print $comment['comment']; ?></p></td></tr>
<?php
}
-
Also. Da hast du ein rechtes Chaos im Code.
Du hast im ersten SQL wahrscheinlich genau ein Eintrag der rauskommt. Due greifst dann mit mysql_fetch_array() die Zeile ab. Somit ist der Zeiger in der Ersten Resource am Ende. Nachher willst du nochmals zgrieffen. Aber der Zeiger ist bereits am Ende und somit kommt bei $comment_info = mysql_fetch_array($result_userinfo_comment[$e] false zurück.
Ich versuch hier das ganze mal ein wenig zu vereinfachen. Dazu muss ich verstehen was du machen willst.
1) Du suchst die Userinformationen für einen bestimmten User aus
2) Du suchst alle Kommentare zu einem Thread
3) Hier kommen die Fragezeichen. Du gibst alle Kommentare aus mit den Userinformationen des zuvor ausgewählten Users. Also nicht mit dem User der die Kommentare geschrieben hat.
Bitte erklär mal den Punkt 3) genau, was da abgehen soll.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
11.01.12 16:50 #10
- Registriert seit
- Jan 2012
- Beiträge
- 7
Im Punkt 3 sollen eigentlich die Infos über die User, die die Kommentare geschrieben haben mit dem jeweiligen Kommentar zusammen ausgegeben werden. Gibt es denn nicht noch eine andere Möglichkeit, die Daten auszulesen ohne die schleife while ($.. = mysql_fetch_array/assoc/row($...)) ?
Denn das Problem hierbei ist ja der Arraycounter, sagst du.Geändert von xplOoosive (11.01.12 um 17:03 Uhr)
-
Vergiss mal das technische. Das kommt von Alleine wenn man weiss was man will. Da scheint immer noch das Problem zu sein.
Bei 3). Da hast ja nur ein User ausgelesen. Also nix mit mehreren Usern.
Oder willst du alle Kommentare und da die Userinfos der dazugehörigen Usern auslesen? Also Thread 123 hat 3 Kommentare. Bei jedem Kommentar ist die user_id (oder Nick-Name?) mitgespeichert. Nun willst ud die 3 Kommentare mit dem jeweiligen User ausgeben.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
11.01.12 17:09 #12
- Registriert seit
- Jan 2012
- Beiträge
- 7
ich glaube ich habe die Lösung gefunden:
reset ($array) - Setzt den internen Zeiger eines Arrays auf sein erstes Element
-
Überleg dir trotzdem was du willst. Glaub mir, mit deinem Code läufst du so oder so in Probleme rein. Deine Schleife mit den 2 mysql_fetch_ drin geht nur einmal durch...
Es ist dir überlassen, ob du klaren Code haben willst oder das klapprige Gestell welches du im Moment hast.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
18.01.12 15:23 #14
- Registriert seit
- Jan 2012
- Beiträge
- 7
Habe es jetzt doch geschafft, indem ich die Ergebnisse der jeweligen mysql-Abfragen in mehreren variablen gespeichert habe, damit der arraycounter nicht auf null ist. Außerdem habe ich auch die einzelnen kommentare in einem array gespeichert... also vielen dank ! (:
Ähnliche Themen
-
C# (XNA!) - Array kann nicht ausgelesen werden
Von Willywaffel im Forum .NET CaféAntworten: 4Letzter Beitrag: 28.02.10, 18:25 -
Es werden nicht alle Daten aus DB ausgelesen
Von newwarrior im Forum PHPAntworten: 4Letzter Beitrag: 11.07.05, 18:24 -
PHP und SQL: Datensätze werden nicht richtig ausgelesen!
Von imagine im Forum PHPAntworten: 1Letzter Beitrag: 12.01.05, 22:37 -
Sessionvariablen werden nicht ausgelesen!
Von DrBrain_1000 im Forum PHPAntworten: 4Letzter Beitrag: 28.10.02, 22:51 -
umbrüche werden nicht ausgelesen...
Von DJiTRONIC im Forum PHPAntworten: 1Letzter Beitrag: 14.06.02, 14:37





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren