[risolto] Ciclo di un array con azioni diverse

Furion

Utente Attivo
26 Ago 2013
32
0
0
Salve a tutti, intanto chiedo scusa per il titolo ma non sapevo come scriverlo in maniera efficace.
Venendo al dunque, io ho la necessità di fare un'azione diversa a seconda del valore di alcune variabili, mi spiego meglio:

- Ho 10 varabili salvate su db che rappresentano id unici,
- Di queste variabili mi basta sapere se il valore è uguale o maggiore di zero,
- Se il valore di queste variabili è uguale a zero devo mostrare una determinata immagine (una X rossa),
- Se il valore è invece maggiore di zero devo mostrare un'altra immagine (un TICK verde seguito dal valore della variabile),

presumo si tratti di un ciclo ma non riesco proprio a venirne fuori :confused: , idee?

Grazie anticipatamente :byebye:
 

Furion

Utente Attivo
26 Ago 2013
32
0
0
I campi si chiamano id_membro e sono 10 quindi id_membro1, id_membro2, id_membro3 etc, stavo cercando anche un modo per estrarrli dal db in maniera semplice senza scriverli tutti e 10 ma non mi è venuto nulla in mente appunto. In pratica devo estrarre tutti e 10 le variabili e, se un id_membro è un campo vuoto, far vedere una X rossa e un campo input per poterlo settare, oppure un tick verde se invece è stato settato. Spero essere stato più chiaro ;)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
puoi provare una cosa del genere
PHP:
<?php
//---connessione----------------------------------------------------
echo "<pre>";
for($k=1;$k<=10;$k++){
	$n[]="nome".$k;
}
$nome=implode(", ",$n);//risulta: nome1, nome2,....nome10
$query="SELECT id, $nome FROM tabella";
var_dump($query);//come viene la query
$ris=mysql_query($query);
if($ris){
	while($riga =mysql_fetch_assoc($ris)){
		$id=$riga['id'];
		unset($riga['id']);//elimino $riga['id'] per non trovarla in $letto[$id]
		$letto[$id]=$riga;
	}
}else{
	echo "errore";
}
var_dump($letto);//questo per veder come viene l'array $letto
foreach($letto as $ch_0 => $val_ar){
	foreach($val_ar as $ch_cam =>$val){
		if($val < 0){
			echo "$ch_0) $ch_cam: <img src=\"X_rossa.jpg\"><br />";
		}else{
			echo "$ch_0) $ch_cam: <img src=\"X_verde.jpg\"><br />";
		}
	}
}
echo "</pre>";
?>
ho messo dei var_dump per mostrare cosa risulta nel vari passaggi, poi li togli compreso gli echo <pre>

p.s.
mi è venuto in mente questo, ma può essrci qualcosa di meglio
 

Furion

Utente Attivo
26 Ago 2013
32
0
0
Era quello che cercavo ma con qualche modifica:

PHP:
<?
echo "<pre>"; 
for($k=1;$k<=10;$k++){ 
    $n[]="id_membro".$k; 
} 
$nome=implode(", ",$n);//risulta: nome1, nome2,....nome10 
$query="SELECT $nome FROM creazione_clan WHERE id_capoclan = $id"; 
var_dump($query);//come viene la query 
$ris=mysql_query($query); 
if($ris){ 
    while($riga =mysql_fetch_assoc($ris)){ 
        $id=$riga['$nome']; 
        unset($riga['$nome']);//elimino $riga['id'] per non trovarla in $letto[$id] 
        $letto[$id]=$riga; 
    } 
}else{ 
    echo "errore"; 
} 
var_dump($letto);//questo per veder come viene l'array $letto 
foreach($letto as $ch_0 => $val_ar){ 
    foreach($val_ar as $ch_cam =>$val){ 
        if($val == 0){ 
            echo "$ch_0) $ch_cam: <img src=\"X_rossa.jpg\"><br />"; 
        }else{ 
            echo "$ch_0) $ch_cam: <img src=\"X_verde.jpg\"><br />"; 
        } 
    } 
} 
echo "</pre>";
?>
Ti ringrazio davvero tanto! :love::fonzie:
 

