Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    problema mysql_num_rows

    Salve ragazzi ho un pannello,con il quale gli utenti possono modificare i propri dati.
    Ovviamente ho dei campi di testo quindi un form.. che si collega al file "modifica.php".
    Adesso io richiamo in ogni campo di testo i valori presenti sul database... però devo fare in modo che l'email sia unica per qualsiasi utente... Quindi se vogliono modificare l'email ed è già presente sul database.. deve dare errore...
    Adesso inizia il problema.

    Quando io mod qualcosa...attraverso post mi passa il valore dell email alla pagina "modifica.php"

    Io controllo con una query se è già presente quella email sul database facendo una cosa del tipo:

    Codice PHP:

    // Controllo sul database se è già presente un email uguale
    $db_query "SELECT * FROM utenti WHERE email = '$email'";
    $rs mysql_query($db_query$db_conn) or die ('Errore query: ' mysql_error());
    echo 
    'Righe presenti: ' $num_rows mysql_num_rows($rs);

    if (
    $num_rows != 1) {

        
    //header ("Location: personale.php?error=2");
        
    exit();


    Allora... se vado a stampare le righe presenti ... me ne trova 1 sola .. quindi lo script va avanti!

    Però se io con un altro utente metto un email che è già presente sul database mi trova nuovamente risultato 1 riga.. e quindi inserisce...
    Alla fine inserisce l'email uguale a max 2 utenti, però io devo far si che ogni utente abbia un email diversa.

    Come posso fare? Grazie anticipatamente
    Con i sogni possiamo conoscere il futuro...

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Prova così:
    Codice PHP:
    $db_query "SELECT * FROM utenti WHERE email = '$email'";
    $rs mysql_query($db_query$db_conn) or die ('Errore query: ' mysql_error());
    $controllo mysql_num_rows($rs);
    if (
    $controllo != 0) {
    // sostituisce la vecchia email con la nuova
    } else {
    echo 
    "Impossibile modificare l'indirizzo email, poichè quello proposto è già presente nel database";

    metatad
    graphic & web design

  3. #3
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    mmm non va... cmq perchè hai messo quel cmmento sostituisce l'email.. .non riesco a capire
    Con i sogni possiamo conoscere il futuro...

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Forse non ho capito bene il tuo problema...
    Il punto è - giusto? - che tu vuoi dare la possibilità agli utenti di cambiare i propri dati, tra cui la mail, però assicurandoti che la nuova email non sia già presente nel database, per evitare che due utenti usino la stessa mail.
    Se è così, allora la funzione che ti ho scritto dovrebbe risolverti il problema.
    Tu hai la variabile $email, che rappresenta il nuovo indirizzo email inserito dall'utente, e verifichi se è già presente o meno nel database.
    Se il valore della variabile non è presente
    Codice PHP:
    if ($controllo != 0) { 
    allora puoi fare la sostituzione; (il commento ti indica dove inserire il codice per fare la sostituzione, questo scrivitelo da te...).
    Altrimenti, mostri un messaggio in cui avverti l'utente del perchè non è possibile accettare la nuova email - oppure scrivi / fai quello che ritieni opportuno.
    Comunque, cos'è che non va?
    Devi essere preciso, se vuoi essere aiutato.
    metatad
    graphic & web design

  5. #5
    a parte che ti basterebbe fare così

    if(mysql_num_rows($result))// se vero vuol dire che ha trovato almeno 1 ricorrenza
    {
    echo 'mi dispiace l\'indirizzo è già presente';
    }
    else
    {
    .
    .
    .
    echo 'dato modificato con successo!!';
    }

  6. #6
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Il problema è un altro...Mi spiego meglio...

    Quando io cerco di modificare l'email... e premo MODIFICA DATI il form si collega,ovviamente,ad una pagina php nella qual recupero il file inviato attraverso post... in questo modo:

    Codice PHP:
    $email $_POST['email']; 
    Nel pannello per modificare i dati io ho come valore nel campo email,il dato presente sul database... ecco il campo email:

    <input name="email" type="text" id="email" value="<? echo $row['email']; ?>" size="50" />

    Quando cerco di modificare qualche altro dato.. es.Telefono io mi porto avanti anche il valore dell email...

    QUI SORGE IL PROBLEMA

    Quando vado a recuperare i dati... in questo modo:

    Codice PHP:
    // Controllo sul database se è già presente un email uguale
    $db_query "SELECT * FROM utenti WHERE email = '$email'";
    $rs mysql_query($db_query$db_conn) or die ('Errore query: ' mysql_error());
    echo 
    'Righe presenti: ' $num_rows mysql_num_rows($rs);

    if (
    $num_rows != 0) {

        
    header ("Location: personale.php?error=2");
        exit();


    Io avrò sicuramente 1 riga... perchè l'email è presente sul database...quindi mi segnalerà errore... Ora è chiaro?
    Quindi mi serve un modo per aggiornare senza problemi gli altri dati... e nello stesso tempo se qualcuno volesse utilizzare un email già presente sul database, non può farlo!

    Grazie anticipatamente!
    Con i sogni possiamo conoscere il futuro...

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Metti nel form come campo nascosto anche l'email vecchia, poi nella pagina che fa le modifiche confronti la vecchia con la nuova e, se sono uguali, salti i controlli sulla email.
    Un'altra cosa: quando fai i controlli metti un lock in scrittura sulla tabella prima di cominciare, altrimenti non hai garanzie sull'effettiva univocità

  8. #8
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    che intendi per lock di scrittura...
    Con i sogni possiamo conoscere il futuro...

  9. #9

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.