Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    ajax e php Fatal error: Call to undefined function

    Ciao a tutti sono Andrea e sono nuovo, spero di non aver sbagliato a postare una nuova discussione ma non ne ho trovata una simile, se ho sbagliato mi scuso in anticipo.

    Ho un problema da diverso tempo con un'applicazione scritta in php procedurale, sto cercando di utilizzare ajax ma ricevo degli errori che non comprendo e non credo riguardino la sintassi javascript.

    A breve posterò il codice ma premetto che su WAMP in locale ajax entra nella funzione ma ricevo questo errore "Fatal error: Call to undefined function querySql()" mentre quando lo metto on line sui nostri serve rdi riferimento addirittura ricevo "chiamata fallita" da ajax, di seguito i codici:

    insertservizi.php

    codice:
    <!--ajax php chiamata funzione elimina--> 
            <script type="text/javascript">    
                function elimina(id, funzione) {            
                var id = id;
                var funzione = funzione;
                $.ajax({  
                      type: 'POST',
                      url: 'lib/functions.php',                  
                      data: "id=" + id + "&funzione=" + funzione,
                      dataType: "html",   
                      success: function(risposta) {
                        alert("Chiamata riuscita.");             
                        $("div#risposta").html(risposta); 
                      },
                      error: function(){
                        alert("Chiamata fallita." + id + funzione);
                      } 
                    });
                    return false;
                };
            </script>
    il pulsante ELIMINA viene generato dinamicamente perchè devo creare una lista di servizi, eccolo

    Codice PHP:
    print "<button type='button' name='elimina' value='".$id_serv."' onclick=\"elimina(".$id_serv.", 'delServIntServ');\" class='elimina FR BOTT'><span title='elimina' class='fa fa-times fa-1x' aria-hidden='true'></span></button>"
    functions.php

    Codice PHP:
    /*-----elimina servizio da pagina SERVIZI tramite bottone LISTA COMPLETA SERVIZI-----*/
    if (isset($_POST['id']))  {
        
    $funzione $_POST['funzione'];
        
    $elimina $_POST['id'];
        switch (
    $funzione) {
                case 
    "delServIntServ"
                
    delServIntServ($elimina);           
                break;   
        }
    }
       
    function 
    delServIntServ($elimina) {
            print 
    "entra";
            
    $sqltxt "SELECT id_serv FROM date_serv WHERE id_serv='$elimina'";
            
    $query querySql($sqltxt);
            
    $arrQuery mysqli_fetch_row($query);
            
    $arrNums count($arrQuery);

            if (
    $arrNums == 0) {
                
    $sqltxt "DELETE FROM servizi WHERE id='$elimina'";
                
    $query querySql($sqltxt);

                if (!
    $query) {
                    print 
    "Errore eliminazione record.";
                }
                else {

                    print 
    "Record eliminato.";            
                }
            }
            else {
                    print 
    "Impossibile eliminare record, il servizio è ancora associato ad almeno un Cliente.";              
                } 
    Spero vivamente che qualcuno possa aiutarmi perchè essere bloccato mi sta creando dei problemi.
    Vi ringrazio anticipatamente!
    Andrea
    Ultima modifica di Andrea22php; 18-04-2018 a 11:57

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Se ti da: Fatal error: Call to undefined function querySql()

    Significa che non includi correttamente il file dove è definita quella funzione, nel codice che hai postato non c'è quindi non so essere più specifico.

    Per quanto riguarda la query ajax se hai chrome vai in strumenti per sviluppatori e nella tab network puoi vedere cosa succede durante la query ajax, e soprattutto puoi vedere con quale codice ti risponde il server, in base a quello puoi cercare di restringere dove è il problema.

  3. #3
    Ciao M4V1 e soprattutto grazie per l'aiuto,
    a dire la verità il debug l'ho già fatto e questo è il risultato:

    jquery.js:10254 POST http://fullup-web.it/cpan/lib/functions.php 500 (Internal Server Error)
    send @ jquery.js:10254
    ajax @ jquery.js:9738
    elimina @ insertservizi.php:43
    onclick @ insertservizi.php:120

    inoltre sono certo che il file sia incluso perchè senza ajax funziona benissimo e pur inserendo l'url assoluto http:// (della versione on line) non funziona proprio, anzi ripeto, on line chiamata fallita e su WAMP chiamata riuscita ma con quell'errore Call to undefined function querySql()

    Non ne vengo a capo...

  4. #4
    Ho letto inoltre che potrebbe dare quell'errore da momento che WAMP non abbia installato delle dll ma... io le ho tutte, almeno quelle che ho trovato e che possono causare questo problema..secondo gli utenti del web e le mie ricerche.

  5. #5
    Ciao, ho delle novità, sono riuscito a capire grazie all'intervento dell'utente M4V1 che usando ajax non mi legge la funzione connection() che contiene tutti i parametri di connessione, quindi li ho riportati direttamente dentro la funzione interessata:

    ecco il codice modificato in functions.php

    Codice PHP:
    if (isset($_POST['id']))  {
        
    $funzione $_POST['funzione'];
        
    $elimina $_POST['id'];
        switch (
    $funzione) {
                case 
    "delServIntServ"
                
    delServIntServ($elimina);           
                break;   
        }
    }

    function 
    delServIntServ($elimina) {
            
    $host="localhost";
            
    $user="root";
            
    $pass=""
            
    $db="gestcustomers";           
            
    $conn mysqli_connect($host$user$pass$db); 
            if (!
    $conn) {
                exit(
    "Database non connesso");
            }
            else {
                
    $query mysqli_query($conn"SELECT id_serv FROM date_serv WHERE id_serv='$elimina'");
                
    $arrQuery mysqli_fetch_row($query);
                
    $arrNums count($arrQuery);

                if (
    $arrNums == 0) {
                    
    $query mysqli_query($conn"DELETE FROM servizi WHERE id='$elimina'");

                    if (!
    $query) {
                        print 
    "Errore eliminazione record.";
                    }
                    else {

                        print 
    "Record eliminato.";  
                    }
                }
                else {
                        print 
    "Impossibile eliminare record, il servizio è ancora associato ad almeno un Cliente.";

                    }
            }
        } 
    Ora mi chiedo, è mai possibile che debba riportare tutti i dati in ogni funzione che interagisca con Ajax? Io non credo, sapreste aiutarmi?

    Grazie mille.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Qui c'è metà del codice quindi capire come è strutturato il progetto non è semplice.
    Da quello che ho capito tu chiamavi lo script php che ti gestisce la connessione al db tramite ajax?
    Questo probabilmente ti crea dei problemi perché la chiamata ajax è asincrona mentre il codice chiamante in php non lo è, quindi non è detto che il flusso del programma vada come vuoi tu.

    In ogni caso basterebbe usare un require_once in php per non dover riscrivere lo stesso codice in ogni funzione.

  7. #7
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    In ogni caso basterebbe usare un require_once in php per non dover riscrivere lo stesso codice in ogni funzione.
    Perdonami, hai ragione ti spiego:

    c'è un file insertservizi.php dove prima dello script ajax c'è
    Codice PHP:
    include "../inc/inc_fun.php"
    che richiama tutte le pagine funzione dell'applicazione, inclusa la pagina connection.php (con funzione connection()) e il file functions.php dove c'è lo script php con la funzione delServIntServ che serve ad eliminare il record.

    Avevo provato require_once ma non funziona lo stesso, non la vede.

Tag per questa discussione

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.