Torna indietro   AlterVista | Spazio web gratis, hosting free php mysql > L'angolo del webmaster > PHP, MySql e Apache (.htaccess)

Rispondi
 
LinkBack Strumenti discussione Modalità visualizzazione
  #1 (permalink)  
Vecchio 29-04-2009, 18.26.31
Neofita
 
Data registrazione: 28-04-2009
Messaggi: 9
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 18.27.46
Rispondi citando
  #2 (permalink)  
Vecchio 29-04-2009, 19.14.26
L'avatar di binarysun
Utente storico
 
Data registrazione: 02-07-2004
Messaggi: 1,968
Invia un messaggio via MSN a binarysun
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
Rispondi citando
  #3 (permalink)  
Vecchio 29-04-2009, 20.18.48
Neofita
 
Data registrazione: 28-04-2009
Messaggi: 9
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!
Rispondi citando
  #4 (permalink)  
Vecchio 29-04-2009, 20.36.19
L'avatar di binarysun
Utente storico
 
Data registrazione: 02-07-2004
Messaggi: 1,968
Invia un messaggio via MSN a binarysun
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
Rispondi citando
  #5 (permalink)  
Vecchio 29-04-2009, 20.56.28
Neofita
 
Data registrazione: 28-04-2009
Messaggi: 9
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 = '/';
?>
Rispondi citando
  #6 (permalink)  
Vecchio 30-04-2009, 00.39.54
L'avatar di biccheddu
AlterGuru 2500
 
Data registrazione: 18-01-2009
Residenza: Sant'Antioco
Messaggi: 2,754
Invia un messaggio via Yahoo a biccheddu Manda un messaggio tramite Skype™ a biccheddu
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
__________________
Rispondi citando
  #7 (permalink)  
Vecchio 30-04-2009, 09.28.27
L'avatar di binarysun
Utente storico
 
Data registrazione: 02-07-2004
Messaggi: 1,968
Invia un messaggio via MSN a binarysun
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
Rispondi citando
  #8 (permalink)  
Vecchio 30-04-2009, 13.21.36
Neofita
 
Data registrazione: 28-04-2009
Messaggi: 9
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!
Rispondi citando
  #9 (permalink)  
Vecchio 30-04-2009, 15.38.05
L'avatar di binarysun
Utente storico
 
Data registrazione: 02-07-2004
Messaggi: 1,968
Invia un messaggio via MSN a binarysun
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
Rispondi citando
  #10 (permalink)  
Vecchio 01-05-2009, 09.26.48
Neofita
 
Data registrazione: 28-04-2009
Messaggi: 9
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!
Rispondi citando
  #11 (permalink)  
Vecchio 30-10-2010, 17.06.29
Neofita
 
Data registrazione: 25-10-2010
Messaggi: 1
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???
Rispondi citando
  #12 (permalink)  
Vecchio 31-10-2010, 01.07.11
L'avatar di biccheddu
AlterGuru 2500
 
Data registrazione: 18-01-2009
Residenza: Sant'Antioco
Messaggi: 2,754
Invia un messaggio via Yahoo a biccheddu Manda un messaggio tramite Skype™ a biccheddu
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.
__________________
Rispondi citando
Rispondi

Strumenti discussione
Modalità visualizzazione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks are Attivato
Pingbacks are Attivato
Refbacks are Disattivato



Tutti gli orari sono GMT +1. Adesso sono le 06.54.14.