Visualizzazione risultati 1 fino 8 di 8

Discussione: [php] problemi accesso database [era: ragaaaa aiutoooo!!!]

  1. #1
    Guest

    Predefinito [php] problemi accesso database [era: ragaaaa aiutoooo!!!]

    sto creando una form x la login ad un sito..sul pc mi funziona, sul sito in altervista no!!

    il codice è questo:
    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    "config.php");
    $user=$_POST['user'];
    $pass=$_POST['pass'];
    $con=new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_DATABASE);
    $result=$con->query("select Nome as'nome',Cognome as'cognome',Permessi as'permessi',Pass as'pass',count(Username) as'num' from utenti where Username='".$user."';");
    while(
    $row=$result->fetch_assoc()){
    $password=$row['pass'];
    $nome=$row['nome'];
    $cognome=$row['cognome'];
    $permessi=$row['permessi'];
    $num=$row['num'];
    }
    if(
    $num=0){
    echo
    "<script language='javascript'> alert('Username inesistente, riprovare!!'); </script>";
    header("Location:index.php");}
    else{
    if(
    $pass!=$password){
    echo
    "<script language='javascript'> alert('Password errata, riprovare!!'); </script>";
    header("Location:index.php");}
    else{
    $_SESSION['user']=$user;
    $_SESSION['nome']=$nome;
    $_SESSION['cognome']=$cognome;
    $_SESSION['permessi']=$permessi;
    header("Location:home.php");
    }}
    ?>
    l'errore è:

    Fatal error: Call to a member function fetch_assoc() on a non-object in /membri/longobarditrezzo/login.php on line 8
    Ultima modifica di andreafallico : 24-08-2010 alle ore 00.29.41

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Sei sicuro di aver configurato correttamente i parametri del database?
    Posta il contenuto del file config.php.

  3. #3
    Guest

    Predefinito

    Codice HTML:
    <?php
    	define('DB_HOST','localhost');
    	define('DB_USER','longobarditrezzo');
    	define('DB_PASSWORD','');
    	define('DB_DATABASE','my_longobarditrezzo');
    ?>

  4. #4
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    I dati dovrebbero essere corretti, se è così l'errore è dovuto al fallimento della query. Per una conferma modifica il codice così:
    Codice PHP:
    <?php
    session_start
    ();
    require_once(
    "config.php");
    $user=$_POST['user'];
    $pass=$_POST['pass'];
    $con=new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_DATABASE);
    $result=$con->query("select Nome as'nome',Cognome as'cognome',Permessi as'permessi',Pass as'pass',count(Username) as'num' from utenti where Username='".$user."';");
    if(
    $result){
    while(
    $row=$result->fetch_assoc()){
    $password=$row['pass'];
    $nome=$row['nome'];
    $cognome=$row['cognome'];
    $permessi=$row['permessi'];
    $num=$row['num'];
    }
    }else{
    die(
    $result);
    }
    if(
    $num=0){
    echo
    "<script language='javascript'> alert('Username inesistente, riprovare!!'); </script>";
    header("Location:index.php");}
    else{
    if(
    $pass!=$password){
    echo
    "<script language='javascript'> alert('Password errata, riprovare!!'); </script>";
    header("Location:index.php");}
    else{
    $_SESSION['user']=$user;
    $_SESSION['nome']=$nome;
    $_SESSION['cognome']=$cognome;
    $_SESSION['permessi']=$permessi;
    header("Location:home.php");
    }}
    ?>

  5. #5
    Guest

    Predefinito

    mmm...ok non mi da più quell'errore ma cos'è il die($result)????

  6. #6
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Il die() e l'equivalente della funzione exit(), cioè, stampa a video il suo contenuto fermando l'esecuzione dello script, come puoi anche vedere qui:

    http://php.net/manual/en/function.exit.php

    Ma credo che potresti anche levare quella if sostituendo la riga, prima della if, in questo modo:
    Codice PHP:
    $result=$con->query("select Nome as'nome',Cognome as'cognome',Permessi as'permessi',Pass as'pass',count(Username) as'num' from utenti where Username='".$user."';") or die("errore");
    In questo caso, il codice credo sia lo stesso, ho solo aggiunto or die() dopo la funzione che esegue la query, credo che il risultato sia uguale a quello di prima, con la differenza che ha meno righe di prima.

    Infatti, con questa unica riga dico allo script di eseguire la query in $result se è possibile altrimenti stampo la stringa "errore" e interrompo lo script evitando di mettere if ed else che in questo caso occupano solo righe in più
    Ultima modifica di sevenjeak : 23-08-2010 alle ore 21.16.39

    Sevenjeak
    Software developer and much more

  7. #7
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Se non stampa nulla, significa che la query fallisce: http://www.php.net/manual/en/mysqli.query.php .
    Ricontrolla la query e verifica che il database abbia le tabelle dal quale la query legge i data.

  8. #8
    Guest

    Predefinito

    ok grazie mille ragazzi!!!comunque il problema era che non avevo messo la clausola group by!!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •