Nachgeladenes AJAX Select mit Formular absenden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Nachgeladenes AJAX Select mit Formular absenden

    Heyho,

    erstmal echt tolle Seite hier..gefaellt mir wirklich =)
    Ich habe ein Problem und zwar benutze ich folgendes Tutorial: [coderwiki]HowTos/Ajax-Inhalte-mit-PHP-und-Select-nachladen[/coderwiki]
    auf meiner Seite und es klappt auch wunderbar aber wenn ich nun nachgeladen habe (das auch ein DropDown-Menue ist), kann ich die ID die dadrueber mitgegeben wird nicht in die MySQL-Datenbank eintragen. Es kommt immer ein leeres Feld mit.. Ich bin ein totaler n00b in Sachen Ajax :D

    Vielen Dank schonmal im voraus! :)

    Quellcode

    1. <?
    2. require("config/mysql.inc.php");
    3. $sql = "SELECT * FROM scriptarchiv_sub WHERE mid = '".$_GET['s']."' ORDER BY name";
    4. $result = @mysql_query($sql);
    5. echo '<select name="subcat" id="subcat">';
    6. while($row = @mysql_fetch_array($result)) {
    7. echo "<option value='".$row['id']."'>".$row['name']."</option>";
    8. }
    9. echo '</select>';
    10. ?>
    Alles anzeigen


    und so wird das dann eingetragen:

    Quellcode

    1. $sql = "INSERT INTO scriptarchiv_scripts (id, mid, titel, beschreibung, link, version, user, hits, tstamp, checked) VALUES (NULL , '".$_REQUEST['subcat']."', '".$_POST['titel']."', '".htmlentities(addslashes($_POST['signatur']))."', '".$_POST['link']."', '".$_POST['version']."', '".$_SESSION['benutzer']."', '0', '".time()."', '0')";
    2. $result = @mysql_query($sql) or die(mysql_error());


    Leider wird das mit $_REQUEST['subcat'] nicht mitgegeben.
  • "d0nUt" schrieb:

    der Codeausschnitt ist korrekt.
    Hast du auch ein <form> drumherum?

    mach mal statt dem mysql query ein

    Quellcode

    1. print_r($_REQUEST);
    2. echo $sql;


    heyho,

    also das mit dem form muesste richtig sein:

    Quellcode

    1. <script type="text/Javascript">
    2. <!--
    3. function sendRequest() {
    4. try {
    5. req = window.XMLHttpRequest?new XMLHttpRequest():
    6. new ActiveXObject("Microsoft.XMLHTTP");
    7. } catch (e) {
    8. //Kein AJAX Support
    9. }
    10. req.onreadystatechange = handleResponse;
    11. id = document.getElementById('dropdown').value;
    12. req.open('get', 'script-archiv.php?s='+ id);
    13. req.send(null);
    14. }
    15. function handleResponse() {
    16. if ((req.readyState == 4) && (req.status == 200)) {
    17. document.getElementById('inhalt').innerHTML = req.responseText;
    18. }
    19. }
    20. function textCounter(field, countfield, maxlimit) {
    21. if (field.value.length > maxlimit){ // wenn die eingegebene Länge größer als erlaubt ist
    22. field.value = field.value.substring(0, maxlimit); // es wird keine weitere Eingabe mehr zugelassen
    23. countfield.value = 0;
    24. }
    25. else
    26. countfield.value = maxlimit - field.value.length;
    27. }
    28. //-->
    29. </script>
    30. <div class="welcome_container">
    31. <div class="welcome_container_inner">
    32. <h2>Script-Archiv - Script hinzuf&uuml;gen</h2>
    33. <br />
    34. <table width="100%" border="0" cellspacing="2" cellpadding="0">
    35. <form method="post" action="scriptarchiv.php?do=added" name="form">
    36. <tr>
    37. <td>Kategorie:</td>
    38. <td><select id="dropdown" onChange="sendRequest();">
    39. <option value="-1">Kategorie ausw&auml;hlen:</option>
    40. <option value="PHP">PHP</option>
    41. <option value="Java">Java</option>
    42. <option value="Perl">Perl</option>
    43. <option value="ASP">ASP</option>
    44. </select></td>
    45. </tr>
    46. <tr>
    47. <td>Sub-Kategorie:</td>
    48. <td><div id="inhalt">Bitte w&auml;hle zun&auml;chst eine Kategorie aus!</div></td>
    49. </tr>
    50. <tr>
    51. <td>Titel:</td>
    52. <td><input type="text" name="titel" /></td>
    53. </tr>
    54. <tr>
    55. <td>Version:</td>
    56. <td><input type="text" name="version" /></td>
    57. </tr>
    58. <tr>
    59. <td valign="top">Link-URL:</td>
    60. <td><input name="link" type="text" id="link" size="50" /></td>
    61. </tr>
    62. <tr>
    63. <td valign="top">Beschreibung:</td>
    64. <td><textarea name="signatur" cols="50" rows="10" onkeydown="textCounter(this.form.signatur, this.form.signaturLen,250);" onkeyup="textCounter(this.form.signatur, this.form.signaturLen,250);"></textarea></td>
    65. </tr>
    66. <tr>
    67. <td valign="top">&nbsp;</td>
    68. <td>noch
    69. <input name="signaturLen" value="250" id="signaturLen" size="3" maxlength="3" readonly="readonly" type="text" />
    70. Zeichen m&ouml;glich</td>
    71. </tr>
    72. <tr>
    73. <td valign="top">&nbsp;</td>
    74. <td><input type="submit" name="submit" value="Senden" /> <input name="submit2" type="reset" id="submit2" value="Zur&uuml;cksetzen" /></td>
    75. </tr>
    76. </form>
    77. </table><br />
    78. </div></div>
    Alles anzeigen


    ich verstehe nicht genau, was du meinst mit dem mysql_query wegmachen..

    soll ich das so machen?

    Quellcode

    1. $result = @mysql_query($sql) or die(mysql_error());
    2. daraus wird:
    3. print_r($_REQUEST);
    4. echo $sql;


    ?
  • "Baby Herman" schrieb:

    Korrekt. Wechsel das mal aus und poste hier, was dabei herrauskommt.


    Array ( [do] => added [titel] => sd [version] => sdsd [link] => http://www.download.de [signatur] => sdsdsdsd [signaturLen] => 242 [submit] => Senden [PHPSESSID] => bd4c4b2f0267da28fd06ab6f471f720b ) INSERT INTO scriptarchiv_scripts (id, mid, titel, beschreibung, link, version, user, hits, tstamp, checked) VALUES (NULL , '', 'sd', 'sdsdsdsd', 'http://www.download.de', 'sdsd', 'waerp', '0', '1167051672', '0')
  • Das ist nicht die $sql-Variable, die ausgegeben wird. Schau nochmal, ob du die nicht ausversehen mitgelöscht hast.

    Soweit ich das sehe kommt garkeine $_GET['s'] an, korrekt?

    Außerdem kopiere doch bitten den Text aus dem Quelltext, sodass er übersichtlicher aufgebaut ist.
  • oh. ihr solltet mir nicht alles glauben. Ich hab falsch geschaut.

    Dann ist der Grund schlichtweg ungültiges HTML...
    Begebt euch mal auf http://validator.w3.org und prüft euren Code.

    Ich habe deinen Code mal reduziert (ich habe nirgends etwas hinzugefügt!)
    und der Code funktioniert:

    Quellcode

    1. <script type="text/javascript">
    2. <!--
    3. function sendRequest() {
    4. try {
    5. req = window.XMLHttpRequest?new XMLHttpRequest():
    6. new ActiveXObject("Microsoft.XMLHTTP");
    7. } catch (e) {
    8. //Kein AJAX Support
    9. }
    10. req.onreadystatechange = handleResponse;
    11. id = document.getElementById('dropdown').value;
    12. req.open('get', 'script-archiv.php?s='+ id);
    13. req.send(null);
    14. }
    15. function handleResponse() {
    16. if ((req.readyState == 4) && (req.status == 200)) {
    17. document.getElementById('inhalt').innerHTML = req.responseText;
    18. }
    19. }
    20. //-->
    21. </script>
    22. <?php print_r($_POST); ?>
    23. <form method="post">
    24. <select id="dropdown" onChange="sendRequest();">
    25. <option value="-1">Kategorie ausw&auml;hlen:</option>
    26. <option value="PHP">PHP</option>
    27. <option value="Java">Java</option>
    28. <option value="Perl">Perl</option>
    29. <option value="ASP">ASP</option>
    30. </select>
    31. <div id="inhalt">Bitte w&auml;hle zun&auml;chst eine Kategorie aus!</div>
    32. <input type="submit" name="submit" value="Senden" />
    33. <input name="submit2" type="reset" id="submit2" value="Zur&uuml;cksetzen" />
    34. </form>
    Alles anzeigen
  • "d0nUt" schrieb:

    oh. ihr solltet mir nicht alles glauben. Ich hab falsch geschaut.

    Dann ist der Grund schlichtweg ungültiges HTML...
    Begebt euch mal auf http://validator.w3.org und prüft euren Code.


    Ich finde einfach keinerlei Fehler..Er uebernimmt die ID aus dem durch Ajax hinzugefuegten DropDown-Menue nicht mit, d.h. er traegt das nicht in die MySQL-Tabelle ein.. :(
  • Sodele :)

    ich bin jetzt mal meine 454 Lange Datei durchgegangen und es fehlte ganz unten ein </table> daran hats wohl gelegen. Weil nun klappt es.

    War harte Arbeit aber es hat sich gelohnt, also waerp kann dir nur empfhelen mal deinen ganzen Code durch zu gehen, alle HTML Tags zu überprüfen dann klappt auch mitn nachbarn.
    Gruß
    C0dEx