• User Attivo

    Ciao,
    scusa ma io non capisco la differenza di una funzione invece che di una query basilare.
    Tu devi prendere sti dati e metterli in un altro file?
    Bene hai detto che includi il file functions.php?
    Per stampare i dati (siccome la pagina è in php) basta che fai un echo e tutto si risolve.
    Ti faccio un esempio.
    Nella pagina file.php includi le funzioni. Ad un certo punto ti serve sapere il nome dell utente.
    [php]
    echo " Nome utente: $nome";
    [/php]
    Ti cambia qualcosa così facendo?
    Hai sempre le 4 variabili a disposizione, basta inserirle dove le vuoi ammesso che includi il file che preleva i dati dal db.

    Saluti.


  • User Attivo

    Si ma anche così non funziona..


  • User Attivo

    @Supernova said:

    Si ma anche così non funziona..
    Complimenti! Sei il primo che riesce a farmi fare le prove in locale 😄

    Allora in questo modo funziona, se a te non funziona butta il pc che come server non rende 😛

    TI POSTO IL CODICE COME MI FUNZIONA A ME POI VEDI TU.
    QUESTO IL FILE STR.PHP CHE MI PRENDE I DATI DAL DB.
    [php]
    $dbhost = "localhost";
    $dbuser = "root";
    $dbpass = "";
    $dbname = "gioco";

    $db = mysql_connect($dbhost, $dbuser, $dbpass);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.php");
    mysql_select_db($dbname, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.php");
    $leggitutorial = mysql_query("SELECT * FROM tutorial WHERE id = '1' ");
    while ($row = mysql_fetch_array($leggitutorial)) {
    $nome = $row["nome"];
    $visite = $row["visite"];
    $descrizione = $row["descr"];
    $testo = $row["testo"];
    }

    mysql_close();
    [/php]
    HO MESSO ID=1 XKE' NON POSSO CONTROLLARE L'ID DEL TUTORIAL. MA TU SISTEMI CON LA VARIABILE.

    E ORA INCLUDO IL FILE E MI STAMPO I DATI IN QUESTO MODO
    [php]
    include("str.php");
    echo "$nome e $visite e $descrizione e $testo";
    [/php]

    Dammi conferma così esulto 😄

    Saluti.


  • Moderatore

    Dammi conferma così esulto Allora forse non hai compreso il suo problema.

    Nessuno dice che la query sia sbagliata. Ma lui richiama una funzione, non un include. E inserendo quel codice in una funzione non ritorna nulla.

    Domanda: hai letto il mio ultimo messaggio? Suppongo di no.

    Altra cosa. Tu supponi che $id sia univoco. Se lo fosse non serve il while.
    Altrimenti è comunque errato in quanto, come detto, ogni volta che il ciclo scorre sovrascrivi le variabili precedentemente assegnate.
    Se posso permettermi un consiglio prima di scrivere codice, ragiona sul metodo... fai prima e commetterai in seguito molti meno errori.

    @supernova:
    Che necessità hai di usare quella funzione? Quando la chiami?
    Vuoi che ti trovi i valori e li metta da parte?
    In tal caso potresti fargli ritornare un array oppure usare variabili globali o anche una variabile di sessione, dipende da cosa ti serve.
    Vuoi solo stampare i valori e richiarmarli di volta in volta?
    Usa un print_r nella funzione.

    Il punto è che non capisco cosa vuoi fare.


  • User Attivo

    @Supernova said:

    [PHP]
    function leggi_tutorial($id){

    $leggi_tutorial = "SELECT * FROM tutorial WHERE id = '$id' ";

    $dati = mysql_query($leggi_tutorial) or die(mysql_error());
    $row = mysql_fetch_array ($dati);

    $nome = $row["nome"];
    $visite = $row["visite"];
    $descrizione = $row["descr"];
    $testo = $row["testo"];

    }
    [/PHP]

    La variabile $id la ricavo da un link proveniente da un altra pagina con il metodo get:

    [PHP]
    $id = $_GET['id'];
    [/PHP]

    Adesso che ci stò pensando su... Sai che quando richiami la funzione nel file principale devi chiamarla in questo modo
    [php]
    function leggi_tutorial($id);
    [/php]

    Io proverei in questo modo
    [php]
    function leggi_tutorial($leggi){

    $leggi_tutorial = "SELECT * FROM tutorial WHERE id = '$id' ";

    $dati = mysql_query($leggi_tutorial) or die(mysql_error());
    $row = mysql_fetch_array ($dati);

    $nome = $row["nome"];
    $visite = $row["visite"];
    $descrizione = $row["descr"];
    $testo = $row["testo"];

    }
    [/php]
    e poi nel principale richiami la funzione
    [php]
    function leggi_tutorial($leggi);
    [/php]
    Così dovrebbe funzionare.

    Saluti.


  • User Attivo

    @sovietiko

    Scusa ma la variabile $leggi che centra? Da dove salta fuori?

    @massy

    Perdonami ma io mi sono sempre limitato a cose più semplici e con tutti questi comandi mi sto incasinando.. cerco di spiegarti nel modo più chiaro possibile ciò che voglio..

    Nel mio sito sono presenti diversi tutorial e volevo, invece che *avere tante pagine del tipo tutorial1.php, ***tutorial2.php ecc ecc, avere un'unica pagina leggi_tutorial.php che variasse e mostrasse il giusto tutorial a seconda del parametro che gli passo tramite link. Quindi se volessi vedere ad esempio il tutorial n.1 basterebbe cliccare su un link che contiene il parametro leggi_tutorial.php?id=1 e la pagina dovrebbe andare a prendere i dati dal database e mostrarmeli.

    A questo punto la pagina leggi_tutorial.php deve però adattarsi ai dati del tutorial che prende dal database, integrandoli nel layout del sito nei posti giusti. Devo quindi poter esser in grado di stampare $nome in un posto, $testo in un altro, $visite in un altro ancora ecc ecc.. Le variabili quindi non posso stamparle all'interno della funzione stessa, ma devo fare in modo che essa siano comunque raggiungibili da qualsiasi altra parte della pagina leggi_tutorial.php.

    La funzione l'avevo scritta nel file function.php perchè ho raccolto tutte le funzioni che utilizzo in quel file, per comodità, anche nel caso dovessi poi utilizzarla pure in altre pagine, ma per me non c'è nessuna differenza se invece di fare l'operazione che mi serve tramite una funzione la faccio scrivendo query e tutto il resto direttamente sulla pagina leggi_tutorial.php. Se possibile preferirei avere una funzione in modo da poterla eventualmente richiamare anche da altre parti, ma se non si può pazienza..

    Spero di esser stato più chiaro e mi scuso con tutti se non lo sono stato in precedenza..

    Se riusciamo a concludere poi non vi disturbo più per un mese:D

    Grazie e ciao


  • Moderatore

    Quindi $id è unico, da quanto ho capito.
    Ecco una cosa molto grezza:

    function leggi_tutorial($id){
    $leggi_tutorial = "SELECT * FROM tutorial WHERE id = '$id' ";
    $dati = mysql_query($leggi_tutorial) or die(mysql_error());
    $row = mysql_fetch_array ($dati);

    $nome = $row["nome"];
    $visite = $row["visite"];
    $descrizione = $row["descr"];
    $testo = $row["testo"];

    echo "<h1>".$descrizione."</h1>";
    echo "<p>".$testo."</p>";
    echo "<div class="autore">scritto da ".$nome." visto ".$visite." volte</div>";

    }

    poi nel file php la richiami ovviamente con

    function leggi_tutorial(1);

    Ps ci son molti modi per fare la stessa cosa meglio, ad esempio creando un template in cui semplicemente sostituire i valori, tanto per dirne una. 🙂

    Se vuoi approfondire appena avrai più dimestichezza con la logica ne riparliamo

    :ciauz:


  • User Attivo

    @massy said:

    Quindi $id è unico, da quanto ho capito.
    Ecco una cosa molto grezza:

    function leggi_tutorial($id){
    $leggi_tutorial = "SELECT * FROM tutorial WHERE id = '$id' ";
    $dati = mysql_query($leggi_tutorial) or die(mysql_error());
    $row = mysql_fetch_array ($dati);

    $nome = $row["nome"];
    $visite = $row["visite"];
    $descrizione = $row["descr"];
    $testo = $row["testo"];

    echo "<h1>".$descrizione."</h1>";
    echo "<p>".$testo."</p>";
    echo "<div class="autore">scritto da ".$nome." visto ".$visite." volte</div>";

    }

    poi nel file php la richiami ovviamente con

    function leggi_tutorial(1);

    Ps ci son molti modi per fare la stessa cosa meglio, ad esempio creando un template in cui semplicemente sostituire i valori, tanto per dirne una. 🙂

    Se vuoi approfondire appena avrai più dimestichezza con la logica ne riparliamo

    :ciauz:

    Allora ci siamo quasi.. in questo modo funziona e potrebbe andar bene.. però io volevo che la parte che stampa i dati, questa:

    [PHP]
    echo "<h1>".$descrizione."</h1>";
    echo "<p>".$testo."</p>";
    echo "<div class="autore">scritto da ".$nome." visto ".$visite." volte</div>";
    [/PHP]

    Fosse possibile scriverla direttamente sulla pagina leggi_tutorial e non dentro la funzione.. avere una cosa del genere insomma:

    Pagina leggi_tutorial.php
    [HTML]
    <?php
    include ("function.php");
    $id = $_GET['id'];
    leggi_tutorial($id);
    ?>
    <html>
    <head>
    </head>
    <body>
    <div>
    <div>
    <h1><?php echo "$nome"; ?></h1>
    <p><?php echo $testo"; ?></p>
    </div> ecc ecc ecc
    [/HTML]

    Ma come posso fare per rendere le variabili che ottengo dalla query nella funzione, utilizzabili anche al suo esterno e in quel contesto?

    Grazie di nuovo, ormai ci siamo quasi:)

    EDIT:
    Ho tolto le operazioni dalla funzione e le ho scritte direttamente su leggi_tutorial, quindi adesso funzia tutto.. Per me va benissimo così, mi piacerebbe però se mi spiegaste come dovrei agire sulle variabili nel caso di cui ho parlato qua sopra.. Ma fate pure con calma, si tratta di semplice curiosità..

    Grazie mille a tutti, siete grandi!


  • User

    Ciao,

    per utilizzare una funzione e recuperare i dati interessati dove vuoi puoi fare così:

    [php]

    function leggi_tutorial($id){
    $leggi_tutorial = "SELECT * FROM tutorial WHERE id = '$id' ";
    $dati = mysql_query($leggi_tutorial) or die(mysql_error());
    $row = mysql_fetch_array ($dati);

    $nome = $row['nome'];
    $visite = $row['visite'];
    $descrizione = $row['descr'];
    $testo = $row['testo'];

    //memorizzi in un array le informazioni ottenute
    return $info = array($nome,$visite,$descrizione,$testo);

    }
    [/php]

    all'interno della pagina richiami la funzione così:

    [php]
    //passi tramite "list" i valori di tutte le variabili contenute nell'array "ritornato" dalla funzione
    list($nome,$visite,$descrizione,$testo) = leggi_tutorial($id);
    [/php]

    adesso ti ritroverai i valori richiamati da db nelle variabili contenute nella funzione list()

    (che ovviamente devono corrispondere nell'ordine a quelle dell'array dichiarato nella funzione)

    subito dopo potrai utilizzare le variabili come credi
    [php]
    echo "<h1>".$descrizione."</h1>";
    echo "<p>".$testo."</p>";
    echo "<div class="autore">scritto da ".$nome." visto ".$visite." volte</div>";
    [/php]

    ciao


  • User Attivo

    Perfetto appena ho tempo provo..

    grazie mille e ciao!!