MySQL-Abfrage In JavaScript

Arbeite ich an einer form dar, in der JavaScript eingesetzt wird, um eine weitere Zeile hinzufügen Element. Der Zweck ist, zu Werbebuchungen hinzufügen zu einer Rechnung. Ich habe erfolgreich bekam dies funktioniert ok, wenn Textfelder in meinem Formular, aber bin stecken, wie man diese Arbeit mit einer dropdown-box, die einen Aufruf von mysql, um die dropdown-box data.

Hier ist, was ich habe.

 <?php
     include $_SERVER['DOCUMENT_ROOT']."/connect.php";
     include $_SERVER['DOCUMENT_ROOT']."/includes/header.php";
 ?>

 <script type="text/javascript">
     var counter = 1;
     function addInput(divName){
          var newdiv = document.createElement('div');
          newdiv.innerHTML = "Entry " + (counter + 1) + " <br><select name='myInputs[]'><?php $result = mysql_query("SELECT * FROM salesitem"); while($row = mysql_fetch_array($result)) { echo "<option value=\"".$row['name']."\">".$row['name']."</option>";} ?></select>";
          document.getElementById(divName).appendChild(newdiv);
     }
 </script>

 <form method="POST">
     <div id="dynamicInput">
          Entry 1<br><select name="myInputs[]"><?php $result = mysql_query("SELECT * FROM salesitem"); while($row = mysql_fetch_array($result)) { echo "<option value=\"".$row['name']."\">".$row['name']."</option>";} ?></select>
     </div>
     <input type="button" value="Add another text input" onClick="addInput('dynamicInput');">
 </form>

So ist hier einige Informationen, was Los ist. Jetzt der JavaScript code oben zeigt die MySQL-Abfrage. Dies tötet die Zeile hinzufügen, Element Funktionalität. Wenn ich einfach die Abfrage entfernen, aber lassen Sie die anderen php in der Zeile hinzufügen, Element beginnt wieder zu arbeiten, aber es gibt natürlich keine Daten in die drop-down.

In der form selbst, es wird die erste Zeile Element aus der Datenbank ohne Verwendung von javascript und das funktioniert ok.

Ich das Gefühl, ich bin immer in der Nähe, aber nicht wissen, wohin Sie gehen von hier aus.

Vielen Dank im Voraus.

BEARBEITEN:
Dank Nick, ich habe diese arbeiten. Hier ist der code.

 <?php
 include $_SERVER['DOCUMENT_ROOT']."/connect.php";
 include $_SERVER['DOCUMENT_ROOT']."/includes/header.php";
 ?>

 <script type="text/javascript">
 var counter = 1;
 function addInput(div){
    xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
      var newdiv = document.createElement('div');
      newdiv.innerHTML = "Entry " + (++counter) + " <br><select name='myInputs[]'>" + xmlhttp.responseText + "</select>";
     }
      document.getElementById(div).appendChild(newdiv);
   }

 xmlhttp.open("GET", "update_text.php", false);
 xmlhttp.send();
 }
 </script>

 <form method="POST">
 <div id="dynamicInput">
      Entry 1<br><select name="myInputs[]"><?php $result = mysql_query("SELECT * FROM salesitem"); while($row = mysql_fetch_array($result)) { echo "<option value=\"".$row['name']."\">".$row['name']."</option>";} ?></select>
 </div>
 <input type="button" value="Add" onClick="addInput('dynamicInput');">
 </form>

Dann die update_text.php

 <?php
 include $_SERVER['DOCUMENT_ROOT']."/connect.php";
 $result = mysql_query("SELECT * FROM salesitem");
 while($row = mysql_fetch_array($result)) {
 echo "<option value=\"".$row['name']."\">".$row['name']."</option>";
 }
 ?>

Und hier ist mein php post in der Datenbank, die nicht arbeiten, für die javascript Zeile hinzufügen, Element, nur für den ursprünglichen Eintrag, der erstellt wird, aus der form. (Ich habe andere Felder neben dem dropdown).

 <?php

 include $_SERVER['DOCUMENT_ROOT']."/connect.php";

 $company = mysql_real_escape_string($_POST['company']);

 foreach($_POST['item'] as $i => $item)
 {
   $item = mysql_real_escape_string($item);
 $quantity = mysql_real_escape_string($_POST['quantity'][$i]);

 mysql_query("INSERT INTO invoice (company, item, quantity) VALUES ('$company', '".$item."', '".$quantity."') ") or die(mysql_error());
 }
 echo "<br><font color=\"green\"><b>Invoice added</b></font>";

 ?>

Dank, bitte lassen Sie mich wissen, wenn ich diese sauber bis besser.

möchten Sie vielleicht, um wickeln Sie Ihre entry 1 Abschnitt in einem <div> so dass Sie mit der markup-Code der eingefügten Zeilen. oder possily setzen eine id auf die Schaltfläche, und verwenden Sie insertBefore (insertAfter auf Ihre dynamicInput würde dazu führen, neue werden Hinzugefügt, um den oberen und nicht den unteren)
Ja, meine javascript hinzugefügte Zeilen nicht einfügen in die Datenbank. Wenn Sie sagen, wrap meinem Eintrag 1-Bereich in einem div-Element, ist es nicht bereits? Können Sie das klären?
Es ist ja, aber Sie werden das einsetzen der newdiv in Ihrem ersten statt nach es. Was haben Sie derzeit <form><div1>entry1<br><select><div2>....</div2><div1></form> was ich denke, Sie wollen <form><div1>entry1<br><select></div1><div2>....</div2></form>. Wenn Ihre Frage beantwortet wurde, sollten Sie akzeptieren, dass man von Ihnen 🙂
Es scheint nicht, einen Unterschied machen, nur die erste Zeile wird in die Datenbank geschrieben. Ich werde das hinzufügen meiner php post, um das original zu sehen, ob vielleicht das problem dort liegt.
Ich habe festgestellt, dass das javascript ist nicht das posting an php. Aber ich bin nicht sicher, genau, wie beheben Sie das html-Formular. Sie haben klar gemacht, ich sollte fügen Sie ein div-tag die javascript, aber ich bin nicht sicher, was zu nennen Sie es, um es zu bekommen arbeiten mit dem html-Formular.

InformationsquelleAutor Tom | 2013-03-24

Schreibe einen Kommentar