Ciclo for per avere chek ceccate e non

minatore

Utente Attivo
25 Set 2007
410
0
0
Ciao a tutti, scusatemi per il titolo
volevo un aiutino per uno script che mi sono accinto a fare, ma come sempre mi blocco sul più bello
ho degli accessori che l'utente sceglie ed io salvo nel db, e fin qua tutto bene, adesso sto creando la pagina di modifica, e vorrei che mi visualizzasse sempre tutte le check degli accessori, avendo però in questa pagina ceccate quelle voci che sono all'interno del db, vi posto lo script di come lo sto facendo adesso e di come lo facevo prima
script oggi
PHP:
$dotazioni = explode(",", $rec_estr['accessori']);
$a_optional=array('Abs', 'Esp', 'Airbag guidatore', 'Airbag passeggero', 'Airbag laterale', 'Fendinebbia',
'Chiusure centralizzate', 'Servosterzo', 'Alzacristalli elettrici', 'Autoradio', 'Lettore cd',
'Comandi al volante', 'Computer di bordo', 'City', 'Antifurto acustico', 'Antifurto satellitare', 'Blockshaft',
'Clima digitale', 'Clima analogico', 'Cerchi in lega', 'Immobilizz elettronico', 'Navigatore', 'Tetto panoramico',
'Tetto apribile', 'Specchi laterali elettrici', 'Cruise control', 'Regolaz elettron sedili', 'Interni in pelle',
'Interni in alcantara',	'Sedili riscaldabili', 'Barre tetto', 'Trazione integrale', 'Controllo trazione',
'Sensori luci', 'Sensori pioggia', 'Sensori parc anter', 'Sensori parc poster', 'Cambio manuale',
'Cambio automatico', 'Fari xenon', 'Caricatore cd', 'Bluetooth', 'Attacco usb', 'Gancio traino', 'Adatto handicap');
$lungh_array= count($a_optional);
$riga=1;
echo"
<table border='0' cellpadding='0' cellspacing='0' width='960'>
	<tr>
		<td width='5'></td>
		<td></td>
	</tr>
	<tr>
		<td width='5' height='20'></td>
		<td align='left' class='titolo'>Dotazioni</td>
	</tr>
	<tr>
		<td width='5' height='25'></td>
		<td align='left'>
		<table cellpadding='0' cellspacing='0' border='0' bordercolor='#23D527'>";
			for($i = 0; $i < count($dotazioni); $i++)
				{
					for($f = 0; $f < $lungh_array; $f++)
						{
							if($dotazioni[$i] == $a_optional[$f])
								{
									if($riga == 1)
										{
											print"<tr>";	
										}
											print"
												<td width='200' class='elenco'>
													<input type='checkbox' name='$f' checked='checked'>$a_optional[$f]
												</td>";
												$riga++;
									if($riga > 4)
										{
											print"</tr>";
											$riga=1;	
										}
								}
						}
				}
			print"
			</table>
		
		</td>
	</tr>
</table>";
con questo mi visualizza solo le voci del db ceccate, mentre le altre non ceccate non le ho più

script prima
PHP:
$articolo=mysql_fetch_assoc($query_estr);
	
			$a_articolo=explode(",", $articolo['accessori']);
			$a_nome_accessori = array(	'a1'=>'Abs',
										'a2'=>'Esp', 
										'a3'=>'Airbag guidatore', 
										'a4'=>'Airbag passeggero', 
										'a5'=>'Airbag laterale', 
										'a6'=>'Fendinebbia',
										'a7'=>'Chiusure centralizzate', 
										'a8'=>'Servosterzo', 
										'a9'=>'Alzacristalli elettrici', 
										'a10'=>'Autoradio',
										'a11'=>'Lettore cd', 
										'a12'=>'Comandi al volante', 
										'a13'=>'Computer di bordo', 
										'a14'=>'City', 
										'a15'=>'Antifurto acustico',
										'a16'=>'Antifurto satellitare', 
										'a17'=>'Blockshaft', 
										'a18'=>'Clima digitale', 
										'a19'=>'Clima analogico', 
										'a20'=>'Cerchi in lega',
										'a21'=>'Immobiliz elettronico', 
										'a22'=>'Navigatore', 
										'a23'=>'Tetto panoramico', 
										'a24'=>'Tetto apribile',
										'a25'=>'Specchi later elettr', 
										'a26'=>'Cruise control', 
										'a27'=>'Regolaz elettron sedili',
										'a28'=>'Interni in pelle', 
										'a29'=>'Interni in alcantara',	
										'a30'=>'Sedili riscaldabili', 
										'a31'=>'Barre tetto',
										'a32'=>'Trazione integrale', 
										'a33'=>'Controllo trazione', 
										'a34'=>'Sensori luci',
										'a35'=>'Sensori pioggia', 
										'a36'=>'Sensori parcheg ant', 
										'a37'=>'Sensori parcheg post',
										'a38'=>'Cambio manuale', 
										'a39'=>'Cambio automatico', 
										'a40'=>'Fari xenon', 
										'a41'=>'Caricatore cd', 
										'a42'=>'Bluetooth', 
										'a43'=>'Attacco usb',
										'a44'=>'Gancio traino', 
										'a45'=>'Adatto handicap');
			for($p = 0; $p < count($a_articolo); $p++)
				{
					for($f = 1; $f < 46; $f++)
						{
							if($a_articolo[$p]==$a_nome_accessori["a". $f])
								{
									$a_cod_accessori[]="a". $f;
								}
						}
				}
