[risolto] Aiuto: ciclo php ( for / while). popolare select dinamicamente da array id.

Simone Di Gregorio

Nuovo Utente
9 Feb 2014
15
0
0
ciao ragazzi!! e il primo post che apro per un aiutino.. sbalorditemi !!

ho questa pagina:

PHP:
<?php
function listacsstagvalopz($opz){
trim($opz);
$sa="SELECT * FROM css_opz WHERE tag_opz='$opz'";
$rsa=mysql_query($sa);
$risa=mysql_fetch_array($rsa);
$boxidval=$risa['val_id'];
$tempid=explode(" - ", $boxidval);
$y=count($tempid);
for($i=0; $i<$y; $i++){
$po="SELECT * FROM css_val WHERE id='$tempid[$i]'";
$rpo=mysql_query($po);
while($pol=mysql_fetch_array($rpo)){
echo "<option value=\"". $pol['tag_val'] ."\">". $pol['tag_val'] ."</option>";}}}
?>

$idm=$_POST['mod'];
$qq="SELECT * FROM ".$table." WHERE id='$idm'";
$resqq=mysql_query($qq);
$rigaqq=mysql_fetch_array($resqq);
$idc=$rigaqq['id'];
$nomestato=$rigaqq['tag_id'];
if($nomestato>0){$selqg="SELECT * FROM css_tag WHERE id='$nomestato'";
$relqg=mysql_query($selqg);
$pplg=mysql_fetch_array($relqg);
$tagg=$pplg['tag'];}else{$tagg="NULL:";}
$nazione=trim($rigaqq['box']);
?>
<div id="div_impostazioniazienda">
<form name="stati" method="post">
<input type="hidden" name="idq" value="<?php echo $idc;?>" />
<select name="nomestatoq">
<option value="<?php echo $nomestato;?>" selected="selected">Tag: <?php echo $tagg;?></option>
<?php
listacsstag();?>
</select><br />
<?php 
$tempbox=explode(";", $nazione);
$y=count($tempbox);
for($ij=0; $ij<($y-1); $ij++){
list($opz[$ij],$val[$ij])=explode(":",$tempbox[$ij]);
echo "<select name=\"opz[]\"><option value=\"$opz[$ij]\" selected=\"selected\">Opzione -> $opz[$ij]</option><option value=\"\">NULL.</option>";
listacsstagopz();
echo "</select><select name=\"val[]\"><option value=\"$val[$ij]\" selected=\"selected\">Valore -> $val[$ij]</option><option value=\"\">NULL.</option>";
listacsstagvalopz($opz[$ij]);
echo "</select><input type=\"text\" name=\"val_man[]\" /><br />";}?>
<input type="submit" name="modd" value="Conferma Modifica" class="tasto" /><br /><br />

il problema sta nel fatto che la funzione richiamata fa il suo lavoro solo con la prima variadile $opz[$ij].
mentre x le altre le crea vuote..
dove sto sbagliando cosa nn ho ciclato...
non sapendo piu cosa modificare ho pensato che forse dovrei intercalare un nuovo ciclo tipo while ed associarlo alla funzione in questione ma forse e solo uno svarione..

grazie in anticipo
 
Ultima modifica di un moderatore:
ciao
scrivi lo sctript un po' meglio perche da un primo occhio sembra che tu non abbia aperto/chiuso bene i tah php e chi guarda pensa che l'errore sia li.
quindi ripostalo indentandolo chiudendo bene i tag e racchiudentolo negli appositi bcccode, seconda riga di formattazione del post ultrime tre iconcine, nell'ordine CODE, HTML, PHP, se lo racchiudi bene bei bcc ti accorgi che c'è una parte di codoce php che non è codice php (colore nero)
 
in effetti sembra che tu ti sia dimenticato di aprire un identificatore php:

