• Super User

    Passaggio variabili esterne

    Salve a tutti innanzitutto.
    Sono un neofita del php e molte cose non mi sono chiare.
    Ho una domanda elementare.
    Ci si può riferire ad una variabile presente in una funzione di un file esterno.php?

    Mi spiego meglio.
    Ho una pagina principale e voglio realizzare al suo interno una zona "news" costantemente aggiornate.

    Ho realizzato una connection.php principale con questa funzione:

    class connessioni{
            
            function DB(){
            $link=mysqli_connect("xxx.xxx.xxx.xxx","nomeutente","password")
                or die("Errore di connessione all'host xxx.xxx.xxx.xxx.". mysql_error());
            mysqli_select_db($link,'nomedatabase') or die("Database non trovato o non presente");
            }
            
    }
    ```In una seconda pagina chiamata NEWS.PHP
    

    <?php
    include "connection.php";

    $connessioni=new connessioni;
    $connessioni->DB();
    $query="SELECT * FROM ...."

    ?>

    
    mysqli_query($link,$query);
    Dove $link è il parametro presente nella funzione della classe $connessioni.
    
    C'è un modo?
    (spero di essermi spiegato °_° )

  • Super User

    Ciao karedas e benvenuto nel forum GT,
    se ho ben capito la tua richiesta,potresti provare così:
    [php]
    class connessioni{

        function DB(){
        $link=mysqli_connect("xxx.xxx.xxx.xxx","nomeutente","password")
            or die("Errore di connessione all'host xxx.xxx.xxx.xxx.". mysql_error());
        mysqli_select_db($link,'nomedatabase') or die("Database non trovato o non presente");
        }
    

    function query($query){
    return mysql_fetch_assoc(mysqli_query($query));
    }
    }
    [/php]

    Poi per effettuare una query fai così:
    [php]$result=$connessioni->query("SELECT * FROM ....");[/php]

    In questo modo $result è un array associativo dei risultati della query 😉
    Se invece non ho capito bene,spiegati meglio così da poter risolvere insieme 🙂
    Ciao!


  • Super User

    ok ti ringrazio intanto per la risposta.
    Però ora ho un secondo quesito. Tramite alcune documeentazioni ho ricreato il codice + pulito:

    [php]
    <?php

    /* classe generale di connessione */

    class connessioni{

    var $db_host;
    var $db_user;
    var $db_pwd;
    var $db_name;
    var $db_stat;

    function connessioni($host,$user,$pwd,$dataname){
    $this->db_host= $host;
    $this->db_user= $user;
    $this->db_pwd= $pwd;
    $this->db_name= $dataname;
    }
    function DB_connect(){
    $this->db_stat=mysql_connect($this->db_host,$this->db_user, $this->db_pwd);
    if($this->db_stat == FALSE) die ("Errore di connessione all'host $host". mysql_error());
    mysql_select_db($this->db_name, $this->db_stat) or die("Database non trovato o non presente");
    }

    function DB_close(){
    mysql_close($this->db_stat);
    }

    function GetData($query){
    $this->DB_connect();
    $result= mysql_query($query,$this->db_stat);
    return mysql_fetch_assoc(mysql_query($query));
    $this->DB_close();
    }
    function SendData($query){
    $this->DB_connect();
    $result=mysql_query($query,$this->db_stat);

    $this->DB_close();
    
    }
    

    }
    [/php]Ora ho un paio di domande.
    [php]$result=$connessioni->query("SELECT * FROM ...."); [/php]3 - Nell'ultima porzione di codice che ho scritto, la classe ha la funzione primaria che legge i dati di connnessione inviati dall'esterno.

    [php]include('connection.php');
    $conn=new connessioni('xxx.xxx.x.xxx','user','pwd','database');[/php].

    Ora qui c'è una cosa che non mi è chiara.
    Questa porzione di codice dove è bene che la metta? E come?
    Ho paura che mettendola nella pagina principale , oltre ad affollare il codice, questo possa essere criptato e qualcuno possa in qualche modo leggere il nome utente e la password per manipolare il mio database.
    Graaazzie!


  • Super User

    Allora torno nei miei dubbi.
    Oltre all'ultima domanda che ho fatto sopra , sono in alto mare per altro.

    Vorrei una funzione che, richiamata dalla home-page, legga le ultime news sul DB e rimandi in html alla home page i risultati.

    Ho creato una cosa del genere seguendo i risultati precedenti:

    [php]<?php

    include('connection.php');
    $conn=new connessioni('xxx.xxx.xxx.xxx,'user','pwd','easysystem');
    $Nquery=$conn->GetData("SELECT title_news, long_desc_news, data FROM news WHERE(news_tipo='1')");
    $NOquery=$conn->GetData("SELECT title_news, long_desc_news, data FROM news WHERE(news_tipo='2')");

        function newnews(){        
        while($row=mysql_fetch_array($Nquery)){
        $id_news=$row[id_news];
        $data=$row[data];
        $title_news=$row[title_news];
        $long_desc_news=$row[long_desc_news];
        echo "<ul class='menuUL'>
              <li><a href='#' id=".$id_news.">".$data."</li>
              <li> - ".$title_news."</a></li>
               <li><span>".$long_desc_news."</span></li>";
        }
    echo "<li>Vedi le altre notizie</li></ul>";
    

    }
    function OLDnews(){//vecchie notizie}
    newnews();
    ?>[/php]ora.
    Questa stringa [php]while($row=mysql_fetch_array($Nquery))[/php] mi crea dei grossi problemi.
    Se provo a mettere while($row=$Nquery){...
    mi crea dei campi infiniti e devo stoppare al volo il browser prima che mi faccia entrare in situazione critica il pc.
    Se lascio com'è mi genera questo errore:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\easysystem\provaphp.php on line 8

    Non so come fare.
    In più non so se è strutturato bene il codice così.
    Per esempio la variabile
    [php]$Nquery=$conn->GetData("SELECT title_news, long_desc_news, data FROM news WHERE(news_tipo='1')");[/php] e quella sottostante posso/devo metterle all'interno della funzione newnews? (e quella sotto in oldnews).
    HELP :yuppi: