2016-07-22 8 views
0

Ich habe zwei while loops ist durch ein Chat-Protokoll zu Schleife Datum abzurufen, Benutzername, Nachricht und die anderen while loop ist Symbole aus einer separaten Tabelle abzurufen dies hat zwei Spalten chars und image (Bild -name. *) Ich kann alles aus der table chat anzeigen, aber kann nicht scheinen, meine zweite while loop, die die str_replace enthält, durch jede Zeile in der emo_constable, die Werte enthalten können, zu durchlaufen, es zeigt nur die letzte Zeile in der Tabelle, wenn ich hinzufügen eine neue chars Wert und image-name.* es zeigt mir zurück, dass die letzteAnzeigen mehrerer Reihen (WHILE) Symbole

// select all from table emo_cons that contain character values and image location 
$emocom = mysqli_query($con,"SELECT * FROM `emo_cons`"); 

// fetch rows from query 
while($emo_row= mysqli_fetch_assoc($emocom)) 
{ 
// assign chars row characters that represent the coresponding image 
$chars = $emo_row['chars']; 

// assign imagetag to row images that represent the coresponding characters 
$imagetag = "<img width='50' class=image height='50' src='chaticons/".$emo_row['image']."' />"; 

echo " "; 

echo "<br>"; 
} // end while emo_car check 




$chat_log = mysqli_query($con,"SELECT * FROM chat ORDER BY id DESC"); 

// fetch all rows that contain characters and image locations 
while($chat_row = $chat_log ->fetch_array()){ // i WANT THIS WHILE LOOP TO OUTPUT ALL ROWS THAT CONTAIN CHARS & IMAGES-LOCATIONS 

// name of user in chat log 
$username = $chat_row['username']; // this line is for usrer 
echo "<br>"; 

// timestamp 
echo $chat_row['date']; 

echo "<br>"; // line break 

//users profiler avatar image from chat_row while 
echo "<img width='50' class=image height='50' src='avatars/".$chat_row['imagelocation']."' alt='Profile Pic'>"; 
echo "  "; // space 


// THIS LINE ONLY OUTPUTS THE LAST ROW OF AN ICON IN THE TABLE 
// I would like my while to output all rows that contain str_replace chars TO imagetag from its table AND HAVE IT THEN PARSE TO THE MESSAGE [msg] 
echo $username. " Says ".$new_str = str_replace($chars,$imagetag,$chat_row['msg']); 

echo "<br>"; 


} // end while chat_log 



echo '</div>'; // end div 


?> 

Ich brauche Hilfe zu verstehen, was ich falsch mache Ich habe versucht, meine Schleifen zu bewegen, um zu sehen, ob ich sie falsch strukturiert hatte aber bisher kein Glück Ich möchte nur in der Lage sein, die Chat-Nachricht anzuzeigen und wenn die Nachricht enthält Zeichen, um das durch ein Symbol zu ersetzen und dies immer und NICHT nur für die letzte Zeile in meiner Tabelle tun.

Ich verstehe, dass ich möglicherweise keine Hilfe auf diesem, aber es ist erwähnenswert vielleicht jemand kann meine Fehler sehen. Danke im Voraus .

enter image description here enter image description here

UPDATE ARBEITS enter image description here

Antwort

0

Make folgende Änderungen in Ihrem emo_cons while-Schleife

<?php 
// select all from table emo_cons that contain character values and image location 
$emocom = mysqli_query($con,"SELECT * FROM `emo_cons`"); 

// fetch rows from query 
$chars = array(); 
$imagetag = array(); 

while($emo_row= mysqli_fetch_assoc($emocom)) 
{ 
    // assign chars row characters that represent the coresponding image 
    array_push($chars, $emo_row['chars']); 

    // assign imagetag to row images that represent the coresponding characters 
    array_push($chars, "<img width='50' class=image height='50' src='chaticons/".$emo_row['image']."' />"); 

    echo " "; 

    echo "<br>"; 
} // end while emo_car check 

?>

Lassen Sie mich wissen, ob es für Sie arbeitet.


Warum Ihr Code nicht

Sowohl die Variablen $chars und $imagetag waren innerhalb while Schleife und mit jeder Iteration Werte überschreiben arbeitete. Daher wurde der letzte Wert in beiden Variablen gespeichert.

Um dies zu beheben, habe ich 2 Arrays mit demselben Namen und alle erforderlichen Werte in die Arrays geschoben, die wir später in der str_replace Funktion verwendet.

+0

Vielen Dank 100% Großartig für Ihren Input und Ihr Wissen. Ich werde deine Antwort studieren, damit ich sie vollständig verstehe. Es funktioniert so wie es sollte mit Ihrer Hilfe.Ich habe ein Bild hinzugefügt, um Ihnen die Ergebnisse zu zeigen –

+0

Gern geschehen Bro! Kannst du bitte meine Antwort akzeptieren? –

+0

natürlich, Sie verdienen es –

Verwandte Themen