PHP:
<?php
function listacsstagvalopz($opz){
trim($opz);
$sa="SELECT * FROM css_opz WHERE tag_opz='$opz'";
$rsa=mysql_query($sa);
$risa=mysql_fetch_array($rsa);
$boxidval=$risa['val_id'];
$tempid=explode(" - ", $boxidval);
$y=count($tempid);
for($i=0; $i<$y; $i++){
$po="SELECT * FROM css_val WHERE id='$tempid[$i]'";
$rpo=mysql_query($po);
while($pol=mysql_fetch_array($rpo)){
echo "<option value=\"". $pol['tag_val'] ."\">". $pol['tag_val'] ."</option>";}}}
?>

$idm=$_POST['mod'];
$qq="SELECT * FROM ".$table." WHERE id='$idm'";
$resqq=mysql_query($qq);
$rigaqq=mysql_fetch_array($resqq);
$idc=$rigaqq['id'];
$nomestato=$rigaqq['tag_id'];
if($nomestato>0){$selqg="SELECT * FROM css_tag WHERE id='$nomestato'";
$relqg=mysql_query($selqg);
$pplg=mysql_fetch_array($relqg);
$tagg=$pplg['tag'];}else{$tagg="NULL:";}
$nazione=trim($rigaqq['box']);
?>
<div id="div_impostazioniazienda">
<form name="stati" method="post">
<input type="hidden" name="idq" value="<?php echo $idc;?>" />
<select name="nomestatoq">
<option value="<?php echo $nomestato;?>" selected="selected">Tag: <?php echo $tagg;?></option>
<?php
listacsstag();?>
</select><br />
<?php 
$tempbox=explode(";", $nazione);
$y=count($tempbox);
for($ij=0; $ij<($y-1); $ij++){
list($opz[$ij],$val[$ij])=explode(":",$tempbox[$ij]);
echo "<select name=\"opz[]\"><option value=\"$opz[$ij]\" selected=\"selected\">Opzione -> $opz[$ij]</option><option value=\"\">NULL.</option>";
listacsstagopz();
echo "</select><select name=\"val[]\"><option value=\"$val[$ij]\" selected=\"selected\">Valore -> $val[$ij]</option><option value=\"\">NULL.</option>";
listacsstagvalopz($opz[$ij]);
echo "</select><input type=\"text\" name=\"val_man[]\" /><br />";}?>
<input type="submit" name="modd" value="Conferma Modifica" class="tasto" /><br /><br />

o meglio ne hai chiuso uno di troppo :confused:
 
ok scusate posto mejo o almeno c provo ..

qui che la funzione in funzioni.php
PHP:
<?php
function listacsstagvalopz($opz){
trim($opz);
$sa="SELECT * FROM css_opz WHERE tag_opz='$opz'";
$rsa=mysql_query($sa);
$risa=mysql_fetch_array($rsa);
$boxidval=$risa['val_id'];
$tempid=explode(" - ", $boxidval);
	$y=count($tempid);
for($i=0; $i<$y; $i++){
		$po="SELECT * FROM css_val WHERE id='$tempid[$i]'";
		$rpo=mysql_query($po);
		while($pol=mysql_fetch_array($rpo)){
		echo "<option value=\"". $pol['tag_val'] ."\">". $pol['tag_val'] ."</option>";}}}
?>


mentre questa e la pagina
PHP:
<?php
include_once ("../../applicazioni/log_check_admin.php") ?>
<?php 
include ("../../funzioni.php") ?>
<?php 
include ("../../matrix/pre_titolo.php") ?>
<title>Tabella CSS - <?php echo $nome_azienda; ?></title>
<?php
include ("../../matrix/post_titolo.php") ?>
<?php
include ("../menu.php") ?>
<h1>CSS:</h1><br /><br />
<?php
$table="css";
include ("../tasfun.php") ?><br /><br /><br /><br />
<?php
if(isset($_POST['del'])){
$arrayid=$_POST['del'];
for ($i=0; $i<count($arrayid); $i++){
    $q="DELETE FROM ".$table." WHERE id ='$arrayid[$i]'";
    $ris=mysql_query($q);}
	if($ris){
    echo "Tutti gli Stili Pagina selezionati sono stati eliminati dall'elenco con successo.<br /><br /><a href=\"" . $_SERVER['PHP_SELF'] . "\">Clikka per aggiornare..</a>";}}	
if(!isset($_POST['modd'])){
if(!isset($_POST['amodd'])){
	if(isset($_POST['mod'])){
	$idm=$_POST['mod'];
	$qq="SELECT * FROM ".$table." WHERE id='$idm'";
$resqq=mysql_query($qq);
$rigaqq=mysql_fetch_array($resqq);
	$idc=$rigaqq['id'];
    $nomestato=$rigaqq['tag_id'];
	if($nomestato>0){$selqg="SELECT * FROM css_tag WHERE id='$nomestato'";
	$relqg=mysql_query($selqg);
	$pplg=mysql_fetch_array($relqg);
	$tagg=$pplg['tag'];}else{$tagg="NULL:";}
	$nazione=trim($rigaqq['box']);
?>
	<div id="div_impostazioniazienda">
<form name="stati" method="post">
<input type="hidden" name="idq" value="<?php echo $idc;?>" />
<select name="nomestatoq">
<option value="<?php echo $nomestato;?>" selected="selected">Tag: <?php echo $tagg;?></option>
<?php
listacsstag();?>
</select><br />
<?php 
	$tempbox=explode(";", $nazione);
	$y=count($tempbox);
for($ij=0; $ij<($y-1); $ij++){
list($opz[$ij],$val[$ij])=explode(":",$tempbox[$ij]);
		echo "<select name=\"opz[]\"><option value=\"$opz[$ij]\" selected=\"selected\">Opzione -> $opz[$ij]</option><option value=\"\">NULL.</option>";
		listacsstagopz();
		echo "</select><select name=\"val[]\"><option value=\"$val[$ij]\" selected=\"selected\">Valore -> $val[$ij]</option><option value=\"\">NULL.</option>";
		listacsstagvalopz($opz[$ij]);
		echo "</select><input type=\"text\" name=\"val_man[]\" /><br />";}?>
		<input type="submit" name="modd" value="Conferma Modifica" class="tasto" /><br /><br />
<select name="opzn">
<option value="" selected="selected">Seleziona un Opzione </option>
<?php
listacsstagopz();?>
</select>
<select name="valn">
<option value="" selected="selected">Seleziona un Valore </option>
<?php
listacsstagval();?>
</select><input type="text" name="val_mann" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Inserisci Valore':this.value;"  value="Inserisci Valore" />
<input type="submit" name="amodd" value="Aggiungi Opzione" class="tasto" /></form></div><br /><br />
<?php
}}else{
$idn=$_POST['idq'];
$ko="SELECT * FROM css WHERE id='$idn'";
$rko=mysql_query($ko);
$riko=mysql_fetch_array($rko);
$css_arr_val=$riko['box'];
$nomestaton=$_POST['nomestatoq'];
$opzn=$_POST['opzn'];
$valn=$_POST['valn'];
$valmann=$_POST['val_mann'];
if(strlen($opzn)>0){
if(strlen($valn)>0){
if((strlen($valmann)>0)and($valmann!=="Inserisci Valore")){
$boxn=$css_arr_val." ".$opzn.": ".$valn." ".$valmann."; ";}else{$boxn=$css_arr_val." ".$opzn.": ".$valn."; ";}}
else{$boxn=$css_arr_val." ".$opzn."; ";}}else{$boxn=$css_arr_val;}
$qumn="UPDATE ".$table." SET tag_id='$nomestaton', box='$boxn' WHERE id='$idn'";
$requn=mysql_query($qumn);
if($requn){
echo "Opzione allo Stile Pagina aggiunta con successo.<br /><br /><a href=\"" . $_SERVER['PHP_SELF'] . "\">Clikka per aggiornare..</a>";}
}}else{
$idq=$_POST['idq'];
$nomestatoq=$_POST['nomestatoq'];
$opzq=$_POST['opz'];
$valq=$_POST['val'];
$valmanq=$_POST['val_man'];
$c=count($opzq);
$v=count($valq);
$b=count($valmanq);
for($i=0; $i<$c; $i++){
	for($i=0; $i<$v; $i++){
		for($i=0; $i<$b; $i++){
		if(strlen($opzq[$i])>0){
		if(strlen($valmanq[$i])>0){
		$riga_opzval[$i]="$opzq[$i]: $valq[$i] $valmanq[$i]; ";}else{$riga_opzval[$i]="$opzq[$i]: $valq[$i]; ";}}else{$riga_opzval[$i]="";}}}}
	$boox=implode("",$riga_opzval);
$qum="UPDATE ".$table." SET tag_id='$nomestatoq', box='$boox' WHERE id='$idq'";
$requ=mysql_query($qum);
if($requ){
echo "Lo Stile Pagina selezionato è stato aggiornato con successo.<br /><br /><a href=\"" . $_SERVER['PHP_SELF'] . "\">Clikka per aggiornare..</a>";}}
	if(!isset($_POST['new'])){
?>
<div id="div_impostazioniazienda">
<form name="stati" method="post">
<select name="nomestato">
<option value="" selected="selected">Seleziona un Tag </option>
<?php
listacsstag();?>
</select>
<select name="opzz">
<option value="" selected="selected">Seleziona un Opzione </option>
<?php
listacsstagopz();?>
</select>
<select name="vall">
<option value="" selected="selected">Seleziona un Valore </option>
<?php
listacsstagval();?>
</select><input type="text" name="vall_man" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Inserisci Valore':this.value;"  value="Inserisci Valore" /><br />
<input type="submit" name="new" value="Aggiungi" class="tasto" /><br /><br /><input type="submit" name="esegui" value="Esegui" class="tasto" /><input type="reset" name="reset" value="Reset" class="tasto" /><br /><br />
<table id="impostazioniazienda">
<tr><th>Id</th>
<th>Tag</th>
<th>Contenuto</th>
<th>Modifica</th>
<th>Elimina</th></tr>
<?php
$q="SELECT * FROM ".$table."";
$res=mysql_query($q);
if(!$res){
$sqlct = "CREATE TABLE IF NOT EXISTS `".$table."` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
 `tag_id` INT( 11 ) NOT NULL ,
 `box` LONGTEXT NOT NULL ,
PRIMARY KEY (  `id` )
) ENGINE = MYISAM DEFAULT CHARSET = latin1";
mysql_query($sqlct);
	echo "La Tabella $table è stata creata.";
	header("refresh: 2; url=" . $_SERVER['PHP_SELF'] . "");}
while($riga=mysql_fetch_array($res)){
	$id=$riga['id'];
    $nomestato=$riga['tag_id'];
	if($nomestato>0){
	$selq="SELECT * FROM css_tag WHERE id='$nomestato'";
	$relq=mysql_query($selq);
	$ppl=mysql_fetch_array($relq);
	$tag=$ppl['tag'];}else{$tag="NULL:";}
	$nazione=$riga['box'];
	$idx=codifica_id($id);
	echo "<tr><td>$idx</td><td>$tag</td><td>$nazione</td><td><input name=\"mod\" type=\"radio\" value=\"$id\" /></td><td><input name=\"del[]\" type=\"checkbox\" value=\"$id\" /></td></tr>";}}
	else{
	$nomestato=$_POST['nomestato'];
	$opzz=$_POST['opzz'];
	$vall=$_POST['vall'];
	$vallman=$_POST['vall_man'];
	$qc="SELECT * FROM ".$table." WHERE tag_id='$nomestato'";
	$rces=mysql_query($qc);
	if($rces){
	$rcrig=mysql_fetch_array($rces);
	$rcbox=$rcrig['box'];
	if(strlen($opzz)>0){
	if(strlen($vall)>0){
	if((strlen($vallman)>0)and($vallman!=="Inserisci Valore")){
	$nrcbox=$rcbox." ".$opzz.":".$vall." ".$vallman."; ";}else{$nrcbox=$rcbox." ".$opzz.":".$vall."; ";}}
	else{if((strlen($vallman)>0)and($vallman!=="Inserisci Valore")){
	$nrcbox=$rcbox." ".$opzz.":".$vallman."; ";}else{$nrcbox=$rcbox." ".$opzz.":";}}}else{$nrcbox=$rcbox;}
	$qtc="UPDATE ".$table." SET box='$nrcbox' WHERE tag_id='$nomestato'";
$rqtc=mysql_query($qtc);
	if($rqtc){echo "Lo Stile Pagina selezionato era gia presente in elenco. I nuovi valori sono stati aggiunti al vecchio Stile Pagina.<br /><br /><a href=\"" . $_SERVER['PHP_SELF'] . "\">Clikka per aggiornare..</a>";}}
	else{if(strlen($opzz)>0){
	if(strlen($vall)>0){
	if((strlen($vallman)>0)and($vallman!=="Inserisci Valore")){
	$nazione=$opzz.":".$vall." ".$vallman."; ";}else{$nazione=$opzz.":".$vall."; ";}}
	else{if((strlen($vallman)>0)and($vallman!=="Inserisci Valore")){
	$nazione=$opzz.":".$vallman."; ";}else{$nazione=$opzz.":";}}}else{$nazione="";}
	$qmo="INSERT INTO ".$table." (tag_id, box) VALUE ('$nomestato', '$nazione')";
	mysql_query($qmo) or die (mysql_error());
	echo "Nuovo Stile Pagina inserito in elenco con successo.<br /><br /><a href=\"" . $_SERVER['PHP_SELF'] . "\">Clikka per aggiornare..</a>";}}
