Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114

    Ajax non si connette al Database

    Le ho provate davvero tutte, ma sembra che quando apro il file .php in open(), questo fa tutto quello che chiedo tranne connettersi al database.

    Metto un pò di codice semplice semplice per far capire.
    index.php
    Codice PHP:
    <div id="res"></div>
    <
    script>
    function 
    src_w(wch) {
        var 
    xmlhttp;
        if (
    window.XMLHttpRequest) {
            
    xmlhttp = new XMLHttpRequest();
        }
        else {
            
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        
    xmlhttp.onreadystatechange = function() {
            if (
    xmlhttp.readyState == && xmlhttp.status == 200) {
                  
    document.getElementById("res").innerHTML += xmlhttp.responseText;
            }
        };
        
    xmlhttp.open("GET"wchfalse);
        
    xmlhttp.send();
    }

    src_w('function.php');
    </script> 
    function.php
    Codice PHP:
    $sql 'SELECT * FROM mytable';
    $result mysqli_query($conn$sql);
    if (
    $result) {
        echo 
    "Questo non viene stampato";
    }
    echo 
    "Questo viene stampato"
    Se chiedo mysqli_ping nella pagina index.php il risultato è 1, mentre se lo chiedo in function.php ottengo niente proprio come niente viene stampato in $result!

    Ho provato di tutto, anche ripetere la connessione nella pagina function.php, ma mi da errore di password, mentre se includo anche il config.php sembra non funzionare niente (ma scompare l'errore ).

    Lo script postato non è quello di cui ho bisogno ma è tanto per farvi capire, perchè ho provato finanche questo!!

    Grazie ancora infinite.
    Ultima modifica di Igreo; 20-11-2015 a 02:13

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ne capisco 0 di PHP ma non credo proprio che quel codice funzioni senza i tag di aperture e chiusura e senza aprire il DB.

    E poi che c'azzecca mysqli_ping che citi ma non posti?

    ps: volendo fare i pignoli, direi che difficilmente con ajax potrai connetterti ad un database, quindi il titolo e' proprio sbagliato
    Ultima modifica di br1; 20-11-2015 a 22:00
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    io non so proprio come fare.. ad esempio se in un input text ho lo script my_function() che parte in onkeydown (da leggere i Commenti in linea).

    index.php
    Codice PHP:
    <div id="risultato">RISULTATO AJAX = </div//Qui immetterò i risultati della funzione (cioè gli echo!)
    <form action=...> //passo sopra al form che penso sia irrilevante in questo caso
    <input type="text" onkeydown="myfunction('function.php?pressedkeys=' +this.value);" /> //La funzione nel file script.js è richiamata dall'evento onkeydown
    </form
    function.php
    Codice PHP:
    <?php
    include('config.php');
    echo 
    "ciao"//Già qui se includo il file sopra non scrive nulla, mentre se tolgo include scrive "ciao"
    $pressed $_GET['pressedkeys'];
    if (!empty(
    $pressed)) {
        
    $connessione mysqli_connect('localhost'$user$password$database); //tutti dati presenti in config.php e che normalmente funzionano all'interno delle pagine normali!
        
    if (!$connessione) {
            die(
    mysqli_connect_error());
        }
        
    mysqli_select_db($conn'ajax_demo'); //spesso ho trovato questa chiamata in script che facevano la medesima cosa ma non capisco a cosa serve..
        
    $ask_db 'SELECT * FROM myusers'//Chiedo una semplice query...
        
    $result mysqli_query($connessione$ask_db);
        if (
    $result) {
            echo 
    "ciao"//Un semplice echo per provare che c'è stato un risultato della query, ma che fino ad oggi non sono mai riuscito a vedere!
        
    mysqli_free_result($result);
        }
        echo 
    $pressed//Qui mi stampa la variabile GET qualora non inserisco la connessione al database
        
    mysqli_kill();
        
    mysqli_close();
    }
    ?>
    script.js
    Codice PHP:
    var xhttp;
    function 
    src_usr(wch) {
        if (
    window.XMLHttpRequest) {
            
    xhttp = new XMLHttpRequest();
        }
        else {
            
    xhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        
    xhttp.onreadystatechange = function() {
            if (
    xhttp.readyState == && xhttp.status == 200) {
                  
    document.getElementById("risultato").innerHTML += xhttp.responseText;
            }
        };
        
    xhttp.open("GET"wchfalse);
        
    xhttp.send();

    Grazie ancora!
    Buon weekend

    PS. Dimenticavo di dire che cmq il primo echo che riesco a stampare è sempre dopo due eventi onkeydown, cioè alla seconda digitazione. Facendo un pò di prove ho visto che la variabile $_GET viene stampata solo dopo il secondo onkeydown, mentre se sopra della chiamata if (!empty($pressed)) metto un echo qualsiasi, quest'ultimo viene stampato subito alla prima digitazione dell'evento. ??
    Ultima modifica di Igreo; 21-11-2015 a 05:56

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Per capire dov'è l'errore devi dividere Ajax da php. Se richiami la pagina function.php dal browser cosa stampa? La query viene eseguita correttamente?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Si certo.. sia senza la riconnessione al database perchè è già connesso visto che lo chiudo a fine pagina, sia con una ulteriore connessione al database (parlo dell'esempio "function.php" postato poco sopra)!

    Ci ho perso un pò di tempo e francamente non ne riesco a venire a capo, mi sembra molto strano! Dovrebbe funzionare. Stavo pensando a problemi del server (che utilizza oltretutto MariaDB) o alla configurazione del .ini; altro in mente non mi viene!!

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Dubito che sia colpa del server non andrebbe sempre mentre se esegui la pagina function.php funziona, pista un link alla pagina pubblica
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, non ho seguito l'intera discussione ma mi è saltato subito all'occhio questo grosso e(o)rrore:

    codice:
        xhttp.onreadystatechange = function() {
            if (xhttp.readyState == 4 && xhttp.status == 200) {
                  document.getElementById("risultato").innerHTML += xhttp.responseText;
            }
        };
        xhttp.open("GET", wch, false);
    Stai facendo una richiesta AJAX in modalità sincrona (specificato dal false su open) e stai usando il gestore di evento onreadystatechange (che per definizione è asincrono). Le due cose non possono coesistere.

    Se fai una chiamata sincrona non dovrai usare onreadystatechange ma scrivere lo script direttamente a seguire quella chiamata.

    Ad ogni modo è altamente consigliato eseguire chiamate sempre in modo asincrono, per cui dovresti indicare true su open.

  8. #8
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Dubito che sia colpa del server non andrebbe sempre mentre se esegui la pagina function.php funziona, pista un link alla pagina pubblica
    Purtoppo è una pagina del profilo e non pubblica. ..Vedrò di farne una apposita!

    Mentre per quanto riguarda il TRUE o FALSE.. li ho provati entrambi, cmq certamente approfondirò l'argomento.
    Grazie! ...

  9. #9
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Dunque anche se metto TRUE non cambia:

    Se includo il file config.php (con database e password) non funziona più niente! Ma se non lo includo mi scrive:
    Access denied for user ''@'localhost' (using password: NO) e se prima della connessione metto una echo qualsiasi questa viene stampata, ma se metto un echo con la variabile del database (user o password) queste sono nulle!

    In pratica non legge il config.php che io ho incluso nell'header delle pagine e se lo rincludo in function.php lo script non funziona per niente!

    :'(

  10. #10
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Dunque anche se metto TRUE non cambia
    Ciò che posso dirti è che se usi false non puoi usare l'evento onreadystatechange, su questo non si discute. E' presumibile che ci siano diversi errori/problemi e uno era quello. A livello AJAX potrebbero esserci dei problemi relativi al cross-domain/cross-origin, ma non vedendo l'intero contesto è difficile capire.
    Ad ogni modo, come già ti hanno consigliato, dovresti dividere la parte PHP da quella JavaScript. Da quello che indichi sembrerebbe che ci siano problemi per ciò che riguarda specificatamente la parte PHP, dovresti quindi assicurarti di risolvere quei problemi prima di analizzare la parte JavaScript, ma qui sei nella sezione sbagliata.

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.