Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Piros
    Registrato dal
    Dec 2008
    Messaggi
    33

    Problema variabili php in comando SQL

    Ciao a tutti, non capisco perchè se io scrivo:

    mysql_query("UPDATE studenti SET Nome='$nome', Cognome='$cognome', Classe='$classe', Età='$eta' WHERE CONCAT( Nome, ' ', Cognome ) = 'Mario Rossi'");
    mi aggiorna la tabella correttamente

    se io invece scrivo:

    $dati='Mario Rossi';
    mysql_query("UPDATE studenti SET Nome='$nome', Cognome='$cognome', Classe='$classe', Età='$eta' WHERE CONCAT( Nome, ' ', Cognome ) = '$dati'");
    non aggiorna la tabella come se non riconoscesse quello che c'è scritto nella variabile $dati

    Qualcuno ha idea di dove sia il problema?? Grazie 1000

  2. #2
    Deve funzionare anche nel secondo caso. Il problema evidentemente è altrove. Hai postato tutto il codice?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di Piros
    Registrato dal
    Dec 2008
    Messaggi
    33
    case 'M':
    $dati = $_POST['selIns'];
    $classe = $_POST['txtClasse'];
    $nome = $_POST['txtNome'];
    $cognome = $_POST['txtCognome'];
    $eta = $_POST['txtEta'];

    mysql_query("UPDATE studenti SET Nome='$nome', Cognome='$cognome', Classe='$classe', Età='$eta' WHERE CONCAT( Nome, ' ', Cognome ) = '$dati'");

    echo('Aggiornamento eseguito correttamente');
    break;

    La parte completa del codice è questa, piccola rettifica:
    scrivendo $dati= 'Mario Rossi' funziona avevo sbagliato io, ma il problema è un altro...

    Il problema è che $dati viene passato in POST da una select option, anche se apparentemente viene passato correttamente, infatti facendo echo($dati) il risultato è Mario Rossi. Se invece prova a passare $dati da una textbox come gli altri parametri l'UPDATE funziona correttamente. Spero di essermi spiegato

  4. #4
    Deve funzionare in ogni caso, sia con textbox che con select. Posta anche l'HTML.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it L'avatar di Piros
    Registrato dal
    Dec 2008
    Messaggi
    33
    PAGINA IN CUI VENGONO INSERITI I DATI:
    <?php
    $scelta = $_POST['selOp'];
    ?>

    <HTML>
    <HEAD>
    </HEAD>
    <BODY>
    <?php

    switch($scelta) {

    case 'Modifica':
    $conn = mysql_connect("localhost", "root", "");
    if (!$conn) {
    echo (" errore durante la connessione al server");
    exit();
    }

    $db = mysql_select_db("studenti");
    if (!$db) {
    print("<H1>Connessione al DB fallita</H1>");
    exit;
    }

    echo'<FORM METHOD="POST" NAME="upd" ACTION="misto.php">
    Nome insegnante: Classe:
    ';
    $ris = mysql_query("SELECT Nome, Cognome FROM studenti");
    echo "<select name='selIns'>";
    $riga = mysql_fetch_array($ris);
    while ($riga) {
    echo "<option>". $riga['Nome'] ."". $riga['Cognome'] ."</option>";
    $riga = mysql_fetch_array($ris);
    }
    echo "</select>";
    echo '&nbsp&nbsp
    Nome:
    Cognome:
    Età:
    Classe:

    <INPUT TYPE="text" SIZE=10 NAME="txtNome">
    <INPUT TYPE="text" SIZE=10 NAME="txtCognome">
    <INPUT TYPE="text" SIZE=2 NAME="txtEta">
    <INPUT TYPE="text" SIZE=3 NAME="txtClasse">
    <INPUT TYPE="submit" VALUE="Inserisci" NAME="Invia">
    <INPUT TYPE="hidden" VALUE="M" NAME="txtS">
    break;

    default:
    echo 'Nessuna funzione associata al comando selezionato!';
    }
    ?>


    <input type="button" value="Nuova Operazione" onClick="location.href='default.htm';">
    </BODY>
    </HTML>


    PAGINA CHE DEVE AGGIORNARE LA TABELLA
    <?php
    $classe = $_POST['txtClasse'];
    $scelta = $_POST['txtS'];
    $ck=10;
    $classe = strtoupper($classe);
    if (strlen($classe)!=3){
    echo' <script type="text/javascript">alert("La classe deve essere di 3 caratteri!");location = "default.htm";</script>';
    $ck=11;
    }
    ?>

    <HTML>
    <HEAD>
    </HEAD>
    <BODY>
    <?php
    if ($ck==10){
    // stabilisce la connessione con il server MySQL
    $conn = mysql_connect("localhost", "root", "");
    if (!$conn) {
    echo (" errore durante la connessione al server");
    exit();
    }

    // seleziono il database "campionato"
    $db = mysql_select_db("studenti");
    if (!$db) {
    print("<H1>Connessione al DB fallita</H1>");
    exit;
    }


    switch($scelta) {
    case 'I':
    $nome = $_POST['txtNome'];
    $cognome = $_POST['txtCognome'];
    $eta = $_POST['txtEta'];
    mysql_query("INSERT INTO studenti(Nome, Cognome, Età, Classe)
    VALUES ('$nome','$cognome','$eta','$classe')");
    echo('Inserimento eseguito correttamente');
    break;

    case 'M':

    $dati = $_POST['selIns'];
    $nome = $_POST['txtNome'];
    $cognome = $_POST['txtCognome'];
    $eta = $_POST['txtEta'];
    mysql_query("UPDATE studenti SET Nome='$nome', Cognome='$cognome', Classe='$classe', Età='$eta' WHERE CONCAT( Nome, ' ', Cognome ) = '$dati'");
    echo('Aggiornamento eseguito correttamente');
    break;

    default:
    echo 'Nessuna funzione associata al comando selezionato!';
    }

    mysql_close($conn);
    }
    ?>


    <input type="button" value="Nuova Operazione" onClick="location.href='default.htm';">
    </BODY>
    </HTML>

  6. #6
    Codice PHP:
    ...
    echo 
    "<option>"$riga['Nome'] ." "$riga['Cognome'] ."</option>";
    ... 
    Se non ci metti il value nell'option è ovvio che non funziona! Avevi detto che con echoi ti stampava correttamente il valore passato in post, ma ne dubito molto :

    Codice PHP:
    ...
    $dati $riga['Nome'] ." "$riga['Cognome'];
    echo 
    "<option value = '$dati'>$dati</option>";
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it L'avatar di Piros
    Registrato dal
    Dec 2008
    Messaggi
    33
    Ho provato ad inserire il value, ma il problema non si risolve...ho anche provato a cancellare gli spazi nel caso dovessero dare problemi ma anche così niente di nuovo.
    Ti posto qui sotto 2 semplicissime pagine, per dimostrarti che il post riesce a passare il parametro benchè nell'option non sia specificato il value, ci vuole un minuto per provare!

    PAG 1.PHP

    <HTML>
    <HEAD>
    </HEAD>

    <BODY>
    <FORM METHOD="POST" NAME="upd" ACTION="2.php">
    <select name='selIns'>
    <option>Mario Rossi</option>
    <option>Luca Pozzo</option>
    </select>
    <INPUT TYPE="submit" VALUE="Inserisci" NAME="Invia">
    </BODY>
    </HTML>

    PAG 2.PHP

    <?php
    $dati = $_POST['selIns'];
    echo($dati);
    ?>

    sbattile in htdocs e vedrai che l'echo stampa correttamente la variabile

  8. #8
    Ok funziona anche senza il value (evidentemente prende di default il valore contenuto nella option, ma ho fatto delle prove in locale e a me non da alcun problema con la query.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it L'avatar di Piros
    Registrato dal
    Dec 2008
    Messaggi
    33
    Potresti postarmi qualche esempio di cosa hai provato? Non so dove sbattere la testa!!
    Ho anche provato a fare:

    $dati = explode(" ", $_POST['selIns']);
    echo($dati[0]);
    echo($dati[1]);

    ma non funziona!! Infatti invece di dividere la stringa
    scrive l'intera stringa in dati[0], mentre dati[1] risulta vuoto!

    Possibile che la select trasformi in qualche modo lo spazio in un carattere che non riesce più a riconoscere?

  10. #10
    Questo è l'esempio che ho provato:

    Codice PHP:
    <?php
    if (isset($_POST['submit'])) {
        
    $connect mysql_connect(...);
        
    $db mysql_select_db(...);
        
    $dati $_POST['nomi'];
        
    $result mysql_query("SELECT * FROM tabella WHERE nome = '$dati'"$connect) or die ("Error: ".mysql_error());
        while (
    $record mysql_fetch_array($result)) {
            echo 
    $record['campo_tabella'];
        }
    }
    ?>

    <form method="post" action="index.php">
        <select name="nomi">
            <option>Pippo Franco</option>
            <option>Pluto</option>
            <option>Paperino</option>
        </select>
        <input type="submit" name="submit" value="submit" />
    </form>
    Non ho utilizzato la funzione CONCAT() su nome e cognome, ma hai detto che se passi il parametro direttamente (senza passare per la select) funziona per cui l'esempio dovrebbe essere coerente.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.