Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Variabile set segnata come non set

    Utilizzo questa classe per connettermi a un DB
    codice:
     
    <?php
    class MysqlClass
    {
    //Variabile privata che serve da controllo sulle connessioni attive
    var $attiva = false;
    //Funzione per la connessione a MYSQL
    function connetti($nomehost, $user, $password, $db)
    {
    	if(!$attiva)
    	{
    		if($connessione = mysql_connect($nomehost,$user,$password) or die (mysql_error()));
                    {
                                $selezione = mysql_select_db($db,$connessione) or die (mysql_error());
                                print("entro nel DB");
                    }
    	}else{
    		return true;
    		print("sono gia connesso");
    	}
    }
    function query($sql)
    {
    	if(isset($attiva))
    	{
    		$sql = mysql_quey($sql) or die (mysql_error());
    		print("fatta la query");
    		return $sql;
    	}else{
    		return false;
    		print("nn sono connesso al momento della query");
    	}
    }
    function estrai($risultato)
    {
    	if(isset($attiva))
    	{
    		$r = mysql_fetch_object($risultato);
    		print("ottenuto il risultato");
    		return $r;
    	}else{
    		return false;
    		print("nn sono connesso al momento della estrazione");
    	}
    }
    //Funzione per disconnettersi
    function disconnetti()
    {
    	if($attiva)
    	{
    		if(mysql_close())
    		{
    			if(mysql_close())
    			{ 
    				$attiva = false;
    				return true;
    			}else{
    				return false;
    			}
    		}
    	}
    }
    }
    ?>
    Ho fatto un pò di debugging e ho scoperto che quando arriva a function estrai in ogni caso, che la connessione sia aperta o no non esegue le istruzioni del if, ma quelle del else.
    Quindi non mi estrae quello che mi serve.
    La pagina con il quale richiamo questa classe è questa:
    codice:
    <?php
    		    include "sqlFunction.php";
    		    $host ='localhost';
                        //User e password sono identici, quindi inserisce una volta sola e io lo uso sia per la pasw che per l'user
    		    $user = $_REQUEST['password'];
    		    $password = $_REQUEST['password'];
    		    $database = 'my_asafarakaratara';
    		    $data = new MysqlClass();
    		    $data->connetti($host,$user,$password,$database);
    	            $stri="select * from log ORDER BY ora DESC";
    			$dbResult=$data->query($stri);
    			echo "<table border=\"1\">\n";
    			while($res = $data->estrai($dbResult)){
    			echo"\t<tr>\n";
    			$mod=$res->moderatore;
    			$ora=$res->ora;
    			$mes=$res->messaggio;
    			echo "\t\t<td>".$mod."</td>\n";
    			echo "\t\t<td>".$ora."</td>\n";
    			echo "\t\t<td>".$mes."</td>\n";
    			
    			echo "\t</tr>\n";
    			}
    			echo "</table>\n";
    			
    			
    			$data->disconnetti();
    			
    		?>
    Ovviamente non riesco a visualizzare la tabella siccome non riesco ad estrarre.
    Potete aiutarmi?

  2. #2
    Non hai dimenticato

    codice:
    $attiva = true;
    subito dopo aver stabilito la connessione?
    E poi perchè controlli se è settata? Mica è una variabile che arriva da un form, basta controllarne il valore in quanto sei sicuro che sia settata a qualcosa (la inizializzi a false).

    Saluti.

  3. #3
    Ho modificato la funzione connetti cosi:
    codice:
    	if(!$attiva)
    	{
    		if($connessione = mysql_connect($nomehost,$user,$password) or die (mysql_error()));
                    {
                                $selezione = mysql_select_db($db,$connessione) or die (mysql_error());
                                print("entro nel DB");
                                $attiva = true;
                                return $selezione;
                    }
    Inoltre ho sostituito gli isset così:
    codice:
    function estrai($risultato)
    {
    if($attiva)
    {
    $r = mysql_fetch_object($risultato);
    print("ottenuto il risultato");
    return $r;
    }else{
    print("nn sono connesso al momento della estrazione");
    return false;
    }
    
    function query($sql)
    {
    if($attiva)
    {
    $sql = mysql_quey($sql) or die (mysql_error());
    print("fatta la query");
    return $sql;
    }else{
    print("nn sono connesso al momento della query");
    return false;
    }
    }

    L'output che ricevo dalla pagina PHP è:
    entro nel DBnn sono connesso al momento della query nn sono connesso al momento della estrazione


    Secondo voi ora quale è il problema?

  4. #4
    Allora, lo script sarebbe da rivoluzionare ma per adesso funziona

    Codice PHP:
    <?php
    class MysqlClass
    {
    //Variabile privata che serve da controllo sulle connessioni attive
    private $attiva false;
    private 
    $conn null;
    //Funzione per la connessione a MYSQL
    /*public function __construct() {
       $this->conn=null;
       }
    */
       
    function connetti($nomehost$user$password$db)
    {
        if(!
    $this->attiva)
        {
            
    $this->conn mysql_connect($nomehost,$user,$password) or die (mysql_error());
            if(
    $this->conn)
                    {
                                echo 
    $this->conn;
                                
    $selezione mysql_select_db($db,$this->conn) or die (mysql_error());
                                print(
    "entro nel DB");
                                
    $this->attiva true;
                                echo 
    "
    "
    .$attiva;
                    }
        }else{
            print(
    "sono gia connesso");
            return 
    true;
        }
    }
    function 
    query($sql)
    {
            echo 
    $sql;
            echo 
    $this->conn;
        if(
    $this->attiva)
        {
            
    $sql mysql_query($sql$this->conn) or die (mysql_error());
            print(
    "fatta la query");
            return 
    $sql;
        }else{
            print(
    "nn sono connesso al momento della query");
            return 
    false;
        }
    }
    function 
    estrai($risultato)
    {
        if(
    $this->attiva)
        {
            
    $r mysql_fetch_array($risultato);
            print(
    "ottenuto il risultato");
            return 
    $r;
        }else{
            print(
    "nn sono connesso al momento della estrazione");
            return 
    false;
        }
    }
    //Funzione per disconnettersi
    function disconnetti()
    {
        if(
    $this->attiva)
        {
            if(
    mysql_close($this->conn))
            {
                
    $this->attiva false;
                return 
    true;
                }else{
                    return 
    false;
                }
        }
    }
    }
    ?>
    Codice PHP:
    <?php
                
    include "sqlFunction.php";
                
    $host ='localhost';
                        
    //User e password sono identici, quindi inserisce una volta sola e io lo uso sia per la pasw che per l'user
                
    $user $_REQUEST['password'];
                
    $password $_REQUEST['password'];
                
    $database 'my_asafarakaratara';
                
    $data = new MysqlClass();
                
    $data->connetti($host,$user,$password,$database);
                    
    $stri="select * from log ORDER BY ora DESC";
                
    $dbResult=$data->query($stri);
                echo 
    "<table border=\"1\">\n";
                while(
    $res $data->estrai($dbResult)){
                echo
    "\t<tr>\n";
                
    $mod=$res['moderatore'];
                
    $ora=$res->['ora'];
                
    $mes=$res->['messaggio'];
                echo 
    "\t\t<td>".$mod."</td>\n";
                echo 
    "\t\t<td>".$ora."</td>\n";
                echo 
    "\t\t<td>".$mes."</td>\n";
                
                echo 
    "\t</tr>\n";
                }
                echo 
    "</table>\n";
                
                
                
    $data->disconnetti();
                
            
    ?>
    Saluti.

  5. #5
    Ho utilizzato la tua versione del codice.
    Copio e incollo il tuo codice in sqlFunction.php sostituendolo a quello vecchio.
    Quindi apro la pagina con un broswer.
    Ecco l'errore che mi da:
    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /membri/asafarakaratara/sqlFunction.php on line 5

    Ora faccio altri test e altre prove. Appena li ultimo vi faccio sapere.


    EDIT:
    Ho continuato a fare del testing.
    Ho scoperto che tendendo il codice cosi come me lo hai dato tu e sostituendolo al originale, lanciando la pagina logok.php(quella per visualizzare la tabella) ottengo questo errore:
    Parse error: syntax error, unexpected '[', expecting T_STRING or T_VARIABLE or '{' or '$' in /membri/asafarakaratara/logok.php on line 53

    Avete idee ora?

  6. #6
    Errore mio
    Ho modificato il tuo codice al volo per non dover creare un db troppo complesso

    Ecco il file logok.php

    Codice PHP:
    <?php
                
    include "sqlFunction.php";
                
    $host ='localhost';
                        
    //User e password sono identici, quindi inserisce una volta sola e io lo uso sia per la pasw che per l'user
                
    $user $_REQUEST['password'];
                
    $password $_REQUEST['password'];
                
    $database 'my_asafarakaratara';
                
    $data = new MysqlClass();
                
    $data->connetti($host,$user,$password,$database);
                    
    $stri="select * from log ORDER BY ora DESC";
                
    $dbResult=$data->query($stri);
                echo 
    "<table border=\"1\">\n";
                while(
    $res $data->estrai($dbResult)){
                echo
    "\t<tr>\n";
                
    $mod=$res['moderatore'];
                
    $ora=$res['ora'];
                
    $mes=$res['messaggio'];
                echo 
    "\t\t<td>".$mod."</td>\n";
                echo 
    "\t\t<td>".$ora."</td>\n";
                echo 
    "\t\t<td>".$mes."</td>\n";
                
                echo 
    "\t</tr>\n";
                }
                echo 
    "</table>\n";
                
                
                
    $data->disconnetti();
                
            
    ?>

  7. #7
    o.o Mi sembrano uguali di due logok.php presentati da te, sia questo che quello precedente. E fanno entrambi lo stesso errore. o.o

    Il server dove eseguo le pagine ha installato PHP MyAdmin 2.11.9.5. E' un server pubblico di altervista.org che permette di hostare un DB MySQL e di eseguire pagine PHP.
    La versione del PHP installata è 4.2.0 o superiore (Non sono riuscito a risalire alla versione esatta :S )

    Può darsi che gli errori che visualizzo siano dati dal fatto che stiamo usando una sintassi relativa a una versione maggiormente nuova di PHP rispetto a quella installata?
    Mi spiego meglio:
    Poniamo per esempio che noi stiamo utilizzando la sintassi relativa a una versione 8 di PHP (Faccio un esempio, l'8 è un numero puramente casuale) e li c'è installata una versione 2(altro numero casuale), forse questo genera un qualche tipo di incompatibilità.

    Inoltre: Per il login, teoricamente per autenticarmi al DB in questione potrei non inserire la password, ma ho sempre fatto il login dando come password il mio username e ha sempre funzionato tutto alla perfezione(questo prima che iniziassi ad implementare questa nuova funzione PHP).
    Mi autenticavo con questa funzione: mysql_connect("localhost","asafarakaratara","asafa rakaratara") e tutto funzionava alla perfezione.
    Quindi suppongo che il non funzionamento di questo script non sia colpa del fatto che io passo user e password identici.

  8. #8
    Alle variabili $user e $password assegni i valori contenuti nell'array $_REQUEST che però non esiste (in quanto carichi direttamente la paing logok.php).

    Devi quindi settarne i valori direttamente (nel tuo caso mi sembra di capire che siano uguali)

    Codice PHP:
    $user 'tuouser';
    $password 'tuapassword'
    Proviamo così

  9. #9
    L'array £_REQUEST in realtà esiste.
    La pagina logok.php viene chiamata da una pagina chiamata carciofo.php che si occupa di prendere l'user name.
    Ho effettuato questa sostituzione:
    $user = $_REQUEST['password'];
    $password ='mia pasword';

    Ora nella pagina carciofo.php bisogna scrivere l'user, ovvero asafarakaratara e verrà salvato sotto la dicitura password nel arrai $_REQUEST, e quindi passato alla pagina successiva.

    Comunque l'errore persiste

    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /membri/asafarakaratara/sqlFunction.php on line 5

    Se può esserti di aiuto, la pagina in questione è questa:
    asafarakaratara.altervista.org/carciofo.php
    per l'autenticazione, usa asafarakaratara

    Siccome io non ho mai usato i private e i public ecc. ecc. programmando in PHP ho provato a fare un esperimento togliendo private davanti alla variabile sulla linea 5 e 6.
    Poi ho salvato il file e e l'errore è risultato uguale. :S
    Quindi ho rimesso i due private, quindi il codice è esattamente come me lo hai proposto tu, senza variazioni.

  10. #10
    che strano, io sto lavorando in locale con PHP 5.3.1 e tutto funziona.
    Prova ancora così

    Codice PHP:
    class MysqlClass
    {
       
    //Variabile privata che serve da controllo sulle connessioni attive
       
    private $attiva;
       private 
    $conn;

       public function 
    __construct()
       {
          
    $this->attiva false;
          
    $this->conn=null;
       }

       function 
    connetti($nomehost$user$password$db)
       ... 

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 © 2024 vBulletin Solutions, Inc. All rights reserved.