Furion

Utente Attivo
26 Ago 2013
32
0
0
Riapro questo post per chiedere un altro consiglio...nello script di sopra ho provato ad aggiungere due cose ma con scarsi risultati: vorrei aggiungere un controllo dove c'è "if($val == 0){" etc etc e settare una flag in seguito.
Cerco di spiegarmi meglio: con lo script vorrei controllare, oltre il valore di id_membro1-10, anche il valore del campo confirm_membro1-10(ci sono 10 campi che si chiamano confirm_membro1, confirm_membro2....confirm_membro10), se è uguale a 0 allora mostro l'X rossa, se invece è uguale a 1 mostro l'X verde (quindi questo controllo andrebbe affiancato a if($val == 0){); nel caso in cui i campi id_member1-10 sono tutti settati (quindi $val != 0) e lo stesso vale per confirm_membro1-10 (quindi ad esempio $val_confirm == 1) settare una flag (ad esempio $campi_ok = 1) , così da poter mettere un check nello script e poter fare altre azioni in base al valore di $campi_ok.

L'idea di base è quella di creare uno che permetta di creare un clan solo nel caso in cui i membri sono 10 (id_member1-10) e hanno dato la loro conferma(confirm_membro1-10) e quindi mostrare X verde se il il membro è segnato e se ha dato la conferma, la X rossa nel caso in cui o non è segnato il membro o non ha dato la sua conferma.

Ho provato a modificarlo da solo ma a volte mi mostrava i risultati ripetuti 10 volte per ogni membro, altre mi ignorava il secondo controllo, altre ancora mostrava solo le X rosse...troppo complicato per le mie capacità :crying:

Spero di essere stato abbastanza chiaro, non ero certo se ripostare qui o aprire un altro thread, nel dubbio ho postato qui 0:)
Grazie anticipatamente! :byebye:
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
se non ho capito male quello che vuoi fare, prova così
PHP:
<?php
//---connessione----------------------------------------------------
echo "<pre>";
for($k=1;$k<=10;$k++){
    $n[]="nome".$k;
	$c[]="confirm_membro".$k;
}
$nome=implode(", ",$n);//risulta: nome1, nome2,....nome10
$conferma=implode(", ",$c);//risulta: confirm_membro1, confirm_membro2,....confirm_membro10
$query="SELECT id, $nome, $conferma FROM tabella";
var_dump($query);//come viene la query
$ris=mysql_query($query);
if($ris){
    $conta=1;
	while($riga =mysql_fetch_assoc($ris)){
        $id=$riga['id'];
        //unset($riga['id']);//elimino $riga['id'] per non trovarla in $letto[$id]
		$nom="nome".$conta;
		$con="confirm_membro".$conta;
		}
		$letto[$id]=$riga[$nom]."|".$riga[$con];
    	$conta++;
	}
}else{
    echo "errore";
}
var_dump($letto);//questo per veder come viene l'array $letto
foreach($letto as $ch_0 => $val_ar){
    foreach($val_ar as $ch_cam =>$val){
        $ver=explode("|", $val);
		if($ver[0] < 0 && $ver[1] !=1){
            //poi qui se vuoi puoi settare il flag che secondo me deve essere riferito a quel particolare id
			$val_confirm[$ch_0]=0;
			echo "$ch_0) $ch_cam: <img src=\"X_rossa.jpg\"><br />";
        }else{
            $val_confirm[$ch_0]=1;
			echo "$ch_0) $ch_cam: <img src=\"X_verde.jpg\"><br />";
        }
    }
}
echo "</pre>";
?>
guarda che però non l'ho testato e quindi può non funzionare
 

