Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    PHP undefined variable , isset e relative problematiche

    Ciao ragazzi, ho un esercizio php da risolvere per casa. A scuola me lo hanno spiegato in classe non in laboratorio. Lo sto facendo al pc ma ho un sacco di problemi e di errori undefined variable
    La pagina php pesca i dati da una form e li deve inserire in un db.
    Questo è il codice che ho fatto relativo alla pagina php
    codice:
    <html>
    <head>
    <meta charset="utf-8"/>
    <title>registraKsComune</title>
    
    
    </head>
    
    
    <body>
    <?php
    
    
        //raccologo i dati dalla form
        if(isset($REQUEST["cognome"]) && isset($REQUEST["nome"])&& isset($REQUEST["elencoComuni"])&& isset($REQUEST["user"])&& isset($REQUEST["psw"]))
        {
        $cognome=$_REQUEST["cognome"];
        $nome=$_REQUEST["nome"];
        $ksComune=$_REQUEST["elencoComuni"];
        $user=$_REQUEST["user"];
        $password=$_REQUEST["psw"];
        
        }
        
        //connessione server e connessione DB
        
        $conn=mysql_connect("localhost","root","");
        
        if(!$conn)
        {
        echo "server al momento non disponibile";
        echo "<a href='inserimentoCombo.php'>cliccare qui</a>";
        }
    
    
    
    
        if (!mysql_select_db("utenti"))
        {
        echo "Impossibile aprire db utenti";
        }
        
        // ora lancio la query
        
        if(isset($REQUEST["cognome"]) && isset($REQUEST["nome"])&& isset($REQUEST["elencoComuni"])&& isset($REQUEST["user"])&& isset($REQUEST["psw"]))
        {
        $comando="insert * into accessi (cognome,nome,userName,password,ksComune)
        values ('$cognome', '$nome','$user','$password','$ksComune')";
        }
        
        
        if (!mysql_query($comando))
        {
        echo "Inserimento fallito <br/>";
        }
        
        // chiudo la connessione
        mysql_close($conn);
        
        print "<a href='inserimentoCombo.php'>Nuova registrazione</a>";
        
        ?>
    
    
        
    </body>
    </html>
    All'inizio non avevo tutti quegli isset, purtroppo facendo l'esercizio a scuola sul quaderno questi problemi non vengono fuori.. ma al pc si.
    Ho cercato di risolvere il problema undefined variable leggendo sul forum e ho capito che ci vanno gli issett...tuttavia li ho messi un po' a casaccio e non ho capito bene il problema. Grazie se mi date una mano a capire bene come funziona.
    Ora ho un solo errore
    undefined variable comando
    Non riesco a risolvere

    Grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,501
    Il problema deve essre in queste righe
    Codice PHP:
    if( isset($REQUEST["cognome"]) && isset($REQUEST["nome"])&& isset($REQUEST["elencoComuni"])&& isset($REQUEST["user"])&& isset($REQUEST["psw"]) )
    {
        
    $comando="insert * into accessi (cognome,nome,userName,password,ksComune)
        values ('
    $cognome', '$nome','$user','$password','$ksComune')";
    }

    if (!
    mysql_query($comando))
    {
        echo 
    "Inserimento fallito <br/>";

    Nello specifico, se $comando risulta non definita, è perché non entri nel primo if e quindi non viene inizializzata nessuna variabile $comando.
    Ora devi capire perché non entri nell'if.
    Intanto io invece di $REQUEST, che in realtà dovrebbe essre $_REQUEST con l'underscore, userei $_POST oppure $_GET a seconda del metodo che hai definito nel form (ma suppongo post).
    Sostituisci $REQUEST con $_POST se invii i dati in post oppure $_GET se usi get.

    Anche usando il giusto array superglobale ($_POST o $_GET), se nel primo if non ci entri, avrai sempre l'errore, quindi il secondo if lo metterei dentro al primo, così viene eseguito solo se $comando viene inizializzata.

  3. #3
    grazie, ho modificato cosi ma non funziona, non riesco a inserire dati nel db

    codice:
    <html><head>
    <meta charset="utf-8"/>
    <title>registraKsComune</title>
    
    
    </head>
    
    
    <body>
    <?php
    
    
        //raccologo i dati dalla form
    
    
        
        if(isset($_POST["cognome"]) && isset($_POST["nome"])&& isset($_POST["elencoComuni"])&& isset($_POST["user"])&& isset($_POST["psw"]))
        {
        $cognome=$_POST["cognome"];
        $nome=$_POST["nome"];
        $ksComune=$_POST["elencoComuni"];
        $user=$_POST["user"];
        $password=$_POST["psw"];
        
        }
        
        //connessione server e connessione DB
        
        $conn=mysql_connect("localhost","root","");
        
        if(!$conn)
        {
        echo "server al momento non disponibile";
        echo "<a href='inserimentoCombo.php'>cliccare qui</a>";
        }
    
    
    
    
        if (!mysql_select_db("utenti"))
        {
        echo "Impossibile aprire db utenti";
        }
        
        // ora lancio la query
        
        if(isset($_POST["cognome"]) && isset($_POST["nome"])&& isset($_POST["elencoComuni"])&& isset($_POST["user"])&& isset($_POST["psw"]))
        {
        $comando="insert * into accessi (cognome,nome,userName,password,ksComune)
        values ('$cognome', '$nome','$user','$password','$ksComune')";
        
        if (! mysql_query($comando))
        {
        echo "Inserimento fallito <br/>";
        }
        }
        
    
    
        
        // chiudo la connessione
        mysql_close($conn);
        
        print "<a href='inserimentoCombo.php'>Nuova registrazione</a>";
        
        ?>
    
    
        
    </body>
    </html>
    NON MI inserisce nulla nel db mi da inserimento fallito
    Questa è la pagina di inserimento

    codice:
    <html>
    <head>
    <meta charset="utf-8"/>
    <title>inserimentoCombo</title>
    
    
    </head>
    
    
    <body>
    <?php
    
    
    
    
        $conn=mysql_connect("localhost","root","");
        // prima verifico se la connessione al server è ok
        if(!$conn)
        {
        echo "server al momento non disponibile";
        echo "<a href='inserimentoCombo.php'>cliccare qui</a>";
        
        }
    
    
        // poi verifico la connessione al database
        if (!mysql_select_db("utenti"))
        {
        echo "Impossibile aprire db utenti";
        }
        
        // ora lancio la query
        
        $comando="select * from comuni";
        $result=mysql_query($comando);
        
        ?>
    
    
        <form method="post" name="registra" action="registraKsComune.php" id="registra">
        <div style="width:45%">
        <fieldset>
        <legend align="left">inserimento</legend>
        
        <table cellpadding="5" cellspacing="5" width="45%">
        <tr>
        <td>Cognome</td>
        <td><input type="text" name="cognome" id="cognome"/></td>
        </tr>
        
        <tr>
        <td>Nome</td>
        <td><input type="text" name="nome" id="nome"/></td>
        </tr>
        
        <tr>
        <td>Comune</td>
        
        <td><select name="elencoComuni">
        <?php
            while($dati=mysql_fetch_assoc($result))
                print "<option value= '$dati[id]'>$dati[nome]</option>";
        ?>
        </td>
        </tr>
        
        <tr>
        <td>User Name</td>
        <td><input type="text" name="user" id="user"/></td>
        </tr>
        
        <tr>
        <td>Password</td>
        <td><input type="text" name="psw" id="password"/></td>
        </tr>
        
        <tr>
        <td><input type="submit" name="registra" value="registra"/></td>
        </tr>
        
        
        </table>
        
        </fieldset>
        </div>
        </form>
    
    
    
    
    
    
    </body>
    </html>
    [/code]
    Ultima modifica di reynold85; 17-12-2016 a 19:12

  4. #4
    Ciao, quando fai i controlli sulle variabili prima dell'esecuzione della query prova ad inserire la variabile in cui hai memorizzato i valori $_POST. Ad esempio $cognome.

  5. #5
    cioè devo scrivere $cognome?
    dove?

  6. #6
    Invece di fare cosi:


    if(isset($REQUEST["cognome"])&& isset($REQUEST["nome"])&& isset($REQUEST["elencoComuni"])&& isset($REQUEST["user"])&& isset($REQUEST["psw"]))
    {
    $comando
    ="insert * into accessi (cognome,nome,userName,password,ksComune)
    values ('$cognome', '$nome','$user','$password','$ksComune')"
    ;
    }
    fai cosi:

    Codice PHP:

    if(isset($cognome) && isset($nome)&& isset($elencoComuni])&& isset($user)&& isset($psw))
        {
        
    $comando="insert * into accessi (cognome,nome,userName,password,ksComune)
        values ('
    $cognome', '$nome','$user','$password','$ksComune')";
        } 

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Più che altro, che ci fa quel * dopo insert ?

  8. #8
    Quote Originariamente inviata da boots Visualizza il messaggio
    Più che altro, che ci fa quel * dopo insert ?
    grazie ecco l'errore. Ora inserisco.
    Non capisco però ancora il discorso di isset. Lo devo inserire sempre e comunque ogni volta che manipolo una variabile?
    Non è un po' pesante?

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,501
    Se un dato è obbligatorio, l'unico modo per sapere se l'utente l'ha fornito è verificarne l'esistenza, e si fa con isset().
    Per i dati non obbligatori la puoi rimuovere.

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.