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

    Esportare più variabili da una funzione per utilizzarle in un'altra pagina

    Salve
    Da qualche mese mi cimento con il php, ho seguito un manuale di php4 e proprio dopo aver fatto qualche script, girovagando sui vari siti e seguendo qualche tutorial online, ho scoperto la programmazione ad oggetti.
    Ho appena iniziato e qualcosa mi sembra di aver capito, però mi sono bloccato in un punto.
    Praticamente devo popolare un form con dei dati presi da una tabella mysql:
    Ho un link con un numero id.
    Dalla pagina principale richiamo la funzione corrispondente e ottengo le variabili id, titolo e articolo.
    Codice PHP:
    public function LeggiId($num)
    {
     
    $id$num;
     
    $sql"SELECT * FROM topic WHERE id=$id";
     
    $this->DbConnect();
     
    $resmysql_query($sql,$this->conn) OR die (mysql_error());
     
    $tmp mysql_fetch_array($res);
     
    $id$tmp['id'];
     
    $titolo$tmp['titolo'];
     
    $articolo$tmp['articolo'];
     
    //ora ho impostato le variabili dall'array ma non riesco a stamparle nel documento contenete il form!

    Ora nella pagina contenente il codice html devo inserire i valori ottenuti
    Codice PHP:
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">            <label for="titolo">Inserisci il titolo</label>
    <?php if (isset($_GET['mod'])) {
     
    $num $_GET['mod'];
     include 
    'class/new_article.class.php';
     
    $GetId= new InsertNewArticle();                     
     
    $GetId->LeggiId($num); 
    }?
    <
    input type="hidden" name="id" value="<?php echo $id; ?>"/>
    <
    input type="text" name="titolo" id="titolo" value="<?php echo $titolo;?>"/>
    <?
    php required(); ?>
    <textarea name="editor1"><?php echo $articolo?></textarea>
    <input type="submit" value="INVIA" /></form>
    Ovviamente il codice così come non funziona, come posso fare per ottenere quello che mi serve? Sarei tentato di inserire un echo alla fine della funzione LeggiId() e compilare tutta la parte del form ma sono sicuro esista un metofdo più elegante.
    Grazie!

  2. #2
    Edoardo Vignati
    Guest

    sessioni

    Non so se è quello che stai cercando ma potresti provare ad utilizzare le sessioni php

  3. #3
    Semplicemente, visto che molto probabilmente starai scrivendo una classe, dichiara una variabile di tipo private e all'interno delle funzioni, la userai con $this->variabile

    Molto più brutalmente, puoi usare delle variabili globali con la dicitura global $variabile;.
    CrystalSoft | Software House & Web Agency di WinRefine, Mercante in Fiera e altro...
    Annunci Zoo | Annunci gratuiti per il mondo degli Animali
    ElettroMercatino | Annunci a tema Informatico ed Elettronico

  4. #4
    Originariamente inviato da Emulator ®
    Semplicemente, visto che molto probabilmente starai scrivendo una classe, dichiara una variabile di tipo private e all'interno delle funzioni, la userai con $this->variabile

    Molto più brutalmente, puoi usare delle variabili globali con la dicitura global $variabile;.
    mmm faccio fatica a seguirti, come faccio a sapere che valore dare alla variabile private se il valore stesso è un array?
    Scusa ma essendo un novello autodidatta faccio un pò fatica a capire il meccanismo.

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Potresti farti restituire direttamente l'array $tmp dalla funzione leggiId();

    Codice PHP:

    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">            <label for="titolo">Inserisci il titolo</label>
    <?php if (isset($_GET['mod'])) {
     
    $num $_GET['mod'];
     include 
    'class/new_article.class.php';
     
    $GetId= new InsertNewArticle();                     
     
    $data $GetId->LeggiId($num); 
    }?
    <
    input type="hidden" name="id" value="<?php echo $data['id']; ?>"/>
    <
    input type="text" name="titolo" id="titolo" value="<?php echo $data['titolo'];?>"/>
    <?
    php required(); ?>
    <textarea name="editor1"><?php echo $data['articolo'?></textarea>
    <input type="submit" value="INVIA" /></form>
    Chiaramente poi dovresti controllare se restituisce l'array o null

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    se ho inteso:

    puoi terminare la funzione che recupera i dati con qualcosa come:
    Codice PHP:
    ...
    $id$tmp['id']; 
    $titolo$tmp['titolo']; 
    $articolo$tmp['articolo']; 
    return (array(
      
    'id' => $id,
      
    'titolo' => $titolo,
      
    'articolo' => $articolo,
    )); 
    e dove lo usi avrai:
    Codice PHP:
    ...
    $GetData xxx->LeggiId($num);
    $id $GetData['id'];
    $titolo $GetData['titolo'];
    $articolo $GetData['articolo']; 
    ...

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Originariamente inviato da eiyen

    Codice PHP:
    ...
    $id$tmp['id']; 
    $titolo$tmp['titolo']; 
    $articolo$tmp['articolo']; 
    return (array(
      
    'id' => $id,
      
    'titolo' => $titolo,
      
    'articolo' => $articolo,
    )); 
    ...
    Leggermente ridondante, non trovi ?
    Basta il return $tmp

  8. #8
    Ciao a tutti , mi collego alla discussione in quanto ho più o meno le stesso problema ed è tutta la sera che provo a risoverlo!
    Allora io ho un file chiamato function.php contenente la seguente funzione:

    Codice PHP:
    function recupero_db($campi,$tabella,$filtri) {
        
    $query_sql "SELECT $campi FROM $tabella$filtri";
        
    $result_sql mysql_query($query_sqlgetConnection());
        return 
    mysql_fetch_assoc($result_sql);

    L'idea è di salvare la funzione in modo da richiamarla e non dover riscrivere 100 volte le query.

    Ho fatto una prova inserendo in un secondo file il seguente codice:

    Codice PHP:
    while($row_sql recupero_db("pubb_id,pubb_nome","pubblicita"" WHERE active=1")) {
         echo 
    "<option value='$row_sql[pubb_id]'>$row_sql[pubb_nome]</option>";

    il problema è che in questo modo mi stampa 200.000 volte il primo valore (e in questo caso sono presenti solo due righe nel db), Mi aiutate a capire per favore dove sbaglio?
    Grazie mille!
    Ciao

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Mi pare ovvio:
    Ogni volta nel while richiami la funzione recupero_db, che rifà la query sul db e ti restituisce di consegueza sempre il primo elemento.

    Se la tua funzione si trova in una classe, potresti mettere il risultato della query in una campo privato e crearti un metodo getNext() che fa mysql_fetch_assoc su quel campo. Se non usi una classe devi usare una variabile globale.

    In alternativa, ma non so quanto sia efficiente, potresti prepararti l'array in modo da non dover usare fetch_assoc

    Codice PHP:
    function recupero_db($campi,$tabella,$filtri) {
        
    $query_sql "SELECT $campi FROM $tabella$filtri";
        
    $result_sql mysql_query($query_sqlgetConnection());
        
    $result = array();
        while(
    $row_sql mysql_fetch_assoc($result_sql) ){
            
    array_push($result$row_sql);
        }
        return 
    $result;
    }

    // nella pagina
    $rows recupero_db("...""...""...");
    foreach(
    $rows as $row){
        echo 
    "...".$row['pubb_id']."...";


  10. #10
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Oppure, più semplicemente

    Codice PHP:
    function recupero_db($campi,$tabella,$filtri) {
        
    $query_sql "SELECT $campi FROM $tabella$filtri";
        return 
    mysql_query($query_sqlgetConnection());
    }

    // nella pagina
    $rows recupero_db("...""...""...");
    while(
    $row mysql_fetch_assoc($rows)) {
         echo 
    "<option value='$row_sql[pubb_id]'>$row_sql[pubb_nome]</option>";


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.