Visualizzazione dei risultati da 1 a 2 su 2

Discussione: query update

  1. #1

    query update

    salve a tutti, sono nuovo e ho appena finito di leggere la parte riguardante come fare per modificare dei campi di una tabella del database nella guida sul php-mysql.

    l'esempio che è presente nella guida permette di creare un file.php che mi permette di modificare i dati che ho inserito al momento dell'iscrizione. riporto il codice per maggiore chiarezza.
    l'ho semplificato perchè il mio dubbio prevede un file dove io devo modificare i dati di un solo campo, esempio il campo attività.
    Codice PHP:
    <?php
    // richiamo il file di configurazione
    require 'config.php';

    // richiamo lo script responsabile della connessione a MySQL
    require 'connect.php';

    if(
    $_POST && isset($_GET['id']))
    {
        
    aggiorna_record();
    }
    elseif(isset(
    $_GET['id']))
    {
        
    mostra_record();
    }
    else
        
    mostra_lista();

    function 
    mostra_lista()
    {
        
    // mostro un eventuale messaggio
        
    if(isset($_GET['msg']))
            echo 
    '[b]'.htmlentities($_GET['msg']).'[/b]

    '
    ;

        
    // preparo la query
        
    $query "SELECT nome FROM prova_utenti";

        
    // invio la query
        
    $result mysql_query($query);

        
    // controllo l'esito
        
    if (!$result) {
            die(
    "Errore nella query $query: " mysql_error());
        }

        echo 
    '
        <table border="1">
            <tr>
                <th>Nome</th>
                <th></th>
            </tr>'
    ;

        while (
    $row mysql_fetch_assoc($result))
        {
            
    $nome htmlspecialchars($row['nome']);

            
    // preparo il link per la modifica dei dati del record
            
    $link $_SERVER['PHP_SELF'] . '?id=' $row['id'];

            echo 
    "<tr>
                    <td>
    $nome</td>
                    <td><a href=\"
    $link\">modifica</a></td>
                </tr>"
    ;
        }

        echo 
    '</table>';

        
    // libero la memoria di PHP occupata dai record estratti con la SELECT
        
    mysql_free_result($result);

        
    // chiudo la connessione a MySQL
        
    mysql_close();
    }

    function 
    aggiorna_record()
    {
        
    // recupero i campi di tipo "stringa"
        
    $nome      trim($_POST['nome']);

        
    // verifico se devo eliminare gli slash inseriti automaticamente da PHP
        
    if(get_magic_quotes_gpc())
        {
            
    $nome      stripslashes($nome);

        }

        
    // effettuo l'escape dei caratteri speciali per inserirli all'interno della query
        
    $nome      mysql_real_escape_string($nome);

        
    // recupero gli altri campi del form
        
    $attivita   intval($_POST['attivita']);

        
    $id intval($_GET['id']);

        
    // verifico la presenza dei campi obbligatori
        
    if(!$nome)
        {
            
    $messaggio urlencode("Non hai inserito il nome");
            
    header("location: $_SERVER[PHP_SELF]?id=$id&msg=$messaggio");
            exit;
        }

        
    // preparo la query
        
    $query "UPDATE prova_utenti SET
                    nome = '
    $nome',
                    attivita = 
    $attivita,
                    WHERE id = 
    $id";

        
    // invio la query
        
    $result mysql_query($query);

        
    // controllo l'esito
        
    if (!$result) {
            die(
    "Errore nella query $query: " mysql_error());
        }

        
    // chiudo la connessione a MySQL
        
    mysql_close();

        
    $messaggio urlencode('Aggiornamento effettuato con successo');
        
    header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
    }

    function 
    mostra_record()
    {
        
    // mostro un eventuale messaggio
        
    if(isset($_GET['msg']))
            echo 
    '[b]'.htmlentities($_GET['msg']).'[/b]

    '
    ;

        
    $id intval($_GET['id']);

        
    // preparo la query
        
    $query "SELECT nome,attivita FROM prova_utenti WHERE id = $id";

        
    // invio la query
        
    $result mysql_query($query);

        
    // controllo l'esito
        
    if (!$result) {
            die(
    "Errore nella query $query: " mysql_error());
        }

        
    // controllo che la SELECT abbia restituito un record
        // l'id passato via GET potrebbe essere stato manipolato
        
    if(mysql_num_rows($result) != 1) {
            die(
    "l'ID passato via GET è errato");
        }

        list(
    $nome,$attivita) = mysql_fetch_row($result);

        
    $nome      htmlspecialchars($nome);

        
    ?>
        <form name="form_registrazione" method="post" action="">
          <label>nome:
          <input name="nome" type="text" value="<?echo $nome?>" />
          </label>
          


          


            <label>attivit&agrave;:
            <select name="attivita">
              <option value="0">:: seleziona ::</option>
              <option value="1" <?if($attivita==1) echo 'selected="selected"'?>>studente</option>
              <option value="2" <?if($attivita==2) echo 'selected="selected"'?>>lavoratore</option>
              <option value="3" <?if($attivita==3) echo 'selected="selected"'?>>disoccupato</option>
            </select>
            </label>
          </p>
          


            <input name="invia" type="submit" value="Invia" />
          </p>
        </form>
        <?
    }
    ?>
    vorrei sapere però, se io volessi modificare il campo attività. ma solo in determinati casi, come faccio?
    mi spiego meglio.
    il mio intento sarebbe quello di inserire una variabile numerica (che per esempio vale 500) e ogni utente possiede già un'altra variabile numerica, che varia a seconda dell'utente.

    a questo punto vorrei verificare che:
    -se l'utente nel campo attività è impostato come studente possa modificarlo solo con LAVORATORE. però la modifica sia possibile solo dopo che ho controllato che che la variabile numerica dell'utente sia maggiore della variabile numerica 500. altrimenti dia errore con messaggio visualizzato "variabile numerica insufficiente".
    -se l'utente nel campo attività è impostato come lavoratore possa modificarlo solo con DISOCCUPATO. e la modifica sia possibile solo dopo che ho controllato che che la variabile numerica dell'utente sia maggiore della variabile numerica 500. altrimenti dia errore con messaggio visualizzato "variabile numerica insufficiente".
    - se l'utente nel campo attività è impostato come DISOCCUPATO, non sia possibile fare nessuna modifica e mi dia un messaggio "modificato al massimo".
    - nei casi in cui uno studente voglia passare a disoccupato o altri passaggi non citati sopra mi dia un messaggio di errore "operazione non consentita".

    è possibile creare un codice del genere?

    grazie mille per la vostra pazienza e disponibilità

    quindi

  2. #2
    ho provato a riscrivere il codice inserendo switch:
    riporto la parte della funzione aggiorna

    premetto che var_s è un int(11) mentre var_t è tinyint(4)
    Codice PHP:
    {
        
    //definisco le variabili nuove
        
    $c2 250000;
        
    $c3 300000;
        
    $c4 350000;

        
    // recupero gli altri campi
        
    $vars     intval($_POST['vars]);
        $vart   = intval($_POST['
    vart']);

        $id = intval($_GET['
    id']);

        //controllo i vari casi
        switch ($vart) {
            case '
    0':
                if ($vars >= $c2)  {
                            $query = "UPDATE db_prova SET
                                        vars = '
    $vars $c2'
                                        vart = '
    1'
                                        WHERE id = $id";
                 } else  { echo ' 
    non consentito ';  }
            break;
            case '
    1':
                if ($vars >= $c3)  {
                            $query = "UPDATE db_prova SET
                                        vars = '
    $vars $c3'
                                        vart = '
    2'
                                        WHERE id = $id";
                 } else  { echo ' 
    non consentito';  }
            break;
            case '
    2':
                if ($vars >= $c4)  {
                            $query = "UPDATE db_prova SET
                                        vars = '
    $vars $c4'
                                        vart = '
    3'
                                        WHERE id = $id";
                 } else  { echo ' 
    non consentito ';  }
            break;
            case '
    3':
                     echo ' 
    modificato al massimo ' ; 
            break;
        }    
        // invio la query
        $result = mysql_query($query);

        // controllo l'
    esito
        
    if (!$result) {
            die(
    "Errore nella query $query: " mysql_error());
        }

        
    // chiudo la connessione a MySQL
        
    mysql_close();

        
    $messaggio urlencode('Aggiornamento effettuato con successo');
        
    header("location: [url]http://ecc[/url]");//redirect
        
    exit;

    solo che nn funziona l'aggiornamento

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.