-
[PHP] query di stampa
sul db ho una tabella che si chiama t_chat_N, dove N è un numero che si genera automaticamente ogni volta che si apre una chat. Alla chiusura della chat, la tabella t_chat_N viene cancellata con il suo contenuto.
Stò stampando il contenuto della chat, che per test contiene 2 righe.
Codice PHP:
$row=mysql_query("SELECT * FROM t_chat_$id ORDER BY id_frase DESC");
while($stamp=mysql_fetch_array($row)) {
$row=mysql_query("SELECT * FROM t_utenti WHERE id_utente='$stamp[id_utente]'");
$nome=mysql_fetch_array($row);
$razza=$nome[razza].substr("$nome[sesso]",0,1);
echo" <div class=\"riga\">";
echo" <div class=\"data\">$stamp[data]</div>";
echo" <div class=\"nome\"><img src=\"icorazza/$razza\" width=\"10\" height=\"10\" align=\"absmiddle\"> $nome[username]</div>";
echo" <div class=\"simbolo\"><img src=\"ico/$stamp[simbolo].gif\" width=\"20\" height=\"20\"></div>";
echo" <div class=\"frase\">$stamp[frase]</div>";
echo" </div>";
}
ne stampa soltanto 1
sarà che lo script è mio, e non riesco a capire l'errore, ma non riesco a risolvere. mi potete aiutare?
-
Prova con questa sintassi più corretta:
Codice PHP:
$row=mysql_query("SELECT * FROM t_chat_$id ORDER BY id_frase DESC");
while($stamp=mysql_fetch_array($row)) {
$row=mysql_query("SELECT * FROM t_utenti WHERE id_utente='".$stamp['id_utente']."'");
$nome=mysql_fetch_array($row);
$razza=$nome['razza'].substr($nome['sesso'],0,1);
echo" <div class=\"riga\">";
echo" <div class=\"data\">".$stamp['data']."</div>";
echo" <div class=\"nome\"><img src=\"icorazza/$razza\" width=\"10\" height=\"10\" align=\"absmiddle\"> ".$nome['username']."</div>";
echo" <div class=\"simbolo\"><img src=\"ico/".$stamp['simbolo'].".gif\" width=\"20\" height=\"20\"></div>";
echo" <div class=\"frase\">".$stamp['frase']."</div>";
echo" </div>";
}
Se ancora non dovesse funzionare, stampa semplicemente tutte le righe nella tabella:
Codice PHP:
$row=mysql_query("SELECT * FROM t_chat_$id ORDER BY id_frase DESC");
while($stamp=mysql_fetch_array($row)) {
print_r($stamp);
}
Ciao!
-
prova a postare le tabelle del db e come le crei ed elimini.
-
Citazione:
Originalmente inviato da
debug
Codice PHP:
$row=mysql_query("SELECT * FROM t_chat_$id ORDER BY id_frase DESC");
while($stamp=mysql_fetch_array($row)) {
print_r($stamp);
}
questa va in stampa, la tua correzione stampa soltanto la prima riga,
ti copio quello che manda in stampa tagliando parte del testo della frase.
Array (
[0] => 2 [id_frase] => 2
[1] => 1 [id_utente] => 1
[2] => 10101 [simbolo] => 10101
[3] => 23.50 [data] => 23.50
[4] => prova di una frase tanto per vedere la connessione e la stampa. [frase] => prova di una frase tanto per vedere la connessione e la stampa. )
Array (
[0] => 1 [id_frase] => 1
[1] => 1 [id_utente] => 1
[2] => 10001 [simbolo] => 10001
[3] => 23.40 [data] => 23.40
[4] => prova di una frase tanto per vedere la connessione e la stampa.[frase] => prova di una frase tanto per vedere la connessione e la stampa. )
come posso risolvere??
Crezione della tabella dove $luogo[id_luogo] viene preso da una interrogazione query, diamo quindi per assodato che ora quella variabile sia pari ad 1
Codice PHP:
$row=" CREATE TABLE `t_chat_$luogo[id_luogo]` (
`id_frase` INT( 10 ) NOT NULL AUTO_INCREMENT,
`id_utente` VARCHAR( 10 ) NOT NULL ,
`simbolo` VARCHAR( 10 ) NOT NULL ,
`data` VARCHAR( 16 ) NOT NULL ,
`frase` VARCHAR( 500 ) NOT NULL ,
PRIMARY KEY ( `id_frase` )
) ENGINE = MYISAM ";
$tabella=mysql_query($row);
la tabella si crea correttamente.
script di stampa delle righe
Codice PHP:
$row=mysql_query("SELECT * FROM t_chat_".$luogo['id_luogo']." ORDER BY id_frase DESC");
while($stamp=mysql_fetch_array($row)) {
$row=mysql_query("SELECT * FROM t_utenti WHERE id_utente='".$stamp['id_utente']."'");
$nome=mysql_fetch_array($row);
$razza=$nome['razza'].substr($nome['sesso'],0,1);
echo" <div class=\"riga\">";
echo" <div class=\"minuti\">".$stamp['data']."</div>";
echo" <div class=\"nome\"><img src=\"icorazza/$razza\" width=\"10\" height=\"10\" align=\"absmiddle\"> ".$nome['username']."</div>";
echo" <div class=\"simbolo\"><img src=\"ico/".$stamp['simbolo'].".gif\" width=\"20\" height=\"20\"></div>";
echo" <div class=\"frase\">".$stamp['frase']."</div>";
echo" </div>";
}
-
Allora deve andare a buon fine anche il ciclo originale.
Eseguilo e guarda il sorgente HTML generato.
Ciao!
-
ti allego il codice andato in stampa
Codice HTML:
<LINK REL=STYLESHEET TYPE="text/css" HREF="./template/stylein.css">
<div id="pagina">
<div id="chatread" style=" color: #000000;">
<div class="riga"> <div class="minuti">23.50</div> <div class="nome"><img src="icorazza/umanom" width="10" height="10" align="absmiddle"> araim</div> <div class="simbolo"><img src="ico/10101.gif" width="20" height="20"></div> <div class="frase">prova di una frase tanto per vedere la connessione e la stampa. prova di una frase tanto per vedere la connessione e la stampa. prova di una frase tanto per vedere la connessione e la stampa. prova di una frase tanto per vedere la connessione e la stampa. prova di una frase tanto per vedere la connessione e la stampa. prova di una frase tanto per vedere la connessione e la stampa. prova di una frase tanto per vedere la connessione e la stampa. prova di una frase tanto per vedere la connessione e</div> </div>
</div>
<div id="chatwrite"></div>
</div>
ti allego il link alla chat in questione,
che per ora è vuota dato che testo in locale
fra un minuto aggiungo 2 3 righe dentro il db.
http://araim.altervista.org/chat.php?id=1
la tabella è già creata.
Ho fatto la prova del nove: ho aggiunto un contatore che
esegue la stessa stringa di codice, e quello pare funzionare.
difatti se guardate indica 2, che sono le frasi inserite nel db.
Ho capito quale script da fastidio alla query di stampa:
Codice PHP:
$row=mysql_query("SELECT * FROM t_utenti WHERE id_utente='".$stamp['id_utente']."'");
$nome=mysql_fetch_array($row);
come l'ho inserito nel while dello script contatore questo ha indicato come numero solo 1.
il problema risulta essere il $row uguale alla while ... questo va rinominato in $row_
-
state entrambi sovrascrivendo $row all'interno del ciclo, occhio
-
si infatti ho notato, e risolto, però la cosa strana è che in altri while non mi ha mai dato problemi di alcun genere. ora la stampa della chat funziona, grazie a tutti per la pazienza e l'aiuto ^^