Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [PHP] ciclo update con radiobutton

    la ricerca è disabilitata quindi apro un nuovo 3D

    problema:
    ho tre categorie, solo una puo' avere lo stato a 1, le altre due saranno necessariamente 0

    con un ciclo le stampo con affianco il radiobutton
    codice:
    $sql = "select * from categorie ";
    $query = mysql_query ($sql, $db);
    while($rigo = mysql_fetch_array ($query)) {
    $id = $rigo["id"];
    $categoria = $rigo ["categoria"];
    $stato = $rigo["stato"];
    if ($stato != "1"){
    echo"<input type= \"radio\" name=\"stato\" value=\"0\" >";
    }
    else {
    echo"<input type= \"radio\" name=\"stato\" value=\"1\" checked>";
    }
    echo" $categoria
    ";
    }
    quando modifico la categoria a cui attribuisco il valore 1 devo quindi assegnare 0 alle altre (e non limitarmi ad aggiornare solo quella modificata), per fare cio' mi dovrebbe servire un UPDATE in un ciclo, giusto?

    qual'è la sintassi corretta?

  2. #2

  3. #3
    Originariamente inviato da troglos
    L'avevo letto prima... l'ho riletto ora ... continuo a capirci niente...

    sicuramente e' colpa mia... dillo in parole piu' semplici...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    ci riprovo


    -id
    -categoria
    -stato

    mettiamo che ho tre record, solo uno di questi puo' avere stato = 1, gli altri devono automaticamente passare a 0

    posso modificare il valore dello stato tramite radio button, ma mi sono incartato

    secondo me quando clicco modifica dovrei settare tutti i record a 0, e poi dare il valore 1 solo al record selezionato col radio button, ma non riesco a passare l'id di quest'ultimo


    spero di essere stato un po' piu' chiaro

  5. #5
    Capisci la confusione ... parlavi di un form per update ma avevi postato la query select.... personalmente eccello in fantasia al punto che molti non mi capiscono... ma non era sufficiente per capire il tuo post.

    Intanto isola il problema... scomponilo nelle parti essenziali.

    Il form dici non da problemi, pero' bisognerebbe capire come passi i dati per impostare la query update. Suggerimento... All'ingresso della pagina di aggiornamento mettici la stampa del $_POST (print_r() ) e vedi come sono i dati che ricevi. In base a questi si impostera' la query di aggiornamento..

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    grazie per la pazienza

    adesso ottengo sempre
    codice:
    Array ( [stato] => 1 [cat_id] => 1 [modifica_ok] => modifica_ok [submit] => Modifica )
    perchè passo sempre l'id della stessa categoria (tramite l'hidden, invece voglio passare l'id solo di quello selezionato), con il seguente codice

    codice:
    <form ....>
    $sql = "select * from categorie ";
    $query = mysql_query ($sql, $db);
    
    while($rigo = mysql_fetch_array ($query)) {
    $id = $rigo["id"];
    $categoria = $rigo ["categoria"];
    $stato = $rigo["stato"];
    
    if ($stato != "1"){ echo"<input type= \"radio\" name=\"stato\" value=\"0\" >";  }
    else { echo"<input type=\"radio\" name=\"stato\" value=\"1\" checked><input type=\"hidden\" name=\"cat_id\" value=\"$id\" > "; }
    echo" $categoria 
    ";
    }
    </form>

    questa è la parte dove metto tutto a zero e vorrei settare a 1 solo il record selezionato col radio button:

    codice:
    $cat_id = $_POST["cat_id"];
    $sql = "UPDATE categorie SET stato = '0' ";
    $query = mysql_query ($sql, $db) or die (mysql_error());
    
    $sql = "UPDATE categorie SET stato='1' WHERE id ='$cat_id' ";
    $query = mysql_query ($sql, $db) or die (mysql_error());

  7. #7
    Guarda che alla fine il tuo problema e' banale...

    devi recuperare i dati con l'array POST.

    WHERE id ='$_POST[cat_id]' ";

    prima di print_r metti il tag pre cosi' ti formatta in modo piu' leggibile l'array...

    echo "<pre>";
    print_r($_POST);
    echo "</pre>";


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    ma io avevo gia'
    $cat_id = $_POST["cat_id"];
    $sql = "UPDATE categorie SET stato='1' WHERE id ='$cat_id' ";

    il problema è che in questo modo, visto che ottengo i radiobutton e le categorie in un ciclo, io passo sempre l'ultimo id (il 3), e non quello che decido di modificare cliccando su un nuovo radiobutton (ad esempio 1)



    eppure deve essere una fesseria farlo...

  9. #9
    Azz... non avevo mica capito... il problema.

    "<input type=\"radio\" name=\"stato\" value=\"$id\" checked>

    con lo stesso nome il type radio passa solo il valore di quello checcato. E quindi quello che spunti passa il valore dell'id da settare a uno....

    quindi lo becchi con

    WHERE id ='$_POST[stato]' ";

    cambia il nome del radio se name="stato" non ti piace.

    Verifica nella stampa del POST che sia proprio cosi'...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    lo provo domani al lavoro
    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.