Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662

    Funzione... non funzionante.

    Scusate, prima che faccia del male a qualcuna accidalmente gettando un monitor dal 3 piano, mi sapreste dire perchè non mi va questa dannata funzione!?

    Questo è il file "libreria":
    Codice PHP:
    <?php
    session_start
    ();
    include_once 
    'reg/newuser.class.php';

        include 
    "reg/db_config.php";
        
    $connect mysql_connect($host,$user,$password) OR die("Impossibile connettersi al database");
        
    mysql_select_db($db$connect);
        
        
    $id_now=$_SESSION['user_id'];
        
        
    $sql "SELECT * FROM categories WHERE id_user='$id_now'";
        
    $res mysql_query($sql$connect);
        
    $row mysql_fetch_array($res);

        echo 
    "prova se è...";
        echo 
    $id_now;
        echo 
    $row['bank'];



        function 
    i_genere()
        {
            echo 
    $row['bank'];
            echo 
    $row['id_user'];
            if(
    $row['bank']==1)
            {
                include(
    "includes/cp_elements/genere.php");
            }
            else{
                echo 
    "cazzaolaaaaa";
            }
        }


    ?>
    mentre in un altro file php la richiamo così:
    Codice PHP:
    <?php
    require("phpclass/lib_cpannel.php");
    $var1=i_genere();
    echo 
    $var1;
    ?>
    il risultato che mi da è:

    prova se è1321cazzarolaaaaa

    ...dove "prova se è" è l'echo testuale, ...e ok,
    ...132 è l'id, e funziona,
    ...1 è l'interrogazione dal DB e va bene,
    ...cazzarolaaaaa è l'"else"

    Invece dovrebbe darmi l'include
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  2. #2

    Re: Funzione... non funzionante.

    Le variabili
    $row['bank'];
    $row['id_user'];
    sono valorizzate al di fuori della funzione e all'interno non potranno avere alcun valore

    Hai 3 possibilità:
    1) le devi passare alla funzione come parametri
    Codice PHP:
    function i_genere($blank$id
        { 
            echo 
    $blank
            echo 
    $id
            if(
    $blank==1
            { 
                include(
    "includes/cp_elements/genere.php"); 
            } 
            else{ 
                echo 
    "cazzaolaaaaa"
            } 
        } 
    e... ovviamente i parametri gli dovranno essere passati al momento dell'utilizzo
    Codice PHP:
    $var1=i_genere($row['bank'], $row['id_user']); 
    2) rendi l'array richiamato al suo interno variabile globale

    Codice PHP:
     function i_genere() 
        { 
         global 
    $row;
            echo 
    $row['bank']; 
            echo 
    $row['id_user']; 
            if(
    $row['bank']==1
            { 
                include(
    "includes/cp_elements/genere.php"); 
            } 
            else{ 
                echo 
    "cazzaolaaaaa"
            } 
        } 
    3) fai query ed estrazione dei dati tutto all'interno della funzione...

  3. #3
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Grande oly! La seconda mi sembra più pulita (o sbaglio?)

    ...nel frattempo avevo pensato di portarla a "classe", ma ovviamente non va:
    Codice PHP:
    <?php
    session_start
    ();
    include_once 
    'reg/newuser.class.php';

    class 
    fillCPannel{

        protected function 
    takeData(){
            include 
    "reg/db_config.php";
            
    $connect mysql_connect($host,$user,$password) OR die("Impossibile connettersi al database");
            
    mysql_select_db($db$connect);
            
            
    $id_now=$_SESSION['user_id'];
            
            
    $sql "SELECT * FROM categories WHERE id_user='$id_now'";
            
    $res mysql_query($sql$connect);
            
    $row mysql_fetch_array($res);
        }



        function 
    i_genere()
        {
            
    $this->takeData();
            if(
    $row['bank']==1)
            {
                include(
    "includes/cp_elements/genere.php");
            }
            else{
                echo 
    "cazzaolaaaaa";
            }
        }
        
    }

    ?>
    ...e richiamata così:

    Codice PHP:
    <?php include("phpclass/cpannel.class.php"); ?>
    <?php
    $obj 
    = new fillCPannel();
    $obj->i_genere();
    ?>
    secondo te cosa sarebbe meglio? Usare una libreria di funzioni come nel primo caso, oppure usare una classe?
    Come dicevo la classe non va, ...vado avanti con il tuo suggerimento!
    Grazie ancora
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  4. #4
    onestamente... mi sembra tutto molto sbagliato dal punto di vista della progettazione generale dell'applicativo.

    la funzione function takeData() non ha return...

    l'attivazione della connessione mysql generalmente viene fatta separatamente...

    anche il consiglio di settare le variabili come globali era una "pezza"... il loro uso deve esse fatto con molta delicatezza e generalmente viene fatto solo per variabili di settaggio generale...

  5. #5
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    e cosa pretendi, mica sono un programmatore php io!
    Sto cercando di portare a termine un progetto e il vostro aiuto è fondamentale e non finirò mai di ringraziarvi

    Le mie conoscenze di php prima di iniziare il progetto si limitavano a "include" per tenere ordinato un sito... ma ora, sempre grazie ai vostri consigli/insegnamenti, ho finito un sistema di registrazione/autenticazione con tutti i crismi di validazione, e ora sono passato al pannello di controllo (poi verrà la ricerca e la pagina utente).

    Praticamente, devo vedere bene il funzionamento delle classi, giusto?
    Due ultime domande e poi non di tedio più (per ora... )

    Il return della funzione takeData() che sintassi deve avere?
    Se la connessione al db viene fatta separatamente vuol dire che non ha bisogno di essere richiamata nelle funzioni, giusto?

    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

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.