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

    Ricavare dati da una funzione all'interno di una Class

    Ciao a tutti,

    seguendo la guida "Guida PHP e MySql pratica" a pagina 3, suggerisce di utilizzare una CLASS con tutte le funzioni necessarie per la connessione e la disconnessione al db.

    Ho seguito la guida e creato la classe e le relative funzioni nel solio file config.php.
    Quando richiamo la funzione di connessione e disconnessione da un'altra pagina il tutto va a buon fine e fin qui nessun problema.

    All'interno di una pagina ho un modulo per aggiornare dei dati composto da una tabella con 4 campi e un menu list dove scegliere quale giocatore aggiornare.

    Ho la mia bella query:
    codice:
    $sql_s = "SELECT GIOCATORE FROM classifica ORDER BY GIOCATORE";
    e il relativo invio al db:
    codice:
    $ris = mysql_query($sql_s);
    . Bene così il tutto funge, quando carico la pagina posso selezionare quale giocatore aggiornare, tuttavia se cambiassi questa ultima riga con:
    codice:
    $ris = mysql_query($sql_s,$connessione);
    questa non funziona più, non mi viene caricato alcun nome.

    Ho provato nella funzione Connetti ad impostare la variabile $connessione come globale, a dare un return $connessione, ma niente.

    So bene che il parametro link per mysql_query è opzionale, visto che se omesso php tenta di utilizzare l'ultima connessione attiva, ma vorrei capire dove è l'errore.


    Grazie mille

    PS: la guida è questa!
    Mess With The Best, Die Like The Rest

  2. #2
    Se hai usato una classe per definire ed effettuare le operazioni sul db, la connessione sarà (si spera) una variabile pubblica della classe, quindi per potervi accedere dovrai fare qualcosa del tipo
    Codice PHP:
    ....
    $Db_Class = new Db_Class();
    ....
    ....
    $sql_s "SELECT GIOCATORE FROM classifica ORDER BY GIOCATORE";
    $ris mysql_query($sql_s$Db_Class->connessione);
    .... 
    dove "connessione" è il nome della variabile (pubblica) di istanza della classe Db_Class


  3. #3
    Ciao purtroppo non riesco a capire dove dichiarare la variabile pubblica.
    Nel file config.php (differente da dove gira lo script di aggiornamento dati) ho così dichiarato la funzione connnetti:

    // funzione per la connessione a MySQL
    public function connetti()
    {
    if(!$this->attiva)
    {
    $connessione = mysql_connect($this->nomehost,$this->nomeuser,$this->password) or die(mysql_error());
    echo "Connesso a MySQL Server!!
    ";
    mysql_select_db ($this->database) or die(mysql_error());
    echo "Connesso al Database: $this->database";
    }else{
    return true;
    }
    }

    Ove nomehost, nomeuser, password e database sono variabili private.
    Dove devo dichiarare $connessione come pubblica? All'interno della funzione connetti o all'interno della classe?


    Grazie mille
    Mess With The Best, Die Like The Rest

  4. #4
    All'interno della classe, poi nella funzione dovrai usare "$this->connessione = mysql_connect..."


  5. #5
    Purtroppo mi restituisce questo errore:
    codice:
    Notice: Undefined variable: connessione in C:\wamp\www\RisiKo\config.php on line 19
    
    Fatal error: Cannot access empty property in C:\wamp\www\RisiKo\config.php on line 19
    incollo il codice completo del config.php

    codice:
    <?php
    class MysqlClass
    {
      // parametri per la connessione al database
      private $nomehost = "localhost";    
      private $nomeuser = "user";         
      private $password = "pass";
      private $database = "risiko";
      public $connessione = "";
                  
      // controllo sulle connessioni attive
      private $attiva = false;
     
      // funzione per la connessione a MySQL
      public function connetti()
      {
       if(!$this->attiva)
       {
        $this->$connessione = mysql_connect($this->nomehost,$this->nomeuser,$this->password) or die(mysql_error());
        echo "Connesso a MySQL Server!!
    ";
        mysql_select_db ($this->database) or die(mysql_error());
        echo "Connesso al Database: $this->database";
           }else{
            return true;
           }
        }
       
       // funzione per la chiusura della connessione
       public function disconnetti()
       { 
        if($this->attiva)
        {
         if(mysql_close())
          {
           $this->attiva = false;
            return true;
             }else{
              return false;
             }
            }
        }
        
        /* funzione di selezione giocatore giocatore da aggiornare
        public function aggiorna()
        {
         if(!$this->attiva)
         {
         	
         }
        }*/
    }      
    ?>
    mentre quello per l'aggiornamento dati, aggior.php è:
    codice:
    <?php
    include "config.php";
    // Apertura connessione
    $data = new MysqlClass();
    $data->connetti();
    ?>
    <form action="id.php" method="POST">
    
    
    </p>
    
    
    Aggiorna giocatore: 
      <select name="GIOCATORE">
      	<?php
      		// Ottengo l'elenco dei giocatori
      		$sql_s = "SELECT GIOCATORE FROM classifica ORDER BY GIOCATORE";
      		$ris = mysql_query($sql_s,$data->connessione);
      		$riga = mysql_fetch_array($ris);
      			while ($riga) {
      				echo "<option value=\"".$riga['GIOCATORE']."\">".$riga['GIOCATORE']."</option>";
    				$riga = mysql_fetch_array($ris);
      			}
    	?>	
      </select>
    </p>
    
    
    </p>
    <table width="50%" border="1">
    	<tr>
    	    <td>Punti</td>
    	    <td>Tank Totali</td>
    	    <td>Tank Distrutti</td>
    	    <td>Tank Persi</td>
    	</tr>
    	<tr>
    		<td><input type="text" name="PUNTI" value="" /></td>
    		<td><input type="text" name="TANKTOT" value="" /></td>
    		<td><input type="text" name="TANKDIS" value="" /></td>
    		<td><input type="text" name="TANKPERSI" value="" /></td>
    	</tr>
    </table>
    
    
    </p>
    
    
    </p>
    <input type="submit">
    </form>
    <?php
    $data->disconnetti();
    ?>
    Mess With The Best, Die Like The Rest

  6. #6
    Eh per forza...hai scritto "$this->$connessione"... (sostituzione di variabile...o come diamine si chiama)

  7. #7
    Originariamente inviato da Dascos
    Eh per forza...hai scritto "$this->$connessione"... (sostituzione di variabile...o come diamine si chiama)
    grazie mille!!! Oggi ho imparato una cosa nuova!!!!
    Mess With The Best, Die Like The Rest

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.