<table cellpadding="0" cellspacing="0" border="0" bordercolor="#23D527">
                                                    <tr>
                                                    	<td>
                                                            <input type="checkbox" name="a1" class="testo"
                                                                <?php
                                                                    for($g = 0; $g < count($a_cod_accessori); $g++)
                                                                        {
                                                                            if($a_cod_accessori[$g]=="a1")
                                                                                {
                                                                                    print" checked";
                                                                                }
                                                                        }
                                                                ?>
                                                            >
                                                        </td>
                                                        <td class="testo">
                                                        	Abs
                                                        </td>
                                                        <td width="40"></td>
                                                        <td>
                                                            <input type="checkbox" name="a2" class="testo"
                                                                <?php
                                                                    for($g = 0; $g < count($a_cod_accessori); $g++)
                                                                        {
                                                                            if($a_cod_accessori[$g]=="a2")
                                                                                {
                                                                                    print" checked";
                                                                                }
                                                                        }
                                                                ?>
                                                            >
                                                        </td>
                                                        <td class="testo">
                                                        	Esp
                                                        </td>
                                                        <td width="40"></td>
                                                        <td>
                                                            <input type="checkbox" name="a3" class="testo"
                                                                <?php
                                                                    for($g = 0; $g < count($a_cod_accessori); $g++)
                                                                        {
                                                                            if($a_cod_accessori[$g]=="a3")
                                                                                {
                                                                                    print" checked";
                                                                                }
                                                                        }
                                                                ?>
                                                            >
                                                        </td>
via via fino al numero 45, lo script funziona, ma non può essere che devva scrivere per 45 volte quasi la stessa cosa, ed ho pensato di mettere tutto in un ciclo, ma quelle non ceccate non ci sono
Grazie da minatore
 

Ciao ragazzi, qualche aiutino per migliorarmi e non scrivere per 45 volte lo stesso codice
Grazie da minatore

 

Ciao ragazzi vi scrivo proprio come è lo script funzionante, l'unico problema e che devo scrivere per 45 volte 8 righe di codice
PHP:
$a_nome_accessori = array(
'a1'=>'Abs',
'a2'=>'Esp', 
'a3'=>'Airbag guidatore', 
'a4'=>'Airbag passeggero', 
'a5'=>'Airbag laterale', 
'a6'=>'Fendinebbia',
'a7'=>'Chiusure centralizzate', 
'a8'=>'Servosterzo', 
'a9'=>'Alzacristalli elettrici', 
'a10'=>'Autoradio',
'a11'=>'Lettore cd', 
'a12'=>'Comandi al volante', 
'a13'=>'Computer di bordo', 
'a14'=>'City', 
'a15'=>'Antifurto acustico',
'a16'=>'Antifurto satellitare', 
'a17'=>'Blockshaft', 
'a18'=>'Clima digitale', 
'a19'=>'Clima analogico', 
'a20'=>'Cerchi in lega',
'a21'=>'Immobiliz elettronico', 
'a22'=>'Navigatore', 
'a23'=>'Tetto panoramico', 
'a24'=>'Tetto apribile',
'a25'=>'Specchi later elettr', 
'a26'=>'Cruise control', 
'a27'=>'Regolaz elettron sedili',
'a28'=>'Interni in pelle', 
'a29'=>'Interni in alcantara',	
'a30'=>'Sedili riscaldabili', 
'a31'=>'Barre tetto',
'a32'=>'Trazione integrale', 
'a33'=>'Controllo trazione', 
'a34'=>'Sensori luci',
'a35'=>'Sensori pioggia', 
'a36'=>'Sensori parcheg ant', 
'a37'=>'Sensori parcheg post',
'a38'=>'Cambio manuale', 
'a39'=>'Cambio automatico', 
'a40'=>'Fari xenon', 
'a41'=>'Caricatore cd', 
'a42'=>'Bluetooth', 
'a43'=>'Attacco usb',
'a44'=>'Gancio traino', 
'a45'=>'Adatto handicap');
$a_articolo = explode(",", $rec_estr['accessori']);
for($p = 0; $p < count($a_articolo); $p++)
	{
		for($f = 1; $f < 46; $f++)
			{
				if($a_articolo[$p]==$a_nome_accessori["a". $f])
					{
						$a_cod_accessori[]="a". $f;
					}
			}
	}
<table cellpadding="0" cellspacing="0" border="1" bordercolor="#23D527">
            <tr>
                <td>
                    <input type="checkbox" name="a1"
                        <?php
                            for($g = 0; $g < count($a_cod_accessori); $g++)
                                {
                                    if($a_cod_accessori[$g]=="a1")
                                        {
                                            print" checked";
                                        }
                                }
                        ?>
                    >
                </td>
                <td class="elenco" width="200">
                    Abs
                </td>
                <td width="40"></td>
                <td>
                    <input type="checkbox" name="a2" class="testo"
                        <?php
                            for($g = 0; $g < count($a_cod_accessori); $g++)
                                {
                                    if($a_cod_accessori[$g]=="a2")
                                        {
                                            print" checked";
                                        }
                                }
                        ?>
                    >
                </td>
                <td class="testo">
                    Esp
                </td>
                <td width="40"></td>
                <td>
                    <input type="checkbox" name="a3" class="testo"
                        <?php
                            for($g = 0; $g < count($a_cod_accessori); $g++)
                                {
                                    if($a_cod_accessori[$g]=="a3")
                                        {
                                            print" checked";
                                        }
                                }
                        ?>
                    >
                </td>
                <td class="testo">
                    Airbag guidatore
                </td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" name="a4" class="testo"
                        <?php
                            for($g = 0; $g < count($a_cod_accessori); $g++)
                                {
                                    if($a_cod_accessori[$g]=="a4")
                                        {
                                            print" checked";
                                        }
                                }
                        ?>
                    >
                </td>
.... via via fino ad a45
Adesso sto cercando di evitare tutto sto ben di codice creando un ciclo che mi permetta di scrivere poche righe, il ciclo da cui partire lo postato prima
ciao da minatore
 
ciao
eccoti un'ideuzza

PHP:
<?php
//....
foreach($a_nome_accessori as $chiave => $valore){
	echo "$valore <input name=\"$chiave\" type=\"radio\"";
	if(in_array($chiave,$a_cod_accessori){ echo " checked ";}
	echo "value=\"$valore\"><br>";
}
/....
?>
così eviti di scrivere 46 volte lo stesso codice

verifica i nomi delle variabili, se non ho capito male in $a_cod_accessori hai a1, a2, a3........, in pratica le chiavi dell'array $a_nome_accessori
 
ciao
eccoti un'ideuzza

PHP:
<?php
//....
foreach($a_nome_accessori as $chiave => $valore){
	echo "$valore <input name=\"$chiave\" type=\"radio\"";
	if(in_array($chiave,$a_cod_accessori){ echo " checked ";}
	echo "value=\"$valore\"><br>";
}
/....
?>
così eviti di scrivere 46 volte lo stesso codice

verifica i nomi delle variabili, se non ho capito male in $a_cod_accessori hai a1, a2, a3........, in pratica le chiavi dell'array $a_nome_accessori

Ciao, grazie tantissimo, proprio quello che volevo che facesse con poche righe.
Il php è così ricco che bisognerebbe avere sempre il manuale a portata di mano, tipo la funzione
sapevo una mezza cosa, ma adesso dopo averla studiata ne so qualcosa in più.
Ciao da minatore
 
ciao
attento a non fare come il rampollo di casa fiat, lapo, che finisce spesso su striscia la notizia:

:)

Ciao, Borgo
ahhh, per la frase, a casa ho i dieci comandamenti del nato stanco, e quella che ho inserita come mia firma e quella che di più mi fa ridere
Ciao :byebye:
 

Discussioni simili