2017-02-22 3 views
1

Ich versuche, die Zeile in der Datenbank, die den Vornamen und Nachnamen des Schülers aus der Dropdown-Liste entspricht. Ich habe die Funktion, den Vor- und Nachnamen in der Variablen clickeditem zu speichern. Ich muss falsch in der Ajax/PHP-Seite der Dinge gehen, möglicherweise die Art und Weise, in der Zugriff auf die Variable? Wenn ich auf einen Namen in der Dropdown-Liste klicke, passiert überhaupt nichts. Ich wiederhole auch das 'Ergebnis' in der PHP-Datei, wie ändere ich das, damit der Ajax mit dem "Erfolg" umgehen kann? Der Code mit HTML und Ajax:Ajax Anfrage an PHP-Datei zur Ausgabe von MySQL-Daten

<script 

     $.ajax({ 
       type: "POST", 
       url: "out.php",    
       data: {item : item},    
       success: function(data){      
        $("#result").html(data); 
        //alert(response); 
       } 

       }); 
    }); 
</script> 

ich verwendet habe, explodieren Sie die Vornamen und Nachnamen aus der Zeichenfolge zu trennen, wie es wird natürlich alles, was man in sein.

+0

[Haben Sie die AJAX-Anfrage/-Antwort in den Entwicklertools des Browsers gesehen? Haben Sie die jQuery-Bibliothek in das Projekt aufgenommen? Werden Fehler gemeldet? Führst du das auf einem Webserver aus?] (Http://jayblanchard.net/basics_of_jquery_ajax.html) –

+0

PHP muss etwas aussprechen, was auch immer von AJAX zurückgegeben wird. –

+0

@JayBlanchard ist die jquery libray nicht enthalten, wo ich schrieb '' und es ist auf einem localhost ausgeführt werden – Jub

Antwort

2

Sie haben einen Test einrichten, die den Rest des Codes verursacht fehlschlagen:

$student = isset($_POST['clickeditem']); 

$student wird entweder ‚wahr‘ oder ‚falsch‘, nicht die Zeichenfolge mit dem ersten und Nachname. An diesem Punkt wird Ihr Code fehlschlagen. Ändern Sie die Zeile dazu:

$student = $_POST['clickeditem']; 

Jetzt $student richtig eingestellt ist und der Rest des Codes sollte funktionieren wie erwartet.

Sie haben auch einen Fehler in der Abfrage selbst (Komma, wo ein AND gehen sollte):

WHERE student_forename=:forename, student_surname=:surname'); 

sein sollte:

WHERE student_forename=:forename AND student_surname=:surname'); 

Eine letzte Sache: Sie können nicht echo $result; weil es ein Array in diesem Abschnitt des Codes:

if($result['count'] == 1){ 
    echo $result; 
} 

Sie müssen entweder echo $result['count']; oder echo $result[0]; oder konvertieren Sie das Array in ein anderes Format, das von Ihrer AJAX-Anfrage zurückgegeben wird.

+0

gibt immer noch keine Angst aus, echoet die Antwort aus, bis sie diese Zeile erreicht: $ st-> execute (array ('Vorname' => $ fname, 'Nachname' => $ sname)); – Jub

+0

Echos, welche Antwort? –

+0

Ich habe gerade 'echo $ sname' eingegeben, bis es nicht mehr rauscht und diese Zeile dort ist, wo es aufgehört hat. – Jub

0

Sieht so aus, als würde $ sign vor fname und sname fehlen, also sollte es $ fname und $ sname anstelle von fname und sname sein.

<?php 

    session_start(); 
    $student = isset($_POST['action']);  
    $studentnospace = explode(" ", $student); 
    $fname = $studentnospace[0];// Add dollar sign before each variable 
    $sname = $studentnospace[1]; // Add dollar sign before each variable 
    $pdo=new PDO('mysql:host=localhost; dbname=thename', 'root', 'root'); 
      $st = $pdo->query('SELECT COUNT(*) AS count FROM students WHERE student_forename=:forename, student_surname=:surname'); 
      $st->execute(array('forename' => $fname, 'surname' => $sname)); 
      $result=$st->fetch(); 
      if($result['count'] == 1){ 
       echo $result; 
      } 

?> 
+0

Während dieser Code die Frage beantworten kann, verbessert ein zusätzlicher Kontext, warum und/oder wie dieser Code die Frage beantwortet, seinen langfristigen Wert. –

+0

Ya Fehler meinerseits, aber immer noch nicht das Problem, ich habe Angst, – Jub

+0

können Sie log clockitem Konsole und Fehler hinzufügen: auf Ajax, als Parameter des Fehlers nur Konsole log den Fehler param. Fehler: Funktion (err) { console.log (err); // Alarm (Antwort); } –