- Home
- Categorie
- Coding e Sistemistica
- PHP
- Passaggio di variabili e lettura array
-
Passaggio di variabili e lettura array
Ciao,
sono nuova e spero di scrivere nella sezione giusta. Il mio problema che mi fa impazzire da due giorni è questo.Ho una form con degli input type="radio" che funziona in questo modo:while ($row = mysql_fetch_array($query)){
echo "
<input type="hidden" name="id" value="$row[adv_id]">
<td class="center"><input name="aggiorna[$row[adv_id]]" type="radio" value="pag"></td>
<td class="center"><input name="aggiorna[$row[adv_id]]" type="radio" value="pub"></td>
<td class="center"><input name="aggiorna[$row[adv_id]]" type="radio" value="eli"></td>";
</table><input type="submit" name="agg" value="Aggiorna"></form>";
}dove $row[adv_id] corrisponde all'id univoco che estraggo dalla tabella.
Io vorrei che all'invio della form fossero eseguite diverse query di aggiornamento in base al valore di input type="radio" selezionato.
Questo è il codice:if (isset($_POST['agg'])) {
$azione = $_POST['aggiorna'];
$id = $_POST['id'];$ct=0;
echo "<h3>comincio il for each</h3>";
foreach($azione as $inssi){
if($azione[1] =="pub"){
$query=mysql_query("UPDATE classifads
SET pub = '1'
WHERE adv_id =$id");}
if($azione[1] =="pag"){
$query=mysql_query("UPDATE classifads
SET pag = '1'
WHERE adv_id =$id");}
if($azione[1] =="eli"){
$query=mysql_query("UPDATE classifads
SET eli = '1'
WHERE adv_id =$id");}
$ct++;}
}Il problema è che non so estrarre i singoli elementi dell'array. Se stampo l'array con:
print_r($azione);
ottengo
Array ( [199] => pag [244] => pag )ma con print $azione[1]; non viene stampato nulla.
Dove sbaglio?
Aiuto!!!:x
-
Ciao jecaprofe e benvenuto sul forum GT,
supponendo che il form sia di tipo (method) POST e che $row[adv_id] valga ad esempio 37, il risultato del *radio button *lo hai in:
$_POST['aggiorna']37];
pertanto, avendo posto:
if (isset($_POST['agg'])) {
$azione = $_POST['aggiorna'];
$id = $_POST['id'];in $azione37] hai memorizzato il tuo valore (pag, pub o eli, nell'esempio). Probabilmente il tuo errore è nell'aver messo degli ***if ***del tipo:
if($azione1] =="pag"){
mentre avresti dovuto inserire come indice dell'array $azione il numero 37, oppure più in generale:
if($azione$row[adv_id]] =="pag"){
Spero di aver capito (e risolto :D) il problema.
-
OK!!!!!
Funziona, però mi resta un problema che non capisco. Ho modificato in questo modo l'if$id = $_POST['id'];
echo "ID $id";
if($azione[$id] =="pub"){
$query="UPDATE classifads
SET pub = '1'
WHERE adv_id =$id";
echo "$query<br />";
echo "modifica pubblicazione";
}
....Però se il valore di id è 23 mi esegue due volte la query con lo stesso id, mentre dovrebbe eseguire la query per ogni diverso ID
Sono stata un po' contorta?:?