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

    problema record registrazioni

    Buonasera,

    Il mio problema è non riuscire ad effettuare un controllo sulla presenza, in fase di registrazione di un utente, dei suoi stessi dati di accesso nel db. In parole povere quando utilizzo la funzione mysql_num_rows per dire = se già presente scrivi "Già presente", mi viene detto che la tale funzione sta prendendo una variabile booleana, anche se non so il perchè.

    Vi incollo lo snippet:

    $nome = $_POST['nome'];
    $password = $_POST['password'];

    if (isset($_POST['submit'])) {

    $conn = $mysqli = new mysqli("localhost","root","25071984","mysqli_testd b");

    if (mysqli_connect_errno()) {printf("Errore di connessione al database", mysqli_connect_error()); exit();} else {printf("Connessione effettuata con successo");}

    $mysqli->select_db("mysqli_testdb");

    $query = $mysqli->query("SELECT * FROM test_dati WHERE nome = '$nome' AND password = '$password'");

    Mi verrebbe a questo punto da dire:

    $num_rows = $result->num_rows;

    if ($num_rows($query) == 0) {
    insert...
    } else {
    già registrato
    }

    Se non fosse che non gli piace.

    Qualche indicazione che non sia il manuale di Php (il cui esempio dovrebbe darmi ok ma mi dà picche?)

    Grazie

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Mi sa che stai facendo un po' di confusione:

    $num_rows = $result->num_rows;
    if ($num_rows($query) == 0) {

    Da dove salta fuori $result? mysqli::num_rows è un intero, quindi che senso ha $num_rows($query) ?

    Dovrebbe essere

    Codice PHP:
    $query $mysqli->query("SELECT * FROM test_dati WHERE nome = '$nome' AND password = '$password'");

    if(!
    $query) die("Errore query");

    if (
    $query->num_rows== 0) {
    insert...
    } else {
    già registrato


  3. #3
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    prima usi $query e poi $result, ecco perchè.
    Prova il seguente codice
    Codice PHP:
    ...............
    if (
    $result $mysqli->query("SELECT * FROM test_dati WHERE nome = '$nome' AND password = '$password'")) {

        
        
    $num_rows $result->num_rows;

        
    printf("Nel db i sono %d rows.\n"$num_rows);

        
        
    $result->close();
    }
    ................. 
    If you think your users are idiots, only idiots will use it. DropBox

  4. #4
    Grazie per le risposte, però nel primo caso l'effetto che ottengo (e in teoria sarebbe logico) è che non mi inserisce niente ovvero num_rows non è mai == 0, e non capisco perchè.

    Nell'esempio di homerbit quel codice che dovrebbe fare? In sostanza la stessa cosa che fa quello di boots no?

    Però ad esempio in quello di boots mi esce fuori che io sto cercando di "ottenere la proprietà di un non-oggetto nel momento in cui $num_rows = $result->num_rows;"

    Il discorso è? Quale dovrebbe essere il problema?

    Ma poi scusate, alla fine della fiera perchè num_rows? Quel num_rows == 0 non vuol dire se in generale in quella tabella non ci sono record? Perchè se io chiedo di stamparmi $num_rows mi stampa 0 1 2... invece a me interessa che so se donpelajo c'è o no.

    Scusate la confusione

  5. #5
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    i codici sono equivalenti, poi è sempre bene ad auspicabile studiare un pò per capire ed imparare,perchè gli errori sono sempre dietro l'angolo...
    Codice PHP:
    if ($result $mysqli->query("SELECT * FROM test_dati WHERE nome = '$nome' AND password = '$password'")) {
        
        if (
    $result->num_rows == 0){

        echo (
    "nessuna occorrenza");
       
    }
    else {.....}
    $result->close(); 
    If you think your users are idiots, only idiots will use it. DropBox

  6. #6
    Hai ragione!

    Però anche così num_rows non potrà mai essere == 0 quindi non potrà mai verificarsi l'inserimento, perchè non mi inserisce nulla qualunque cosa io scriva nei campi.

    Sarà che a me non serve num_rows

  7. #7
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    Originariamente inviato da donpelajo
    Però anche così num_rows non potrà mai essere == 0 quindi non potrà mai verificarsi
    lo sarà solo quando non ci sono rows nel db, è solo un contatore....
    ...perchè non mi inserisce nulla qualunque cosa io scriva nei campi.
    bhè, Se il tuo scopo è entrare nell'if quando num_rows == 0 sei sulla strada giusta, infatti dovresti visualiazare "nessuna occorrenza".
    Se l'insert non viene eseguita... magari sbagli la INSERT ?
    Sarà che a me non serve num_rows
    solo tu puoi saperlo, per il resto siam quì !
    If you think your users are idiots, only idiots will use it. DropBox

  8. #8
    Originariamente inviato da donpelajo
    Hai ragione!

    Però anche così num_rows non potrà mai essere == 0 quindi non potrà mai verificarsi l'inserimento, perchè non mi inserisce nulla qualunque cosa io scriva nei campi.

    Sarà che a me non serve num_rows
    Ma leggere il manuale mai eh?!?!

    num_rows


    Originariamente inviato da donpelajo
    Ma poi scusate, alla fine della fiera perchè num_rows? Quel num_rows == 0 non vuol dire se in generale in quella tabella non ci sono record?
    No, num_rows contiene il numero di record restituiti dalla query effettuata e NON il numero di record presenti nella tabella!!!
    "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.