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

    problema con stampa valore di una funzione

    ciao,
    riposto il problema che non riesco a risolvere..

    ho 2 file
    nel file file1.php ho una select multipla in cui seleziono 2 valori.
    al submit, tramite uno switch, l'action del form mi rimanda al file2.php in cui c'è una funzione con una query SELECT per estrarre il valore che mi interessa.
    Codice PHP:
    function query() {
        if (isset(
    $_POST['id_area']) && isset($_POST['id_pag'])) {
            
    $query mysql_query("SELECT prezzo FROM tbl_shipping WHERE id_area = ".$_POST['id_area']." AND id_pag = ".$_POST['id_pag']." AND id_abb ='0'")or die(mysql_error());
              
    $row dbFetchAssoc($query);
             
    extract($row);
     return 
    $prezzo;

        } return 
    "no";

    a questo punto in file1.php richiamo il return della funzione con
    Codice PHP:
    echo query(); 
    e dovrebbe stamparmi il valore di $prezzo.
    dico dovrebbe, perchè invece mi da l'errore di
    Fatal error: Call to undefined function: query()
    non capisco perchè!!
    sono bloccato qui e non riesco ad andare avanti..

  2. #2
    se la funzione query() sta in file2.php e tu la richiami in file1.php devi fare l'inclusione di file2.php in file1.php...scusa il gioco di parole, ma spero di aver spiegato il senso

    quindi file1.php sarà:

    Codice PHP:
    require_once("file2.php");
    // tuo codice


    echo query(); 
    poi comunque $id_area e $id_pag dovresti passarli come variabili alla funzione query(). Una funzione non può andare a leggere i valori del post. Quindi io la trasfoemerei così:
    Codice PHP:
    function query($id_area$id_pag
    {
        if (isset(
    $id_area) && isset($id_pag))
        {
            
    $query mysql_query("SELECT prezzo FROM tbl_shipping WHERE id_area = ".$id_area." AND id_pag = ".$id_pag." AND id_abb ='0'")or die(mysql_error());
            
    $row dbFetchAssoc($query);
            
    extract($row);
            return 
    $prezzo;

        } 
        return 
    "no";

    poi ovviamente quando la richiami devi passare i due parametri.








    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  3. #3
    ciao 13manuel84,
    dunque a parte il file da includere che c'era,
    ho fatto come hai scritto, ma continua a darmi lo stesso errore.

    poi ovviamente quando la richiami devi passare i due parametri.
    non ho capito cosa intendi per passare i 2 parametri.

  4. #4
    aspetta perché devo vedere se ho capito bene...

    tu hai un file1.php in cui hai un form e al momento del submit rimandi a file2.php, e poi da file2.php ritorni a file1.php? è questo passaggio qui che non mi è chiaro.

    Poi dicevo dei 2 parametri perché dentro una funzione non vedi il contenuto dell'array $_POST, ma magari mi sbaglio, ed è per questo che ti dicevo di passarle come parametri, quindi al momento del richiamo:

    echo $query($var1, $var2);
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  5. #5
    Originariamente inviato da 13manuel84
    aspetta perché devo vedere se ho capito bene...

    tu hai un file1.php in cui hai un form e al momento del submit rimandi a file2.php, e poi da file2.php ritorni a file1.php? è questo passaggio qui che non mi è chiaro.
    si è esatto. da file1.php passo le 2 var $_POST['id_area'] e $_POST['id_pag'] alla query della funzione in file2.php.
    eseguita la query, il valore che ricavo e che mi interessa è return $prezzo; che lo devo stampare in file1.php

    però così com'è, anche dopo le modifiche che hai suggerito, continua a darmi quel
    Fatal error: Call to undefined function: query()
    alla riga del echo query($id_area, $id_pag);

    non so! c'è qualcos'altro che sbaglio?

  6. #6
    il file2.php lo usi solo per quella funzione?
    se sì, dal mio punto di vista ti converrebbe eliminarlo e fare tutto in file1.php, modificando quindi anche l'action del form.

    quindi ti dichiari la tua funzione query() dove vuoi e poi farai una cosa del genere:
    Codice PHP:
    <?php
    if (isset($_POST) && sizeof($_POST)>0)
    {
        
    $id_area=$_POST['id_area'];
        
    $id_pag=$_POST['id_pag'];
        echo 
    query($id_area$id_pag);
    }
    ?>

    così non può dirti che la funzione non esiste essendo nella stessa pagina...anche se prima facendo l'include non capivo perché ti dava quell'errore :master:
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  7. #7
    purtroppo no, il file2.php viene usato anche per altre funzioni.


    in pratica l'action del form richiama la funzione updateCart() in cui io ho inserito un'altra funzione ( si può vero annidare funzioni... :master: )
    ti posto l'intero codice per quella funzione ( parliamo sempre del file2.php):


    Codice PHP:
    function updateCart()
    {

       
    $id_area $_POST['id_area'];
       
    $id_pag =  $_POST['id_pag'];
        
    $cartId     $_POST['hidCartId'];
        
    $productId  $_POST['hidProductId'];
        
    $itemQty    $_POST['txtQty'];
        
    $numItem    count($itemQty);
        
    $numDeleted 0;
        
    $notice     '';

        for (
    $i 0$i $numItem$i++) {
            
    $newQty = (int)$itemQty[$i];
            if (
    $newQty 1) {
                
    // remove this item from shopping cart
                
    deleteFromCart($cartId[$i]);
                
    $numDeleted += 1;
            } else {
                
                
    // update product quantity
                
    $sql "UPDATE tbl_cart
                        SET ct_qty = 
    $newQty
                        WHERE ct_id = 
    {$cartId[$i]}";

                
    dbQuery($sql);
            }

        
    //FUNZIONE QUERY CHE MI INTERESSA E DA ERRORE

    function query($id_area$id_pag)
    {
        if (isset(
    $id_area) && isset($id_pag))
        {
            
    $query mysql_query("SELECT prezzo FROM tbl_shipping WHERE id_area = ".$id_area." AND id_pag = ".$id_pag." AND id_abb ='0'")or die(mysql_error());
            
    $row dbFetchAssoc($query);
            
    extract($row);
            return 
    $prezzo;

        }
        return 
    "no";
    }

            }

        if (
    $numDeleted == $numItem) {
            
    // if all item deleted return to the last page that
            // the customer visited before going to shopping cart
            //header("Location: $returnUrl" . $_SESSION['shop_return_url']);
            
    header('Location: home.php?page=cart');
        } else {
            
    header('Location: home.php?page=cart');
        }

        exit;

    purtroppo, devo tenere la funzione query() all'interno, a meno che non esista un modo di "eludere" il form action di file1.php

  8. #8
    ah allora è tutto più chiaro, tu puoi anche annidare funzioni ( anche se non l'ho mai fatto e non so quanto sia performante ) però in questo caso la funzione query() essendo dichiarata dentro un'altra funzione la puoi richiamare solo dall'interno di quella funzione, al di fuori non te la vede, è per quello che ti dava errore.


    ma visto che all'interno di updateCart() non la usi non la puoi dichiarare fuori?





    ciao!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  9. #9
    e poi comunque per far stampare qualvcosa devi richiamare la funzione esterna...


    Codice PHP:
    <?php
    echo updateCart();

    function 
    updateCart()
    {
        function 
    query($id_area$id_pag)
        {
            return 
    $id_area." - ".$id_pag;
        }
        
        echo 
    query(78);
        
    }
    ?>
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  10. #10
    ma visto che all'interno di updateCart() non la usi non la puoi dichiarare fuori?
    no perchè l'action del form richiama proprio updateCart(). e quindi devo fare in modo che eseguendola, mi esegui anche la funzione query() che è annidata.
    quindi, come faccio a richiamare una funzione dentro a un altra funzione?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.