2017-04-14 11 views
0

Ich erstelle eine Hochzeits-Website mit einem PHP-Formular für RSVPs. Ich bin bestenfalls ein Neuling.Wie öffnet man einen Bootstrap Modal mit PHP?

Was ich versuche zu tun ist, sobald ein Benutzer das Formular ausfüllt und abschickt, nimmt die Webseite sie entweder zu einer Erfolgs-/Dankes-Seite. (dieser Teil funktioniert).

Oder wenn das Formular nicht korrekt ausgefüllt ist, zeigt es ein Bootstrap-modal, das ihnen sagt, was sie falsch gemacht haben. (das ist, was ich habe Probleme mit).

Hier ist mein Code, der mit dem modalen Teil zu tun hat.

In meiner Meinung sollte meine PHP if Anweisung das JavaScript ausführen, wenn irgendeine Art von Fehler vorliegt. Und das JavaScript sollte ein modales Fenster öffnen, das die Fehler anzeigt. Was verbindet nicht?

<?php 
 
    if ($_POST["submit"]) { 
 
     $result='<div class="alert alert-success">Form submitted</div>'; 
 

 
     if (!$_POST["name"]) { 
 
     $error.="<br> Please enter the name on your invitation."; 
 
     } 
 
     if (!$_POST["head-count"]) { 
 
     $error.="<br> Please enter the size of your party."; 
 
     } 
 
     if (!$_POST["reception-check"]) { 
 
     $error.="<br> Please let us know if you will be attending the reception."; 
 
     } 
 
     if ($error) { ?> 
 
     <script type="text/javascript"> $('#myModal').modal('show'); </script> 
 
     <?php 
 
     } else { 
 
     if (mail("[email protected]", "RSVP", " 
 

 
     Name: ".$_POST['name']." 
 

 
     Head Count: ".$_POST['head-count']." 
 

 
     Reception Check: ".$_POST['reception-check']." 
 

 
     Comments: ".$_POST['comments'])) { 
 
      header("location: http://www.ourpeachwedding.com/pages/thankyou.php"); 
 
      exit(); 
 
     } else { 
 
      $result='<div class="alert alert-danger"><strong>Sorry, there was an error submitting your rsvp, please try again.</strong>'.$error.'</div>'; 
 
     } 
 
     } 
 
    } 
 

 
    ?> 
 

 
    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 
 
<div class="modal-dialog" role="document"> 
 
    <div class="modal-content"> 
 
    <div class="modal-header"> 
 
     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
 
     <h4 class="modal-title" id="myModalLabel">Modal title</h4> 
 
    </div> 
 
    <div class="modal-body"> 
 
     <?php echo $result ?> 
 
    </div> 
 
    <div class="modal-footer"> 
 
     <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
 
     <button type="button" class="btn btn-primary">Save changes</button> 
 
    </div> 
 
    </div> 
 
</div> 
 
</div>

<div id="rsvp"> 
 
     <div class="jumbotron"> 
 

 
     <?php echo $result; ?> 
 

 
     <div class="container-fluid"> 
 
      <p class="text-center h1">RSVP</p> 
 
      <p class="lead text-center">Even if you are not planning to attend, please RSVP anyway.</p> 
 
      <div class="row"> 
 
      <div class=" col-md-6 col-md-offset-3"> 
 
       <form method="post"> 
 
       <div class="input-group"> 
 
        <span class="input-group-addon">Name:</span> 
 
        <input name="name" type="text" class="form-control" placeholder="What was the name on the invitation?" value="<?php echo $_POST['name']; ?>"> 
 
       </div> <!--/.input-group--> 
 
       <hr> 
 
       <div class="input-group"> 
 
        <span class="input-group-addon">Head Count:</span> 
 
        <input name="head-count" type="text" class="form-control" placeholder="How many in your party?" value="<?php echo $_POST['head-count']; ?>"> 
 
       </div> <!--/.input-group--> 
 
       <hr> 
 
       <div class="input-group"> 
 
        <span class="input-group-addon">Reception?</span> 
 
        <input name="reception-check" type="text" class="form-control" placeholder="Will you be attending the reception?" value="<?php echo $_POST['reception-check']; ?>"> 
 
       </div> <!--/.input-group--> 
 
       <hr> 
 
       <div class="input-group"> 
 
        <span class="input-group-addon">Comments:</span> 
 
        <textarea name="comments" type="text" class="form-control" placeholder="eg. gluten/food allergies, not attending, etc."><?php echo $_POST['comments']; ?></textarea> 
 
       </div> <!--/.input-group--> 
 
       <hr> 
 
       <div class="text-center"> 
 
        <input type="submit" name="submit" class="btn btn-success btn-large" value="Submit"> 
 
       </div> <!--/.text-center--> 
 
       </form> 
 
      </div> <!--/.col--> 
 
      </div> <!--/.row--> 
 
     </div> <!--/.container-fluid--> 
 
     </div> <!--/.jumbotron--> 
 
    </div> <!--/#rsvp-->

+1

Ihre Annahme-Datensatz ist fraglich –

+1

Zunächst würde das Modal durch das Javascript auf der Seite im Browser angezeigt werden, nicht direkt durch den PHP-Code. Wenn Sie das Modal anzeigen möchten, benötigen Sie etwas auf der Seite, das an den Browser gesendet wird, damit es angezeigt wird. –

+1

was bedeutet das @ Fred-ii- –

Antwort

0

Ich denke, dass es nicht sehr wichtig, zu diesem Zweck, ob die Validierung Client-Seite durchgeführt wird oder nicht. Sie können es auf die clientseitige Validierung ändern, wenn Sie möchten, aber das Skript, das Sie hinzufügen, funktioniert nicht, da es ausgeführt wird, bevor die erforderlichen HTML-Elemente geladen werden. Um sicherzustellen, dass es nach läuft, ändern Sie diese Zeile zu

if ($error) { ?> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $('#myModal').modal('show'); 
     }); 
    </script> 
    <?php 
} else { 
... 

Das Skript nur hinzugefügt wird, wenn ein Fehler auftritt, so wird es laufen, wenn geladen, aber nur, wenn die Seite nach Vorlage neu geladen wird und Fehler wurden gefunden.

+0

Ich habe das auch versucht, und ich habe es erneut versucht. Ich habe aufgegeben, da ich keine Zeit habe, um herauszufinden, wie man alles in Javascript umschreiben kann. Aber nur zur Klarstellung: Das geht nicht, denn auch wenn Fehler gefunden wurden und das Skript läuft, wird das Dokument dann neu geladen und das Modal trotzdem wieder abgebaut? Also müsste ich die Modal Show nach dem Laden der Seite von der Submit wird gedrückt haben? –

+0

Nein. Was passiert ist, wenn das HTML geladen wird, wird das JavaScript, das es findet, ausgeführt, es sei denn, es ist in einer Funktion, dann wird es ausgeführt, wenn die Funktion aufgerufen wird. Stellen Sie sich vor, Sie sind ein Browser und lesen Zeile für Zeile Ihre Ausgabe. Zu dem Zeitpunkt, zu dem das Skript geladen wird, wissen Sie noch nichts über den folgenden HTML-Code, da er noch geladen werden muss. Das Skript läuft also, hat aber nichts zu tun. Es findet nichts und tut daher nichts. Wenn Sie es in den 'ready'- oder' load'-Handler einfügen, bedeutet dies, dass das Skript erst ausgeführt wird, nachdem das gesamte Dokument gelesen und geladen wurde. – inarilo

+0

@ d_peach18 Wenn dies jedoch immer noch nicht funktioniert, kann es an anderer Stelle auf der Seite zu Fehlern kommen. Ich werde noch einmal gucken. – inarilo

0

Ich hatte das gleiche Problem und es gelöst: Sie zu echo weil das Skript hatte, wenn Sie den PHP-Code ?> beenden und starten Sie es erneut <?php der Code zwischen dem Ende und beginnen, werden ignoriert oder immer visable/enable werden. Sehen Sie das Beispiel unten, ich denke, das wird funktionieren!

if ($error) { ?> 
    <script type="text/javascript"> $('#myModal').modal('show'); </script> 
    <?php 
} 

Hat

if ($error) { 
    echo '<script type="text/javascript"> $("#myModal").modal("show")</script>'; 
} 

Die ' im Skript zu sein mit " ersetzt, weil ein '" ignorieren wird es so einfach echo es

einige andere Dinge in Ihrem Code: Am if ($error) oder if (!$_Post[...]) Es funktioniert nicht, weil es keine Anforderung wie $error = 1 oder T$_Post[...] > "1" in diesem Fall gibt, wird die If nieausführenund hier:

if (mail("[email protected]", "RSVP", " 

    Name: ".$_POST['name']." 

    Head Count: ".$_POST['head-count']." 

    Reception Check: ".$_POST['reception-check']." 

    Comments: ".$_POST['comments'])) { 
     header("location: http://www.ourpeachwedding.com/pages/thankyou.php"); 
     exit(); 

Es gibt keine Folge

Ich denke, wenn diese Arbeit es sehr schön sein! Ich hoffe, das wird funktionieren! Viel Glück .... und überprüfen Sie Ihren Code.

Verwandte Themen