Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027

    [PDO] controllo su campo e-mail

    buonasera,
    sto facendo il mio primo script con le PDO e ho un problemino..

    lo script è questo:

    codice:
    <?php
    session_start();
    $col = 'mysql:host=localhost;dbname=tattoonia';
    $db = new PDO($col , 'root', '');
    $nome=$_POST['nome'];
    $cognome=$_POST['cognome'];
    $sesso=$_POST['sesso'];
    $email=$_POST['email'];
    $password=$_POST['password'];
    $tipo=$_POST['tipo'];
    $nazione=$_POST['nazione'];
    $citta=$_POST['citta'];
    $provincia=$_POST['provincia'];
    $indirizzo=$_POST['indirizzo'];
    $telefono=$_POST['telefono'];
    $controllo = $db->prepare("SELECT email FROM utente WHERE email = '$email'");
    $controllo->execute();
    $risultato = $controllo->fetchAll();
    if ($risultato > 0){
        echo "<script>alert(\"indirizzo e-mail occupato\");</script>";
    }
    else{
    $sql = "INSERT INTO utente (nome,cognome,tipo,nazione,citta,provincia,indirizzo,email,password,telefono,sesso) VALUES (:nome,:cognome,:tipo,:nazione,:citta,:provincia,:indirizzo,:email,:password,:telefono,:sesso)";
    $q = $db->prepare($sql);
    $q->execute(array(':nome'=>$nome,':cognome'=>$cognome,':tipo'=>$tipo,':nazione'=>$nazione,':citta'=>$citta,':provincia'=>$provincia,':indirizzo'=>$indirizzo,':email'=>$email,':password'=>$password,':telefono'=>$telefono,':sesso'=>$sesso));
    header("Location:index.php#accedi");
    }
    ?>
    il problema è che se io inserisco un indirizzo e-mail che non esiste nella tabella utenti lo script mi dice ugualmente che l'indirizzo è occupato..

    qualcuno sa aiutarmi?

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    fetchAll restituisce un array vuoto qualora l'esecuzione della query non produca risultati.
    Quindi il controllo che fai non va bene.

    O conti gli elementi dell'array oppure fai una query del tipo

    codice:
    $controllo = $db->prepare("SELECT count(email) as num FROM utente WHERE email = '$email'");
    e da li il resto....
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    ho fatto così però comunque non funziona nel senso che se io aggiungo un utente con email che nel db non esiste lo script mi dice che esiste ugualmente...

    codice:
    $controllo = $db->prepare("SELECT count(email) FROM utente WHERE email = '$email'");
    $controllo->execute();
    if($controllo->rowCount() > 0){
        echo "esiste";
    }
    else{
        $sql = "INSERT INTO utente (nome,cognome,tipo,nazione,citta,provincia,indirizzo,email,password,telefono,sesso) VALUES (:nome,:cognome,:tipo,:nazione,:citta,:provincia,:indirizzo,:email,:password,:telefono,:sesso)";
        $q = $db->prepare($sql);
        $q->execute(array(':nome'=>$nome,':cognome'=>$cognome,':tipo'=>$tipo,':nazione'=>$nazione,':citta'=>$citta,':provincia'=>$provincia,':indirizzo'=>$indirizzo,':email'=>$email,':password'=>$password,':telefono'=>$telefono,':sesso'=>$sesso));
        header("Location:index.php#accedi");
    }
    Ultima modifica di passasooz; 30-03-2014 a 22:07

  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    è ovvio la query che fai restituisce sempre una riga. se usi rowCount devi fare la query come facevi prima
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    ok ho usato la query che avevo scritto in precedenza e così funziona:

    codice:
    $controllo = $db->prepare("SELECT email FROM utente WHERE email = '$email'");
    $controllo->execute();
    if($controllo->rowCount() > 0){
        echo "esiste";
    }
    else{
        $sql = "INSERT INTO utente (nome,cognome,tipo,nazione,citta,provincia,indirizzo,email,password,telefono,sesso) VALUES (:nome,:cognome,:tipo,:nazione,:citta,:provincia,:indirizzo,:email,:password,:telefono,:sesso)";
        $q = $db->prepare($sql);
        $q->execute(array(':nome'=>$nome,':cognome'=>$cognome,':tipo'=>$tipo,':nazione'=>$nazione,':citta'=>$citta,':provincia'=>$provincia,':indirizzo'=>$indirizzo,':email'=>$email,':password'=>$password,':telefono'=>$telefono,':sesso'=>$sesso));
        header("Location:index.php#accedi");
    }
    grazie mille dell'aiuto..

  6. #6
    Codice PHP:
    $stmt$db->prepare("SELECT email FROM utente WHERE email = :email'");
    $stmt->execute( array( ':email'$email ) );

    if ( 
    $stmt->rowCount() > ) { 

    usa i placeholder con pdo altrimenti non gestisci i dati.
    Questa volta, più che un voto.. è favoreggiamento.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    ho modificato il codice come mi hai detto tu e non mi funziona più

  8. #8
    Quote Originariamente inviata da passasooz Visualizza il messaggio
    ho modificato il codice come mi hai detto tu e non mi funziona più
    Se ti limiti al copia/incolla!!!
    Magari prendendo un minimo di iniziativa e consultando il buon vecchio manuale (questo sconosciuto):

    execute()
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    aH VERO ho notato ora che l'execute doveva esser scritto col =>

  10. #10
    Dai un'occhiata anche al metodo bindValue()
    "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.