Visualizzazione dati formattati

andrex1191

Utente Attivo
5 Apr 2011
78
0
0
Estraggo i dati dalla tabella articolo (articolo di un blog):
PHP:
$estraiart = mysql_query("SELECT * FROM articolo", $conn) or die("errore query1");

//e visualizzo gli articoli estratti:

while($vett = mysql_fetch_assoc($estraiart))
{
$titolo_articolo = mysql_real_escape_string($vett['titolo_articolo']);
....
....

//a questo punto devo estrarre altre informazioni riguardanti ogni singolo articolo:
$scrittori = mysql_query("SELECT * FROM scrive WHERE titolo_articolo = '{$titolo_articolo}'", $conn) or die("errore query3");
//e visualizzarle in questo modo: Scrittore1 , scrittore2 e scrittore3
//Ogni articolo ha 3 scrittori e per ogni articolo devo visualizzarli con quella formattazione

//io ho scritto:
while($array = mysql_fetch_assoc($scrittori))
              {
               $scrittore = $array['nome_scrittore'];
               echo $scrittore." ,";
              }

}
Cosi' facendo mi escono fuori tutti gli articoli che ho nel db e per ogni articolo i rispettivi 3 scrittori ma con questa formattazione nome1 , nome2 , nome3 ,
mentre io voglio: nome1 , nome2 e nome3

Forse dovrei usare un for, ci ho provato ma senza risultati, come devo fare?
Grazie
 
Se ci sono sempre solo 3 scrittori da visualizzare, puoi ottenere quell'effetto modificando il secondo while in questo modo:
PHP:
$cont = 0;
while($array = mysql_fetch_assoc($scrittori)){
       if($cont == 0){
            echo $array['nome_scrittore'].', ';
       	    $cont++;
       }elseif($cont == 1){
            echo $array['nome_scrittore'].' e ';
       	    $cont++;
       }else{
            echo $array['nome_scrittore'];
       	    $cont++;
       }
}
 
Perchè non ci ho pensato io ??
Grazie mille.

Ora un problema analogo con un altro dato:

La formattazione che voglio ottenere varia a seconda del numero dei dati estratti, che può essere minimo 1 e massimo 3
quindi può esserci solo "nome1"
oppure "nome1 e nome2"
oppure "nome1, nome2 e nome3"
A seconda di quanti sono....

credo che bisogni lavorare con questo for
PHP:
for($i=0; $i < mysql_num_rows($query); $i++)
ma ancora non sono riuscito a capire cosa ci va all'interno :dipser:

Grazie mille
 
Prova a fare in questo modo:
PHP:
$numerorighe = mysql_num_rows($query);
$cont = 1;
while($array = mysql_fetch_assoc($scrittori)){ 
	if($cont == $numerorighe){
		echo $array['nome_scrittore'];
	}elseif($cont == $numerorighe-1){
		echo $array['nome_scrittore'].' e ';
	}else{
		echo $array['nome_scrittore'].', ';
	}
	$cont++;
}
 
Lasciatelo dire, sei un genio :)
davvero non so come ringraziarti, funziona alla perfezione.

Magari per altri può sembrare una cavolata, ma per me non era così semplice

Grazie ancora :)
 
ciao
non ti serve il for, prova così
PHP:
<?php
$quanti=mysql_num_rows($scrittori);
switch($quanti){
	case 1:
		$e[0]="";$e[1]="";$e[2]="";
	break;
	case 2:
		$e[0]=" e ";$e[1]="";$e[2]="";
	break;
	default://se al massimo 3 scrittori
		$e[0]=", ";$e[1]=" e ";$e[2]="";
	break;
}
$cont=0;
while($array = mysql_fetch_assoc($scrittori)){ 
	echo $array['nome_scrittore'].$e[$cont]; 
	$cont=++;
} 
?>
al massimo non funzia
 

Discussioni simili