Visualizzazione risultati 1 fino 12 di 12

Discussione: Errore "Call to a member function on a non-object" (era "sempre io")

  1. #1
    Guest

    Predefinito Errore "Call to a member function on a non-object" (era "sempre io")

    Con la nuova connessione che mi avete dato, ora non so più come fare le query..
    mi spiego meglio: il linguaggio sql lo conosco bene, non so come fare eseguire le query in un altro modo..

    io conosco questo e mi ha sempre funzionato per altri siti, non capisco perché qua no!

    il pezzo di codice php è questo!

    Codice PHP:
    <?php
    $db
    =connessione();
    $sql="SELECT * FROM utenti where ban='false' ORDER BY nick";
    $s = $d->query($sql)or die("Errore ".$d->error);
    $sRighe = $s->num_rows;

    echo
    " <td valign='top'>
    <table style='valign:top;margin-top:0'>"
    ;
    for (
    $k=0;$k<$sRighe;$k++)
    {
    $riga = $s->fetch_assoc();
    $id1=$riga['Matricola'];
    $livello=$riga['Livello'];
    $nick=$riga['nick'];
    $comm=$riga['commento'];
    $foto=$riga['foto'];
    echo
    "<tr><td rowspan='3'><img src='uploads/$foto'></td></tr>
    <tr><td>Nick:
    $nick</td></tr>
    <tr><td>Livello:
    $livello</td></tr>
    <tr><td>Commento:
    $comm</td></tr><table>";
    }
    ?>

    mi da questo errore

    Fatal error: Call to a member function on a non-object in /membri/criminalmindclan/componenti.php on line 46

    dove la linea 46 è

    $s = $d->query($sql)or die("Errore ".$d->error);

    con la connessione nuova non mi funziona!! NON so qual è l'errore!!

    Please aiutatemi
    Grazie in anticipo!
    Ultima modifica di debug : 29-04-2009 alle ore 19.27.46

  2. #2
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    L'oggetto $d non viene nemmeno valorizzato, forse è $db e non $d?
    In quel codice poi manca la funzione connessione()
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  3. #3
    Guest

    Predefinito

    Si, xk $d è giusto $db, ma per quanto riguarda la funzione connessione, la includo con intestazione( in intestazione faccio include('funzioni.php') dove si connette al DB)

    E comunque anke con la correzione mi da sempre lo stesso identico errore!

  4. #4
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    allora il problema sta in quel "connessione()"
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  5. #5
    Guest

    Predefinito

    xk la funzione connessione è qst

    function connessione()
    {
    $host = 'localhost';
    $us = 'criminalmindclan';
    $pass= '';
    $db = 'my_criminalmindclan';
    $urlbase = '/';
    $conn= mysql_connect($host,$us,$pass) or die("errore nella connessione al db: ".mysql_error());
    mysql_select_db ($db, $conn) or die("errore nella selezione del db: ".mysql_error());


    }


    è quella che mi avete suggerito in un altro post..
    xk io x un altro sito, su un altro server usavo qst e nn mi ha dato mai problemi


    function connessione()
    {
    include('config.php');
    $conn= new mysqli($host,$us,$pass,$db);

    if (mysqli_connect_errno())
    {
    echo "ERRORE " . mysqli_connect_error();

    }
    return $conn;
    }

    in config metto

    <?php
    $host = 'localhost';
    $us = 'root';
    $pass= '';
    $db = 'catalogo';
    $urlbase = '/';
    ?>

  6. #6
    Guest

    Predefinito

    Da quel che ne capisco di programmazione ad oggetti (non mi sono mai messo a lavorarci), questo non è un problema di connessione, ma di classe.

    Da quel che so, praticamente nulla, lo ripeto, dovrebbe essere una cosa simile no?
    Codice PHP:
    class db()
    {
    var
    $host = 'localhost';
    var
    $us = 'criminalmindclan';
    var
    $pass= '';
    var
    $db = 'my_criminalmindclan';

    function
    connessione()
    {
    $conn = mysql_connect($this->host,$this->us,$this->password) or die("errore nella connessione al db: ".mysql_error());
    mysql_select_db($db, $conn) or die("errore nella selezione del db: ".mysql_error());
    }

    function
    query($sql)
    {
    $conn = mysql_connect($this->host,$this->us,$this->password) or die("errore nella connessione al db: ".mysql_error());
    mysql_select_db($db, $conn) or die("errore nella selezione del db: ".mysql_error());
    mysql_query($sql);
    }
    }
    Poi:
    Codice PHP:
    $db = new db();
    $s = $db->query($sql)or die("Errore ".$db->error);
    Manca un bel po, tipo $error, quindi dovresti postare le tue classi.


    PS: Ripeto nuovamente, io provo, ma non ho mai lavorato, però può essere una buona occasione per imparare

  7. #7
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    connessione() restituisce un oggetto.
    L'oggetto restituito sembrerebbe essere un wrapper per il database in modo da poter cambiare il database senza modificare il codice.
    Sicuramente ti mancano grandi parti di codice.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  8. #8
    Guest

    Predefinito Risposta

    Scusami, ma come ho già detto prima, utilizzo lo stesso identico codice in un altro sito, su un altro server, e funziona benissimo così come è, non capisco come mai su questo mi dia un errore dietro l'altro!

  9. #9
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    La programmazione non è magia.
    Manca un pezzo.

    Magari in altri posti avevi installato anche altri script e senza saperlo in qualche include valorizzavi qualcosa.

    La funzione connessione non restituisce nulla anche se effettivamente la connessione al DB la fa.
    Il vero problema è la variabile $d che non è $db e che non vine valorizzata da nessuna parte.
    Ti mancherà un include.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  10. #10
    Guest

    Smile grazie comunque

    Sono riuscito a risolverlo! Non mancava codice come dicevi tu, ma siccome ho usato un diverso tipo di connessione, anche il codice per far eseguire le query deve essere diverso!Stanotte ho avuto un'illuminazione sulla "via di Damasco!" Grazie ancora x l'aiuto che mi avete dato!

  11. #11
    Guest

    Predefinito

    so che è un po vecchia come discussione, ma volevo sapere in che modo hai risolto il tuo errore....

    cioè anche a me da quell'errore nella chiamata alla funzione query()

    tu come hai risolto???

  12. #12
    Guest

    Predefinito

    Deve postare la classe del wrapper che utilizza, altrimenti è impossibile andare avanti, a meno che non se ne trovi qualcun altro nel web, e se ne trovano a decine.

Regole di scrittura

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