2016-04-06 14 views
1

mit PHP Ich habe zwei PHP-Dateien (index.php und insert.php) Meine index.php eine Form hat, die von dem Benutzer (Aktivität, Dauer und das Datum in drei Eingängen nimmt - das ist für einen Fitness-App) und speichert es in einer Datenbank. Ich habe den Code geschrieben, um ihn in die Datenbank einzufügen, was er erfolgreich macht, aber jetzt möchte ich der Site Benachrichtigungen hinzufügen, damit der Benutzer weiß, ob seine Eingabe eingefügt wurde oder nicht. Beispiel: Wenn die eingegebene Dauer keine Zahl ist oder kleiner als 0 ist, möchte ich auf der Website einen Text anzeigen, der sie auffordert, die Dauer auf einen geeigneten Wert zu ändern. Ich habe das Skript dafür geschrieben und möchte es asynchron erreichen. Im Moment möchte ich nur, dass es ausgedruckt wird, wenn die Daten erfolgreich hinzugefügt wurden, was nicht der Fall ist. Im Moment bringt es mich auf eine andere leere Seite, ohne etwas auszudrucken, aber aktualisiert auch meine Datenbank korrekt. Nicht sicher, was ich falsch mache.asynchrone

index.php

<script> 
    $(function() { 
     $('#getData').click(function(event) { 
      event.preventDefault(); 

      $.ajax({ 
       type: "GET", 
       url: "insert.php", 
       data : { activity : $('#activityInput').val(), duration: $('#durationInput').val(), date: $('#dateIn').val(}, 
       beforeSend: function(){ 
       } 
       , complete: function(){ 
       } 
       , success: function(html){ 
        //this will add the new comment to the `comment' div 
        $("#comment").html(html); 
       } 
      }); 
     }); 
    }); 

</script> 

<h1> Add input </h1> 

<form action="insert.php" method="GET"> 
    Fitness activity:<br> 
    <input type="text" name="activity" id="activityInput"><br> 
    Duration of activity (hrs):<br> 
    <input type="text" name="duration" id="durationInput"><br> 
    Date (mm-dd-yyyy):<br> 
    <input type="text" name="date" id="dateIn" ><br> 
    <input type="submit" value="Submit" id="getData"> 
</form> 


<div id='comment' ></div>; 

insert.php

if(!empty($_GET["activity"]) && !empty($_GET["duration"]) &&  !empty($_GET["date"])) { 
    $activity = mysqli_real_escape_string($link, $_GET["activity"]); 
    $duration = mysqli_real_escape_string($link, $_GET["duration"]); 
    $date = mysqli_real_escape_string($link, $_GET["date"]); 

    if(is_numeric($duration) && $duration > 0){ 
     $sql = "INSERT INTO users (activity, dateInput, duration) VALUES ('$activity','$date','$duration')"; 
     $result = mysqli_query($link, $sql); 

     mysqli_close($link); 
     echo '<div class="comment">' ."Successfuly added" . '</div>'; 
    } 
} 

Antwort

3

Sie verwenden eine ID für Ihren Erfolg Rückruf

$("#comment").html(html); 

aber Ihre div <div class='comment' ></div>; eine Klasse hat so entweder Ändern Sie es in eine ID oder verwenden Sie

$(".comment").html(html); 
+0

dieses Denken eine gute Antwort. Die Seitenladung klingt jedoch so, als würde die Formularübertragung ausgelöst. Könnte eine Kombination sein, die das div html nicht aktualisiert und auch die Standardaktion sprudelt. Kann den Button-Typ von 'submit' zu' button' ändern oder den Standard auf andere Weise verhindern. – ficuscr

+0

@Mihai danke für diesen Haken, aber es ist immer noch nicht schreiben "erfolgreich hinzugefügt" auf der index.php Seite. Es wird auf einer anderen PHP-Seite ausgedruckt. –

+0

macht mir nichts aus, fand meinen Fehler. Ich habe meine Klammern bei .val für das Datum nicht vervollständigt. –