Két while ciklus egymásba ágyazva SQL lekérdezésekkel
Akadt egy kis gond a while ciklusal. Probaltam megoldani de nem sikerult, ezert a forumhoz fordulok!
A kovetkezo mySQL query kap adatokat amelyeket egy HTML tablaban akarok kilistazni.a kovetkezo kepen mukodik a dolog:A kodot fejbol gepeltem be ezert ha elfelejtettem egy pontos veszot akkor elnezest kerek, de gondolom a lenyeg benne van.
A gond az, hogy a $row['username'] adatokat mas tablabol kene kiszedjem.
Ezert letrehoztam meg egy mysql queryt:Probaltam a kovetkezo keppen elinditani a kodot:Szoval az a gond jelentkezik, hogy nem paszolnak ossze az adatok. Azt szeretnem elerni, hogy kilistaza az osszes sort a kovetkezo formaban:Azt hsizem jelenleg a $row2['username'] kilistaza az osszes adatot ami a tablaban van, es egyenkent kene. De nem vagyok biztos.
Tudna valaki segiteni?
Koszonom
■ A kovetkezo mySQL query kap adatokat amelyeket egy HTML tablaban akarok kilistazni.
$data = mysql_query("SELECT messages.id, messages.exped, messages.subiect, messages.send_date FROM messages LEFT JOIN pm ON (messages.id = pm.msg_id AND messages.uid = '".$_SESSION['uid']."') WHERE pm.folderid = '".$folderid."'");
while ($row = mysql_fetch_array($data)) {
print "<tr id=\"check_{$row['id']}\">
<td><input type=\"checkbox\" name=\"list[]\" value=\"{$row['id']}\" onClick=\"highlight(this,'check_{$row['id']}')\" /></td>
<td><a href=\"?do=showpm&message={$row['id']}\">{$row['username']}</a></td>
<td><a href=\"?do=showpm&message={$row['id']}\">{$row['subiect']}</a></td>
<td>{$row['send_date']}</td>
</tr>";
}
A gond az, hogy a $row['username'] adatokat mas tablabol kene kiszedjem.
Ezert letrehoztam meg egy mysql queryt:
$row_username = mysql_query("SELECT register.username FROM register LEFT JOIN messages ON register.user_id = messages.uid LEFT JOIN pm ON messages.id = pm.msg_id WHERE pm.folderid = '-1'");
while ($row = mysql_fetch_array($data)) {
print "<tr id=\"check_{$row['id']}\">
<td><input type=\"checkbox\" name=\"list[]\" value=\"{$row['id']}\" onClick=\"highlight(this,'check_{$row['id']}')\" /></td>
<td><a
while ($row2 = mysql_fetch_array($row_username)) {
print "<td><a href=\"?do=showpm&message={$row['id']}\">{$row2['username']}</a></td>";
}
print "<td><a href=\"?do=showpm&message={$row['id']}\">{$row['subiect']}</a></td>
<td>{$row['send_date']}</td>
</tr>";
}
$row['id'] | $row2['username'] | $row['subiect']
$row['id'] | $row2['username'] | $row['subiect']
$row['id'] | $row2['username'] | $row['subiect']
Tudna valaki segiteni?
Koszonom
session?
Ha a felhasználó felhasználóneve kell, akkor azt le tudod kérdezni, nem? Az első lekérdezés alapján csak azokat az üzeneteket kérdezed le, amik egy felhasználóhoz tartoznak, akkor:
$row_username = mysql_query("SELECT register.username FROM WHERE register.user_id = ".$_SESSION['uid']."");
vagy az elsőbe minden sorba beteheted hasonlót egy JOIN-nal, akkor nem kell két lekérés
Bl
mySQL
Meg kapom a usereket a kovetkezo formaba:
user1
user2
user3
Ezeket kene beszurjam a fenti kodba a $row['username'] helyebe. Sajnos nem hasznalhatom a $row['username']-t mert masik tablabol kapom meg az adatokat, ezert ezt csinaltam :
Most a kovetkezo HTML kodot kapom ami helytelen:
Azert hoztam fel a fenti peldat:
Szepen kene jojennek az adatok egymas utan.
Ha tudtok segiteni halas lennek, mert tegnap ota keresek valaszt, es lehet, hogy egy egyszeru dolog csak en nem tudok rajonni.
Kosz !
Hozaszolas
user1
akkor minden jol latszik, valoszinuleg azert, mert mas usereket nem tud a masodik while beszurni.
akkor while-ban változtass
Egyébként ez a lekérdezés:
$row_username = mysql_query("SELECT register.username FROM register LEFT JOIN messages ON register.user_id = messages.uid LEFT JOIN pm ON messages.id = pm.msg_id WHERE pm.folderid = '-1'");
azért nem jó, mert kéne egy olyan adat, amitől függjön, h. minden while lefutással (az első while) az adott sorhoz tartozó adatot kapjad
$row_username = mysql_query("SELECT register.username FROM register LEFT JOIN messages ON (register.user_id = messages.uid AND messages.ID=".$row['id'].") LEFT JOIN pm ON messages.id = pm.msg_id WHERE pm.folderid = '-1'");
Ekkor ezt minden while-on belül meg kell adnod, így mindig az aktuális rekordhoz kérdezi le.
már ha ezt akarod csinálni.:)
Bl
kosz
Igen, privat uzenetekre hasznalom.
Koszonom a segitseget ! Mukodik a dolog.
Ha a mysql query sokszor lefut nem lasitja az oldalt? Mondjuk en meg fogom szabni, hogy csak 20-30 uzenet legyen kilistazva az oldalon.