Furion

Utente Attivo
26 Ago 2013
32
0
0
guarda che però non l'ho testato e quindi può non funzionare
infatti non va, ho cambiato nome alla variabile e cancellato una } di troppo ma non va lo stesso, il risultato è:

PHP:
string(343) "SELECT id, id_membro1, id_membro2, id_membro3, id_membro4, id_membro5, id_membro6, id_membro7, id_membro8, id_membro9, id_membro10, confirm_membro1, confirm_membro2, confirm_membro3, confirm_membro4, confirm_membro5, confirm_membro6, confirm_membro7, confirm_membro8, confirm_membro9, confirm_membro10 FROM creazione_clan WHERE id_capoclan = 6"
array(1) {
  [1]=>
  string(1) "|"
}
ti posto il codice che ho usato(che è uguale al tuo con i nomi delle variabili cambiate e una } di troppo che ho tolto)
PHP:
<? 
require('db_config.php');

echo "<pre>"; 
for($k=1;$k<=10;$k++){ 
    $n[]="id_membro".$k; 
    $c[]="confirm_membro".$k; 
} 
$nome=implode(", ",$n);//risulta: nome1, nome2,....nome10 
$conferma=implode(", ",$c);//risulta: confirm_membro1, confirm_membro2,....confirm_membro10 
$query="SELECT id, $nome, $conferma FROM creazione_clan WHERE id_capoclan = 6"; 
var_dump($query);//come viene la query 
$ris=mysql_query($query); 
if($ris){ 
    $conta=1; 
    while($riga =mysql_fetch_assoc($ris)){ 
        $id=$riga['id']; 
        //unset($riga['id']);//elimino $riga['id'] per non trovarla in $letto[$id] 
        $nom="id_membro".$conta; 
        $con="confirm_membro".$conta; 
        } 
        $letto[$id]=$riga[$nom]."|".$riga[$con]; 
        $conta++; 
    }else{ 
    echo "errore"; 
} 
var_dump($letto);//questo per veder come viene l'array $letto 
foreach($letto as $ch_0 => $val_ar){ 
    foreach($val_ar as $ch_cam =>$val){ 
        $ver=explode("|", $val); 
        if($ver[0] < 0 && $ver[1] !=1){ 
            //poi qui se vuoi puoi settare il flag che secondo me deve essere riferito a quel particolare id 
            $val_confirm[$ch_0]=0; 
            echo "$ch_0) $ch_cam: <img src=\"X_rossa.jpg\"><br />"; 
        }else{ 
            $val_confirm[$ch_0]=1; 
            echo "$ch_0) $ch_cam: <img src=\"X_verde.jpg\"><br />"; 
        } 
    } 
} 
echo "</pre>";  
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
intanto sembrerebbe che la querystringa venisse giusta, tra l'altro se non fosse giusta la riga
$ris=mysql_query($query);
ti darebbe errore (puoi tigliere quindi var_dump($query);//come viene la query che fa confusione)
e poi (FORSE) ho capito cosa non funzia, prova a correggere così
PHP:
<?php
//.....
if(mysql_num_rows($ris) > 0){ //qui metti il numero di record trovati (se 0 non trovati)
    while($riga =mysql_fetch_array($ris)){ //qui prova a mettere array
		$id=$riga['id']; 
        for($k=1;$k<=10;$k++){
			$nom="id_membro".$k; 
        	$con="confirm_membro".$k; 
     		$la[]=$riga[$nom]."*".$riga[$con];
		}//fine for
		$letto[$id]=implode("|",$le);
	 }//fine while
    }else{
    echo "errore";
}
var_dump($letto);//questo per vedere come viene l'array $letto
foreach($letto as $id => $val){//es pinco*1|pallo*0 ecc....
	$membro=explode("|",$val);//$membro[0]=pinco*1, $membro[1]=pallo*0 ecc....
	foreach($membro as $c => $val_1){
		$dati=explode("|",$val_1);//1° giro:$dati[0]=pinco, $dati[1]=1 - 2° giro:$dati[0]=pallo, $dati[1]=0 ecc...
		if($dati[0] < 0 && $dati[1] !=1){
			//poi qui se vuoi puoi settare il flag che secondo me deve essere riferito a quel particolare id
            $val_confirm[$id]=0;
            echo "$id: <img src=\"X_rossa.jpg\"><br />"; 
		}else{
			$val_confirm[$id]=1;
			echo "$id: ".$dati[0]."<img src=\"X_verde.jpg\"><br />"; 
		}
	}
}
echo "</pre>";
?>
guarda che si tratta di una prova, non avendo le tue tabelle non posso testarlo.
comunque prova e eventualmente usa il var_dump per vedere come si presentano i dati nei vari cicli...
 

Furion

Utente Attivo
26 Ago 2013
32
0
0
guarda che si tratta di una prova, non avendo le tue tabelle non posso testarlo.
comunque prova e eventualmente usa il var_dump per vedere come si presentano i dati nei vari cicli...
Ciao, allora quest'ultimo che mi hai dato mostra solo il primo risultato che è quello dove i campi vengono rispettati tutti (id_membro settato e confirm_membro == 1)

PHP:
string(343) "SELECT id, id_membro1, id_membro2, id_membro3, id_membro4, id_membro5, id_membro6, id_membro7, id_membro8, id_membro9, id_membro10, confirm_membro1, confirm_membro2, confirm_membro3, confirm_membro4, confirm_membro5, confirm_membro6, confirm_membro7, confirm_membro8, confirm_membro9, confirm_membro10 FROM creazione_clan WHERE id_capoclan = 6"
array(1) {
  [1]=>
  NULL
}
1:  [COLOR="#00FF00"]X[/COLOR]
var_dump($letto) mostra
PHP:
array(1) {
  [1]=>
  NULL
}
var_dump($membro) mostra
PHP:
array(1) {
  [0]=>
  string(0) ""
}
var_dump($dati) mostra
PHP:
array(1) {
  [0]=>
  string(0) ""
}
devo metterlo su qualche altra variabile il var_dump?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
analizziamo più a fondo
PHP:
<?php
//.....
var_dump(mysql_num_rows($ris));
/*se ti da 0 c'è qualcosa che non va nella query, cieè non trova record quindi l'errore viene prima,
se >0 allora metti gli altri var_dump*/
if(mysql_num_rows($ris) > 0){ //qui metti il numero di record trovati (se 0 non trovati)
	while($riga =mysql_fetch_array($ris)){ //qui prova a mettere array
        var_dump($riga);//se risulta posta il risultato di un record
		$id=$riga['id']; 
        for($k=1;$k<=10;$k++){
            $nom="id_membro".$k; 
            $con="confirm_membro".$k; 
             $la[]=$riga[$nom]."*".$riga[$con];
			 //se var_dump($riga) è ok verifica $la
			 var_dump($la);
        }//fine for
        $letto[$id]=implode("|",$le);
     }//fine while
    }else{
    echo "errore";
} 
//.....
?>
p.s.
poi devi avere pazienza, da domani sono via per alcuni giorni
 

Furion

Utente Attivo
26 Ago 2013
32
0
0
p.s.
poi devi avere pazienza, da domani sono via per alcuni giorni
Ma ci mancherebbe, già è troppo quello che stai facendo per aiutarmi, se inizio a fare anche le pretese non andiamo da nessuna parte :fonzie:

Lo script ora mostra
PHP:
string(343) "SELECT id, id_membro1, id_membro2, id_membro3, id_membro4, id_membro5, id_membro6, id_membro7, id_membro8, id_membro9, id_membro10, confirm_membro1, confirm_membro2, confirm_membro3, confirm_membro4, confirm_membro5, confirm_membro6, confirm_membro7, confirm_membro8, confirm_membro9, confirm_membro10 FROM creazione_clan WHERE id_capoclan = 6"
int(1)
array(42) {
  [0]=>
  string(1) "1"
  ["id"]=>
  string(1) "1"
  [1]=>
  string(1) "1"
  ["id_membro1"]=>
  string(1) "1"
  [2]=>
  string(1) "0"
  ["id_membro2"]=>
  string(1) "0"
  [3]=>
  string(1) "0"
  ["id_membro3"]=>
  string(1) "0"
  [4]=>
  string(1) "0"
  ["id_membro4"]=>
  string(1) "0"
  [5]=>
  string(1) "0"
  ["id_membro5"]=>
  string(1) "0"
  [6]=>
  string(1) "0"
  ["id_membro6"]=>
  string(1) "0"
  [7]=>
  string(1) "0"
  ["id_membro7"]=>
  string(1) "0"
  [8]=>
  string(1) "0"
  ["id_membro8"]=>
  string(1) "0"
  [9]=>
  string(1) "0"
  ["id_membro9"]=>
  string(1) "0"
  [10]=>
  string(1) "0"
  ["id_membro10"]=>
  string(1) "0"
  [11]=>
  string(1) "1"
  ["confirm_membro1"]=>
  string(1) "1"
  [12]=>
  string(1) "0"
  ["confirm_membro2"]=>
  string(1) "0"
  [13]=>
  string(1) "0"
  ["confirm_membro3"]=>
  string(1) "0"
  [14]=>
  string(1) "0"
  ["confirm_membro4"]=>
  string(1) "0"
  [15]=>
  string(1) "0"
  ["confirm_membro5"]=>
  string(1) "0"
  [16]=>
  string(1) "0"
  ["confirm_membro6"]=>
  string(1) "0"
  [17]=>
  string(1) "0"
  ["confirm_membro7"]=>
  string(1) "0"
  [18]=>
  string(1) "0"
  ["confirm_membro8"]=>
  string(1) "0"
  [19]=>
  string(1) "0"
  ["confirm_membro9"]=>
  string(1) "0"
  [20]=>
  string(1) "0"
  ["confirm_membro10"]=>
  string(1) "0"
}
array(1) {
  [0]=>
  string(3) "1*1"
}
array(2) {
  [0]=>
  string(3) "1*1"
  [1]=>
  string(3) "0*0"
}
array(3) {
  [0]=>
  string(3) "1*1"
  [1]=>
  string(3) "0*0"
  [2]=>
  string(3) "0*0"
}
array(4) {
  [0]=>
  string(3) "1*1"
  [1]=>
  string(3) "0*0"
  [2]=>
  string(3) "0*0"
  [3]=>
  string(3) "0*0"
}
array(5) {
  [0]=>
  string(3) "1*1"
  [1]=>
  string(3) "0*0"
  [2]=>
  string(3) "0*0"
  [3]=>
  string(3) "0*0"
  [4]=>
  string(3) "0*0"
}
array(6) {
  [0]=>
  string(3) "1*1"
  [1]=>
  string(3) "0*0"
  [2]=>
  string(3) "0*0"
  [3]=>
  string(3) "0*0"
  [4]=>
  string(3) "0*0"
  [5]=>
  string(3) "0*0"
}
array(7) {
  [0]=>
  string(3) "1*1"
  [1]=>
  string(3) "0*0"
  [2]=>
  string(3) "0*0"
  [3]=>
  string(3) "0*0"
  [4]=>
  string(3) "0*0"
  [5]=>
  string(3) "0*0"
  [6]=>
  string(3) "0*0"
}
array(8) {
  [0]=>
  string(3) "1*1"
  [1]=>
  string(3) "0*0"
  [2]=>
  string(3) "0*0"
  [3]=>
  string(3) "0*0"
  [4]=>
  string(3) "0*0"
  [5]=>
  string(3) "0*0"
  [6]=>
  string(3) "0*0"
  [7]=>
  string(3) "0*0"
}
array(9) {
  [0]=>
  string(3) "1*1"
  [1]=>
  string(3) "0*0"
  [2]=>
  string(3) "0*0"
  [3]=>
  string(3) "0*0"
  [4]=>
  string(3) "0*0"
  [5]=>
  string(3) "0*0"
  [6]=>
  string(3) "0*0"
  [7]=>
  string(3) "0*0"
  [8]=>
  string(3) "0*0"
}
array(10) {
  [0]=>
  string(3) "1*1"
  [1]=>
  string(3) "0*0"
  [2]=>
  string(3) "0*0"
  [3]=>
  string(3) "0*0"
  [4]=>
  string(3) "0*0"
  [5]=>
  string(3) "0*0"
  [6]=>
  string(3) "0*0"
  [7]=>
  string(3) "0*0"
  [8]=>
  string(3) "0*0"
  [9]=>
  string(3) "0*0"
}
array(1) {
  [1]=>
  NULL
}
1: X_VERDE
 

Furion

Utente Attivo
26 Ago 2013
32
0
0
ciao scusa
occhio ho fatto un errore
$letto[$id]=implode("|",$le);
deve essere
$letto[$id]=implode("|",$la);
correggi e riprova
Sembra che così funzioni ma ho dovuto modificare if($dati[0] < 0 && $dati[1] !=1) in if($dati[0] == 0 && $dati[1] !=1), ora lo testo per bene e in caso ri-posto, grazie mille!:fonzie:

EDIT: non considera il controllo sul confirm_membro, ho provato ad impostare id_membro = 2 e confirm_membro2 = 0 e lo script mostrava una X verde quando dovrebbe mostrarla rossa :S
 
Ultima modifica:

Furion

Utente Attivo
26 Ago 2013
32
0
0
Se può aiutare var_dump($dati[1]); mostra "NULL" quindi credo sia per quello che viene ignorato nell'if...!
 

Furion

Utente Attivo
26 Ago 2013
32
0
0
Dopo aver risolto i problemi dello script sono arrivato a questo:

immagine:
clan.jpg

Mi piacerebbe sapere se il seguente codice può andar bene:
PHP:
<? 
require('db_config.php');


for($k=1;$k<=10;$k++){ 
    $n[]="id_membro".$k; 
    $c[]="confirm_membro".$k; 
} 
$nome=implode(", ",$n);
$conferma=implode(", ",$c); 

$query="SELECT id, $nome, $conferma FROM `creazione_clan` WHERE id_capoclan = 6";
$ris=mysql_query($query) or die (mysql_error()); 
/*se ti da 0 c'è qualcosa che non va nella query, cieè non trova record quindi l'errore viene prima, 
se >0 allora metti gli altri var_dump*/ 
if(mysql_num_rows($ris) > 0){ //qui metti il numero di record trovati (se 0 non trovati) 
    while($riga =mysql_fetch_array($ris)){ //qui prova a mettere array //se risulta posta il risultato di un record 
        $id=$riga['id']; 
        $nome=$riga['nome'];
        for($k=1;$k<=10;$k++){ 
            $nom="id_membro".$k;  
            $con="confirm_membro".$k;  
             $la[]=$riga[$nom]."*".$riga[$con]; 
             //se var_dump($riga) è ok verifica $la 
        }//fine for 
        $letto[$id]=implode("|",$la); 
     }//fine while 
    }else{ 
    echo "errore"; 
}

echo "<table border=1 width=600>";
echo "<tr><td><div align='center'>Nome:</div></td><td><div align='center'>Invito Spedito:</div></td><td><div align='center'>Invito Accettato:</div></td></tr>";
echo "<tr>";

foreach($letto as $id => $val){//es pinco*1|pallo*0 ecc.... 
    $membro=explode("|",$val);//$membro[0]=pinco*1, $membro[1]=pallo*0 ecc.... 
    foreach($membro as $c => $val_1){
        $dati=explode("*",$val_1);//1° giro:$dati[0]=pinco, $dati[1]=1 - 2° giro:$dati[0]=pallo, $dati[1]=0 ecc... 

$nomi_membri = "SELECT * FROM `character` WHERE `id_user` IN ($dati[0])";
$res_nomi_membri = mysql_query($nomi_membri) or die (mysql_error());
while($riga_nomi = mysql_fetch_array($res_nomi_membri)){
$nomi = $riga_nomi['nome'];
$id_user = $riga_nomi['id_user'];
}
echo "<tr>";
        
            if($dati[0] == 0){ 
            //poi qui se vuoi puoi settare il flag che secondo me deve essere riferito a quel particolare id     
            $val_membro[$id]=0;
            echo "<td width='200'><div align='center'><input type='text' name='nome_membri[]'></div></td><td width='200'><div align='center'><img src='X_rossa.jpg'></div></td>";  
            }
            if(($dati[0] > 0) && ($id_user == $dati[0]) && ($dati[1] !=1)){ 
            $val_membro[$id]=0;
            echo "<td width='200'><div align='center'><input type='text' value='$nomi' name='nome_membri[]'></div></td> <td width='200'><div align='center'><img src='X_verde.jpg'></div></td>";  
            }
            if(($dati[0] > 0) && ($id_user == $dati[0]) && ($dati[1] == 1)){
            $val_membro[$id]=1;
            echo "<td width='200'><div align='center'>$nomi</div></td> <td width='200'><div align='center'><img src='X_verde.jpg'></div></td>";
            }
        
            if($dati[1] !=1){
            $val_confirm[$id]=0;
            echo "<td width='200'><div align='center'><img src='X_rossa.jpg'></div></td>";         
            }
            if($dati[1] == 1) {
            $val_confirm[$id]=1;
            echo "<td width='200'><div align='center'><img src='X_verde.jpg'></div></td>";          
            }  
echo "</tr>";
    } 
} 

echo "</table>";
?>
ora mi è rimasta solo una cosa da fare e non so proprio come fare....come vedete dall'immagine ci sono diversi input text, tramite gli input text l'utente scrive il nome di altri 10 membri e io dovrei, in base a quei nomi, prelevare gli id corrispondenti dalla tabella "character" e fare un update nella tabella "creazione_clan" settando i famosi id_membri1-10.
Il mio problema ora è questo: come faccio ad impostare nella query di update solo gli id_membri che sono stati settati nei campi input? Ad esempio sul campo 1 c'è scritto Paolo, sul terzo c'è scritto Giacomo, e i restanti sono vuoti, io dovrei fare una query del tipo "UPDATE character SET id_membro1 = (id corrispondente a Paolo), id_membro3 = (id corrispondente a Giacomo) WHERE id_capoclan = $id_capoclan;"
Come fare? :confused:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
il codice può andare bene, però ti conviene passare alle istruzioni mysqly.
le vecchie mysql tra un po' non saranno più supportate.

poi per fare quello che vuoi sarebbe opprtuno che postassi il codice del form dove vengono scritto i nomi
 

Furion

Utente Attivo
26 Ago 2013
32
0
0
Non l'avevo scritta quella parte proprio perchè non so come poterla fare, ho modificato al volo lo script così:

PHP:
echo "<table border=1 width=600>";
echo "<tr><td><div align='center'>Nome:</div></td><td><div align='center'>Invito Spedito:</div></td><td><div align='center'>Invito Accettato:</div></td></tr>";
echo "<tr>";
echo "<form action=".$_SERVER['PHP_SELF']." method='post'>";

foreach($letto as $id => $val){//es pinco*1|pallo*0 ecc.... 
    $membro=explode("|",$val);//$membro[0]=pinco*1, $membro[1]=pallo*0 ecc.... 
    foreach($membro as $c => $val_1){
        $dati=explode("*",$val_1);//1° giro:$dati[0]=pinco, $dati[1]=1 - 2° giro:$dati[0]=pallo, $dati[1]=0 ecc... 

$nomi_membri = "SELECT * FROM `character` WHERE `id_user` IN ($dati[0])";
$res_nomi_membri = mysql_query($nomi_membri) or die (mysql_error());
while($riga_nomi = mysql_fetch_array($res_nomi_membri)){
$nomi = $riga_nomi['nome'];
$id_user = $riga_nomi['id_user'];
}
echo "<tr>";
        
            if($dati[0] == 0){ 
            //poi qui se vuoi puoi settare il flag che secondo me deve essere riferito a quel particolare id     
            $val_membro[$id]=0;
            echo "<td width='200'><div align='center'><input type='text' name='nome_membri[]'></div></td><td width='200'><div align='center'><img src='X_rossa.jpg'></div></td>";  
            }
            if(($dati[0] > 0) && ($id_user == $dati[0]) && ($dati[1] !=1)){ 
            $val_membro[$id]=0;
            echo "<td width='200'><div align='center'><input type='text' value='$nomi' name='nome_membri[]'></div></td> <td width='200'><div align='center'><img src='X_verde.jpg'></div></td>";  
            }
            if(($dati[0] > 0) && ($id_user == $dati[0]) && ($dati[1] == 1)){
            $val_membro[$id]=1;
            echo "<td width='200'><div align='center'>$nomi</div></td> <td width='200'><div align='center'><img src='X_verde.jpg'></div></td>";
            }
        
            if($dati[1] !=1){
            $val_confirm[$id]=0;
            echo "<td width='200'><div align='center'><img src='X_rossa.jpg'></div></td>";         
            }
            if($dati[1] == 1) {
            $val_confirm[$id]=1;
            echo "<td width='200'><div align='center'><img src='X_verde.jpg'></div></td>";          
            }  
echo "</tr>";
    } 
}
echo "<tr><td><div align='center'>Manda invito: </div></td><td colspan=2><div align='center'><input type='submit' name='submit' value='invia'></div></td></tr>";
echo "</form>"; 

echo "</table>";

$submit = $_POST['submit'];

if(isset($submit)){

$nome_membri = array_filter(array_map(null,  $_POST['nome_membri']));

$lista_nome_membri = implode(', ', $nome_membri);

var_dump($lista_nome_membri);
}
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
un domanda
$_POST['nome_membri']
contiene gli id o i nomi degli utenti?
se è l'id non dovrebbero esserci problemi, così anche per il nome ma solo se il nome è unico
se contiene il nome e il nome NON è unico (es hai due utenti che si chiamano Paolo) allora è un problema
come fai a ricavare 'id corrispondente a Paolo'
 

Furion

Utente Attivo
26 Ago 2013
32
0
0
Si scusa hai ragione, nella tabella "creazione_membri" io inserisco gli id dei membri (per una questione di sicurezza: anche se i nomi sono unici lavorare con gli id è sempre meglio...pensiero mio) quindi $_POST['nome_membri'] può contenere o gli id_membri o i nomi(che sono unici) e in base a quello che faccio agisco di conseguenza: se metto gli id li inserisco diretti nella tabella creazione_clan o magari posso fare qualche controllo per vedere se esistono(e non saprei come fare), oppure posso metterci i nomi e in base ai nomi mi ricavo gli id_membri che poi inserisco nella tabella creazione_clan.
Effettivamente per risparmiare risorse e fare le cose meno complicate sarebbe meglio lavorare direttamente con gli id e fare i controlli di esistenza del caso ma come detto prima non saprei come fare questi controlli.
Spero di essere stato chiaro :byebye: