• User Newbie

    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


  • User Attivo

    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.

    :ciauz:


  • User Newbie

    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?:?