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

Discussione: [php-mysql] UPDATE

  1. #1
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822

    [php-mysql] UPDATE

    dovrei fare un aggiornamento di una tabella dopo l'invio di un form contentente una pagina generata dinamicamente.
    l'utente deve avere la possibiltà di aggiornare con valore 0 o 1 il campo ammesso spuntando o meno il checkbox del record
    una parte della tabella:
    Codice PHP:
    <form action="azione.php" method="post">
    <?
    while ($dati mysql_fetch_array($query))
    {

    $checked = ($dati['ammesso']== 1) ? "checked" "";
    echo 
    "<tr><td>{$dati['id']}</td>";
    echo 
    "<td<input type="checkbox" name="checkbox[]" value="<?=$row['id']?>" $checked ></td>";
    echo "<td>{$dati['name']}</td></tr>";
    }
    echo "</table>
    ";
    }
    echo "<input name'submit' type='submit' value='aggiorna'></form>";
    nella pagina azione.php

    Codice PHP:

    foreach ($_POST['checkbox'] as $nome=>$value) {
     
    mysql_query("UPDATE tabella SET ammesso='1' WHERE id=".$value) or die();

    solo che in questo modo si aggiornano a 1 solo i record spuntati.

    come faccio ad aggiornare a 0 il campo ammesso dove i checkbox NON sono spuntati? (la cosa contraria)

    grazie per l'aiuto.

  2. #2
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822

    Re: [php-mysql] UPDATE

    volevo aggiungere che la pagina generata dinamicamente include anche la paginazione dei risultati.

  3. #3
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822

    Re: Re: [php-mysql] UPDATE

    ops partito doppio post.

  4. #4
    Da come lasci intendere devi settare a uno solo i campi definiti dallo user e tutti gli altri devono essere a zero. Diciamo una condizione dinamica del campo settato ad uno.

    Molto semplicemente farei prima un update che mi resetti tutti i campi ponendoli a zero e poi un update che mi setti ad uno solo i campi indicati.
    Codice PHP:
    mysql_query("UPDATE tabella SET ammesso='0' ") or die(mysql_error());
    foreach (
    $_POST['checkbox'] as $nome=>$value) {
     
    mysql_query("UPDATE tabella SET ammesso='1' WHERE id=".$value) or die();


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

  5. #5
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    [supersaibal]Originariamente inviato da piero.mac
    Da come lasci intendere devi settare a uno solo i campi definiti dallo user e tutti gli altri devono essere a zero. Diciamo una condizione dinamica del campo settato ad uno.

    Molto semplicemente farei prima un update che mi resetti tutti i campi ponendoli a zero e poi un update che mi setti ad uno solo i campi indicati.
    Codice PHP:
    mysql_query("UPDATE tabella SET ammesso='0' ") or die(mysql_error());
    foreach (
    $_POST['checkbox'] as $nome=>$value) {
     
    mysql_query("UPDATE tabella SET ammesso='1' WHERE id=".$value) or die();

    [/supersaibal]
    avevo infatti specificato che in questo modo aggiorno solo a 1 il campo ammesso solo nei record dove vengono spuntati i checkbox.

    il prob è che l'utente deve essere in grado di aggiornarsi i record a 0 o a 1 in una volta sola.

    in questo modo (con la modifica che mi hai postato) aggiornerebbe TUTTI i campi della tabella a 0 giusto? il problema è che i risultati sono paginati, quindi l'utente scegliendo di visualizzare solo tot record per pagina finirebbe poi per azzerare TUTTI i valori del camop ammesso a 0 e aggiornare a 1 quelli spuntati.
    il prbloblema da risolvere era questo. riesci ad aiutarmi anche stavolta?
    grazie.

  6. #6
    La modifica che ti ho proposto mette il campo a zero su tutta la tabella, poi setta a uno quelli richiesti.

    Equivale a fare quel che dici tu.... mettere a 1 i richiesti e zero agli altri. Se si tratta di dati paginati e quindi ripetitivi e devi visualizzare solo quelli con il campo a uno.... nulla cambia...

    Forse la cosa va impostata diversamente. Una volta definito i record da vedere devi agire su LIMIT e non piu' sulla flag per la loro visualizzazione.

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

  7. #7
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    ora faccio delle prove...
    mi faresti un esempio sul discorso del LIMIT ?
    grazie.

  8. #8
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    se deseleziono tutti i checkbox, mi visualizzaa questo errore:

    Warning: Invalid argument supplied for foreach() in C:\WWW\wwwroot...\azione.php on line 15

    sarà perchè $_POST['checkbox'] è vuoto?

  9. #9
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    non funge per il discorso che setta a 0 il campo "ammesso" di tutta la tabella ! il problema è la paginazione, che non posso evitare..

    datemi una mano please!

    ma non esiste un modo per aggiornare a 0 il campo ammesso dell'id n
    e a 1 il campo ammesso dell' id n ??

  10. #10
    [supersaibal]Originariamente inviato da Base
    non funge per il discorso che setta a 0 il campo ammesso di tutta la tebella ! il problema è la paginazione, che non posso evitare..

    datemi una mano please! [/supersaibal]
    Si, il warning lo ricevi perche' e' inconsistente $_POST['checkbox'] , ma questo sarebbe facilmente evitabile con un ISSET(). Il tuo problema e' la paginazione il discorso e' piu' complesso. Vedi tra le varie pillole ed anche sul forum di guidozz c'e' una funzione aggiornata della sua pillola sulla paginazione.

    Ma ti conviene aprire un post dove evidenzi la paginazione.... e non l'UPDATE....


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

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.