?>
</table></form></div><br /><br /><br />
<?php 
include ("../../matrix/piedepagina.php") ?>
 
in effetti sembra che tu ti sia dimenticato di aprire un identificatore php:

PHP:
<?php
function listacsstagvalopz($opz){
trim($opz);
$sa="SELECT * FROM css_opz WHERE tag_opz='$opz'";
$rsa=mysql_query($sa);
$risa=mysql_fetch_array($rsa);
$boxidval=$risa['val_id'];
$tempid=explode(" - ", $boxidval);
$y=count($tempid);
for($i=0; $i<$y; $i++){
$po="SELECT * FROM css_val WHERE id='$tempid[$i]'";
$rpo=mysql_query($po);
while($pol=mysql_fetch_array($rpo)){
echo "<option value=\"". $pol['tag_val'] ."\">". $pol['tag_val'] ."</option>";}}}
?>

$idm=$_POST['mod'];
$qq="SELECT * FROM ".$table." WHERE id='$idm'";
$resqq=mysql_query($qq);
$rigaqq=mysql_fetch_array($resqq);
$idc=$rigaqq['id'];
$nomestato=$rigaqq['tag_id'];
if($nomestato>0){$selqg="SELECT * FROM css_tag WHERE id='$nomestato'";
$relqg=mysql_query($selqg);
$pplg=mysql_fetch_array($relqg);
$tagg=$pplg['tag'];}else{$tagg="NULL:";}
$nazione=trim($rigaqq['box']);
?>
<div id="div_impostazioniazienda">
<form name="stati" method="post">
<input type="hidden" name="idq" value="<?php echo $idc;?>" />
<select name="nomestatoq">
<option value="<?php echo $nomestato;?>" selected="selected">Tag: <?php echo $tagg;?></option>
<?php
listacsstag();?>
</select><br />
<?php 
$tempbox=explode(";", $nazione);
$y=count($tempbox);
for($ij=0; $ij<($y-1); $ij++){
list($opz[$ij],$val[$ij])=explode(":",$tempbox[$ij]);
echo "<select name=\"opz[]\"><option value=\"$opz[$ij]\" selected=\"selected\">Opzione -> $opz[$ij]</option><option value=\"\">NULL.</option>";
listacsstagopz();
echo "</select><select name=\"val[]\"><option value=\"$val[$ij]\" selected=\"selected\">Valore -> $val[$ij]</option><option value=\"\">NULL.</option>";
listacsstagvalopz($opz[$ij]);
echo "</select><input type=\"text\" name=\"val_man[]\" /><br />";}?>
<input type="submit" name="modd" value="Conferma Modifica" class="tasto" /><br /><br />

o meglio ne hai chiuso uno di troppo :confused:

nessuna idea sul perche nel ciclo riponde bene solo con la prima variabile?
 
ciao
se non ho capito male è la funzione listacsstagvalopz che dovrebbe crearti i valori delle option, giusto?
se è così per fare una verifica metti
PHP:
<?php
function listacsstagvalopz($opz){
	trim($opz);
	$sa="SELECT * FROM css_opz WHERE tag_opz='$opz'";
	$rsa=mysql_query($sa);
	$risa=mysql_fetch_array($rsa);
	$boxidval=$risa['val_id'];
	//qui poi togli*****
	echo "<pre>";
	var_dump($boxidval);
	echo "</pre>";
	//*****
	$tempid=explode(" - ", $boxidval);
    $y=count($tempid);
	for($i=0; $i<$y; $i++){
        $po="SELECT * FROM css_val WHERE id='$tempid[$i]'";
        $rpo=mysql_query($po);
        while($pol=mysql_fetch_array($rpo)){
        	echo "<option value=\"". $pol['tag_val'] ."\">". $pol['tag_val'] ."</option>";
		}
	}
}
?>
e riporta cosa ti da il var_dump, poi vediamo il resto

p.s.
non quotate le discussioni non serve e rende più difficile la lettrura della discussione
 
ho inserito il comando nella funzione xo nn vedo riscontro di nessun genere sai.. sempre stesso problema trova corrispondenza solo la prima select che genera le altre sono vuote( solo con le option di default ). io ero propenso a cercare un errore nei ciclo for che richiamano la funzione ma nn capisco >.<"
 
ciao
vedo una cosa
PHP:
<?php
function listacsstagvalopz($opz){
    trim($opz); 
	//....
}
?>
prova a mettere
PHP:
<?php
function listacsstagvalopz($opz){
    $opz=trim($opz); 
	//....
}
?>

edit, stavo saltando.
se non ti da alcun riscontro pare che la funzione non sia richiamata, altrimenti come minimo ti darebbe NULL
 
Ultima modifica:
Risolto!!!

beccato!! THX mille era li l'errore :D

come era scritto in precedenza cosa cambiava nello specifico? trim nn si sarebbe cmq dovuto associare alla funzione usata dopo il comando? kiedo solo per capire mejo ed evitare altri erroracci simili!!

CMQ MITICO ;) ci ho passato 2gg per crearlo e cercare di farlo girare!!

cmplimentoni a Mr.WebMaster e borgo italia!!
 
ciao
la funzione trim RESTITISCE una stringa 'trimmata', se non la fai restituire non ottieni nulla
fai questa piccola prova
PHP:
<?php
$stringa=" a b c d ";
trim($stringa);
var_dump($stringa);//output string (9) " a b c d "
$stringa=trim($stringa);
var_dump($stringa);//output string (7) "a b c d"
?>
 

Discussioni simili