Visualizzazione risultati 1 fino 9 di 9

Discussione: Ajax e php

  1. #1
    Guest

    Exclamation Ajax e php

    Non sono sicuro sia la sezione giusta ma ci provo lo stesso

    Mi sto avvicinando all'ajax e su internet ho trovato uno script di prova che è diviso in due pagine:

    -pagina html con input e risultato ricerca,
    -pagina php che estrae i dati dal db.

    io ho necessità di mettere tutto su una pagina quindi lo script ora è così(con qualche mia modifica):

    Codice PHP:
    <html>
    <body>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script language="javascript" type="text/javascript">
    function PostData() {
    // 1. Create XHR instance - Start
    var xhr;
    if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
    xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    else {
    throw new Error("Ajax is not supported by this browser");
    }
    // 1. Create XHR instance - End

    // 2. Define what to do when XHR feed you the response from the server - Start
    xhr.onreadystatechange = function () {
    if (xhr.readyState === 4) {
    if (xhr.status == 200 && xhr.status < 300) {
    document.getElementById('ajaxDiv').innerHTML = xhr.responseText;
    }
    }
    }
    // 2. Define what to do when XHR feed you the response from the server - Start

    var name = document.getElementById('name').value;
    var age = document.getElementById('age').value;
    var wpm = document.getElementById('wpm').value;
    var sex = document.getElementById('sex').value;

    // 3. Specify your action, location and Send to the server - Start
    xhr.open('POST','prova2.php',true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("age=" + age + "&sex=" + sex + "&wpm=" + wpm + "&name=" + name);
    // 3. Specify your action, location and Send to the server - End
    }
    </script>

    <div id='ajaxDiv'>
    <?
    $username
    = "";
    $password = "";
    $host = "localhost";
    $database = "";

    $db=mysql_connect($host, $username, $password) or die("Errore durante la connessione al database");
    mysql_select_db($database, $db) or die("Errore durante la selezione del database");

    $query = "SELECT * FROM ajax_example";
    //Execute query
    $qry_result = mysql_query($query) or die(mysql_error());

    //Build Result String
    $display_string = "<table>";
    $display_string .= "<tr>";
    $display_string .= "<th>Name</th>";
    $display_string .= "<th>Age</th>";
    $display_string .= "<th>Sex</th>";
    $display_string .= "<th>WPM</th>";
    $display_string .= "</tr>";

    // Insert a new row in the table for each person returned
    while($row = mysql_fetch_array($qry_result)){
    $display_string .= "<tr>";
    $display_string .= "<td>$row[name]</td>";
    $display_string .= "<td>$row[age]</td>";
    $display_string .= "<td>$row[sex]</td>";
    $display_string .= "<td>$row[wpm]</td>";
    $display_string .= "</tr>";
    }
    $display_string .= "</table>";
    echo
    "$display_string";
    ?>


    <br>
    <form name='myForm' >
    Name: <input type='text' id='name' /> <br />
    Max Age: <input type='text' id='age' /> <br />
    Max WPM: <input type='text' id='wpm' />
    <br />
    Sex: <select id='sex'>
    <option value="m">m</option>
    <option value="f">f</option>
    </select>
    <input type='button' onclick='PostData()'
    value='Invia'/>
    </form>
    </div>
    </body>
    </html>


    <?php

    // Retrieve data from Query String
    $name = $_POST['name'];
    $age = $_POST['age'];
    $sex = $_POST['sex'];
    $wpm = $_POST['wpm'];
    if(isset(
    $age)){

    $insert = "INSERT INTO `ajax_example` (`name`, `age`, `sex`, `wpm`) VALUES ('$name', '$age', '$sex', '$wpm')";
    $res = mysql_query($insert) or die(mysql_error());

    // Escape User Input to help prevent SQL Injection
    $age = mysql_real_escape_string($age);
    $sex = mysql_real_escape_string($sex);
    $wpm = mysql_real_escape_string($wpm);
    //build query
    $query = "SELECT * FROM ajax_example";
    //Execute query
    $qry_result = mysql_query($query) or die(mysql_error());

    //Build Result String
    $display_string = "<table>";
    $display_string .= "<tr>";
    $display_string .= "<th>Name</th>";
    $display_string .= "<th>Age</th>";
    $display_string .= "<th>Sex</th>";
    $display_string .= "<th>WPM</th>";
    $display_string .= "</tr>";

    // Insert a new row in the table for each person returned
    while($row = mysql_fetch_array($qry_result)){
    $display_string .= "<tr>";
    $display_string .= "<td>$row[name]</td>";
    $display_string .= "<td>$row[age]</td>";
    $display_string .= "<td>$row[sex]</td>";
    $display_string .= "<td>$row[wpm]</td>";
    $display_string .= "</tr>";

    }
    $display_string .= "</table>";
    echo
    "$display_string";
    }
    ?>
    lo script diciamo che funziona però il mio intento sarebbe questo:

    - apro la pagina mostro i record già presenti nel db,
    - inserisco nuovi record e lo script me lo deve mostrare appena inserito.

    questo è quello che succede quando apro la pagina:


    questo quello che accade quando invio dati:


    come vedete mi rimangono sopra i dati vecchi e sotto quelli nuovi...come faccio per mostrarli solo sopra, cioè sovrascrivendo quelli vecchi?
    Siate clementi

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Comincerei togliendo tutta quella parte Ajax che di fatto non stai usando perché il form viene inviato alla pagina in maniera, diciamo così, "classica".

    Fatto quello dovrebbe risultati chiaro che lo script PHP deve prima verificare se c'è qualcosa da inserire nel database e poi visualizzare quello che c'è.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    Guest

    Predefinito

    Ma scusa io ho bisogno di usare lo script ajax e tu mi dici di toglierlo? e comunque fa quel che deve...se io inserisco nuovi dati me li mostra senza aggiornare la pagina ed è quel che voglio.
    In pratica io devo mostrare i dati già presenti nel database e aggiungerci quelli nuovi proveniente dal form, questa cosa avviene ma solo nelle scritte sotto al form, le scritte sopra mostrano i risultati vecchi.
    Sono sicuro che è una cosa fattibile perchè di siti così se ne vedono a bizzeffe ma se tu mi dici di rimuovere l'unica parte che io ho bisogno di far funzionare direi che non andiamo da nessuna parte.

    EDIT: ora che lo noto mi rispondi ad ogni thread con sufficienza e quasi sempre non rispondi alla domanda che si pone...se non hai voglia di rispondere non farlo, altrimenti tanto vale scrivere +1.
    Ultima modifica di gbtchiaravalle : 27-01-2014 alle ore 14.46.57

  4. #4
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Devi per forza utilizzare XHR o puoi anche passare all'AJAX "classico"?
    Te lo chiedo perché sono in grado di aiutarti solo con AJAX (XHR per me è arabo)...

    Comunque sia, quello che dovresti fare sarebbe stampare i risultati PHP in un div e, all'invio del form, richiamare i nuovi risultati sostituendoli a quelli contenuti nel div precedentemente creato. Tutto ciò utilizzando JS puro o jQuery... nulla di difficile!

    Ciao!

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    Devi per forza utilizzare XHR o puoi anche passare all'AJAX "classico"?
    Te lo chiedo perché sono in grado di aiutarti solo con AJAX (XHR per me è arabo)...
    Non so cosa intendi ma XHR, o meglio XMLHttpRequest è il cuore di AJAX. Poi magari tu usi librerie e/o framework (tipo jQuery) che si caricano del lavoro sporco, ma non per questo si scindono le cose.

  6. #6
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Citazione Originalmente inviato da vplaza Visualizza messaggio
    Non so cosa intendi ma XHR, o meglio XMLHttpRequest è il cuore di AJAX. Poi magari tu usi librerie e/o framework (tipo jQuery) che si caricano del lavoro sporco, ma non per questo si scindono le cose.
    Mi perdoni professore, la lezione oggi non l'ho studiata...
    La frase "XHR per me è arabo", penso che voglia dire "non so cosa sia XHR" e, di conseguenza, non so che XHR è il cuore di AJAX.
    Comunque sia, questo thread non è stato aperto per discutere sull'XHR, per cui, visto che conosci questo linguaggio meglio di me, penso che sia più opportuno rispondere al primo post che a me.
    Parere personale (nonché OT, e mi scuso)

    Ciao!

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    Mi perdoni professore, la lezione oggi non l'ho studiata...
    Sei solo un ragazzino presuntuso ed anche parecchio ignorante.

    Conosci a malapena l'AB (senza la C) e ti ergi in cattedra.
    Buona giornata prof.

    Chiuso OT. Addio

  8. #8
    Guest

    Predefinito

    Sono riuscito nel mio intento ma ci sono riuscito usando jquery e poi, a quanto pare, non c'è verso di mettere tutto su una pagina, vabbè poco male ;)

    EDIT: però ho una domanda: come interrompo una chiamata ajax se nel file php sono prensenti dei die()? cioè come riproduco i controlli che faccio in php anche sull'ajax?

    esempio: io se inserisco nel form un nome già in uso quando faccio il submit lo script php mi dice che è già in uso, ho capito che ajax ignora i die() del php quindi come fermo lo script ajax?

    EDIT2: ho trovato soluzione anche per questo!
    Ultima modifica di gbtchiaravalle : 28-01-2014 alle ore 01.33.47

  9. #9
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Citazione Originalmente inviato da gbtchiaravalle Visualizza messaggio
    Sono riuscito nel mio intento ma ci sono riuscito usando jquery e poi, a quanto pare, non c'è verso di mettere tutto su una pagina, vabbè poco male ;)
    Certo che si può, basta inserire all'inizio della pagina un controllo, qualcosa del genere:
    Codice PHP:
    <?
    if($_POST['richiesta']){
    // esecuzione codice php
    exit();
    }
    ?>
    <!doctype html>
    <html>
    <head>
    <!-- qui tramite AJAX richiami questa pagina e, tramite il metodo POST, fai in modo che "richiesta" sia settato -->
    <script>
    function Aggiorna(){
    $.ajax({
    type: "POST",
    url: "questapagina.php",
    data: ({
    richiesta: 1,
    altri_parametri: valori
    }),
    success: function(esito){
    $("#Esito").html(esito);
    },
    error: function(){
    alert('Errore AJAX');
    }
    });
    }
    </script>
    </head>
    <body>
    <div id="Esito"><?
    // codice PHP che mostra i risultati
    ?></div>

    <a onclick="Aggiorna()">Aggiorna risultati</a>
    </body>
    </html>
    Volendo puoi anche evitare di scrivere lo script PHP in <div id="Esito"> richiamando la funzione Aggiorna() quando la pagina viene caricata completamente.
    Il secondo punto non l'ho capito bene, ma ho visto che hai risolto

    Ciao!

    [OT]
    Sei solo un ragazzino presuntuso ed anche parecchio ignorante.
    In effetti c'è qualcuno di presuntuoso in questa discussione, e non sono io.
    Poi sarò anche ignorante, ma con le mie poche conoscenze (che non nascondo - vedi inizio quarto post) cerco di aiutare, e non mi sembra una cosa negativa...

    Conosci a malapena l'AB (senza la C) e ti ergi in cattedra.
    Buona giornata prof.
    Se non sbaglio non ho mai detto di essere un mito e di conoscere alla perfezione ogni linguaggio di programmazione, anzi!
    Tra l'altro qui il prof mi sembra qualcun altro che corregge la qualunque.

    Chiuso OT. Addio
    Love <3
    [/OT]

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •