2017-08-11 1 views
0

Also im Grunde bin ich erstellen einen Posteingang, wo Daten von meinem db geladen werden. aber ich habe Probleme, mein modal auszulösen, ich habe gesucht, aber nichts passt zu meinem Problem. Der Auslöser war in einem <form method="post">, weil ich eine versteckte input habe, um nach der ID der Zeile zu suchen, die geklickt wurde.
Btw, mein Knopf, der das modale auslöst, wird auch zwei (2) mysqli-Abfragen ausführen. Hier ist mein Code:
Bootstrap Modal zeigt für eine Sekunde dann verschwindet

<form method="post"> 
<input type="hidden" name="key" value="'.$value->id.'"> 
<button data-toggle="modal" data-target="#myModal" title="View" class="btn btn-primary btn-xs" name="inbox_view"> 
<span class="glyphicon glyphicon-list"></span></button> 
<button title="Trash" class="btn btn-danger btn-xs" name="inbox_del"> 
<span class="glyphicon glyphicon-trash"></span></button> 
</form> 

Der Code meine Fragen zur Ausführung:

if(isset($_POST['inbox_view'])){ 
    $id = filter($_POST['key']); 
    $type = '1'; 
    $stmt = $dbcon->query("SELECT * FROM messages WHERE id='$id' AND type='1'") or die(mysqli_error()); 
    $stmt2 = $dbcon->prepare("UPDATE messages SET seen='0' WHERE id=?") or die(mysqli_error()); 
    $stmt2->bind_param('s',$id); 
    $stmt2->execute(); 
    while($row = mysqli_fetch_array($stmt)){ 
    $sender=$row['sender']; 
    $msg=$row['msg']; 
    $mdate=$row['mdate']; 
    } 
} 

Modal:

<div class="modal fade-in" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> 
     <h4 class="modal-title" id="myModalLabel"><?php echo $value->sender; ?></h4> 
     </div> 
     <div class="modal-body"> 
     <!-- Description--> 
     <div class="row"> 
      <div class="col-md-12"> 
      <p class="wrap"><?php echo $value->msg?></p> 
      </div> 
     </div> 
     <!-- End Description--> 
     </div> 
     <div class="modal-footer"> 
     Received: <?php echo $value->mdate ?> 
     </div> 
    </div> 
    </div> 
</div> 


Was mache ich falsch? und was muss ich tun, damit das funktioniert?
PS: Die Update-Abfrage ist zu prüfen, ob die E-Mail
Ungelesene Nachrichten gelesen = fett
Nachrichten lesen = normal

+1

Bootstrap kümmert sich nicht um Ihr Backend. Die Bereitstellung der JS wäre mir angemessener. Meine Vermutung wäre, dass Sie versehentlich das Modal nach dem Abrufen einer XHR-Antwort schließen oder Sie XHR überhaupt nicht verwenden und das Modal nicht geschlossen wird, aber Ihr Browser sendet eine normale POST-Anfrage, weshalb die Seite neu geladen wird. –

+0

Ich bin nicht vertraut mit Bootstrap. Aber ich vermisse etwas. Wohin schickst du das Formular? Ich würde erwarten, entweder eine Eingabe reichen oder eine Javascript-Funktion, die auf den Button klickt oder etwas und dann feuert den Beitrag – Gerard

+0

@Gerard was meinst du "Wo bin ich senden das Formular?" Ich benutze '

', um den Wert von 'zu erhalten, und verwendet es dann für meine select-Abfrage. – ronstoppable

Antwort

1

Ihr Browser das Formular auf Klick auf den Button einreicht. Aus diesem Grund scheint das Modal geschlossen zu sein. In der Tat sehen Sie eine neue (aber die gleiche) Seite, nachdem das Formular gesendet wurde. Sie müssen eine XHR-Anforderung erstellen, um Daten ohne Navigation zu senden.

Weitere Details finden Sie unter https://api.jquery.com/jquery.post/.

+0

Ich bin nicht vertraut mit AJAX tbh, aber können Sie mir eine Anleitung geben, wie würde ich das eigentlich tun? – ronstoppable

+0

AJAX bedeutet nur, dass die Anfrage asynchron erfolgt (in Bezug auf Ihre Dokumentanforderung). Einfach ausgedrückt: Fordern Sie X an, aber behalten Sie die aktuelle Seite bei. Ich denke, das Beispiel auf jquery.com sollte alles liefern, was Sie brauchen: https://api.jquery.com/jquery.post/#example-7 –

+0

Ich verstehe nicht wirklich, wie ich es mit AJAX tun werde, aber danke für Wenn Sie Ihre Zeit damit verschwenden, meine Frage zu beantworten, versuche ich zu analysieren, was das Beispiel wirklich versucht. – ronstoppable

Verwandte Themen