Switch und Formulare in PHP

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

  • Switch und Formulare in PHP

    Hi!

    Ich habe einen Switch Block der einwandfrei funktioniert.
    Per Switch rufe ich eine PHP Datei auf welche ein Formular beinhaltet.
    Dieses Formular hat Dropdowns mit OnChange Eventhandling.
    Fülle ich nun also ein Feld aus muss aus

    http://www.test.de/index.php?site=formular

    ein

    http://www.test.de/index.php?site=formular&email=matze@matze.de werden.

    Nun habe ich in die action des Formulars eingegeben:

    index.php?site=formular&

    Dat klappt aber nicht .... wenn ich aus dem Feld aus dem Formular gehe greift der OnChange Handler und danach steht in der Addressliste:

    http://www.test.de/index.php?email=matze@matze.de

    Wieso?

    Danke vorab,
    Matze
    Das Leben ist binär - du bist eine 1, oder eine 0
  • Hi

    Mein Problem ist das er die URL die ich ihm beim formtag unter action übergebe nicht übernimmt sondern quasi die seite ohne die switch Anweisung neu lädt und daher das "index.php?site=formular" zu einem "index.php" wird

    Code? Gute Idee ....

    Hier der Switch Part:

    Quellcode

    1. switch($site)
    2. {
    3. default:
    4. $content = "home.php";
    5. break;
    6. case formular:
    7. $content = "form_create_user.php";
    8. break;
    9. }


    Und hier nun der Formularpart:

    Quellcode

    1. <td>
    2. <form name="email" action="usermain.php?site=form_add_any_number">
    3. <input name="email" type="text" style="background-color:dce6f5; border: 1px; font-family: Times,serif; visibility:visible" onChange="document.forms['email'].submit()" value="<?php echo $_GET[email]; ?>" size="55">
    4. </form>
    5. <td>
    6. <form name="country" action="usermain.php?site=form_add_any_number&">
    7. <select name="country" onChange="document.forms['country'].submit()" style="background-color:dce6f5; border: 1px; font-family: Times,serif; visibility:visible">
    8. <?php
    9. $select = $Connection->query("SELECT countryname, countrycode from codes GROUP BY countryname");
    10. while($country = mysql_fetch_object($select))
    11. {echo "<option value=\"".$country->countryname."\">".$country->countryname."</option>";}
    12. ?>
    13. <option selected><?php echo $_GET[country] ?></option>
    14. </select>
    15. <input name="email" type="hidden" value="<?php echo $_GET[email]; ?>">
    16. </form>
    Alles anzeigen


    Ich glaube ich weiß mein Problem .... durch den OnChange Handler wird die Seite neu geladen, aber ohne switch zu beachten, richtig? Wenn dem so ist ... was kann ich da tun?
    Das Leben ist binär - du bist eine 1, oder eine 0
  • hm, so wie dein code aussieht, willst du bei jeder änderung das formular übertragen...

    warum zwingst du den user nicht erst alle angaben zu machen und schickst das formular erst dann ab? spart auf jedenfall traffic und server last.

    änder mal deine switch anweisung so ab

    Quellcode

    1. switch($site)
    2. {
    3. case "formular":
    4. $content = "form_create_user.php";
    5. break;
    6. default:
    7. $content = "home.php";
    8. break;
    9. }


    außerdem benutzt du $content garnicht, was ja durch die switch anweisung erst geändert wird.
    oder hast schon wieder vergessen den code ringsrum zu posten wo du das benutzt? ;)
    .:Reden Ist Schweigen und Silber Ist Gold:.

    real programmers don't comment their code: if it was hard to write, it should be hard to read!
  • Hi!

    Richtig ... habe den Code ringsum weggelassen *kicher*. Es geht mir ja auch nicht um die richtige Deklarierung von der Switch Anweisung :)

    Und Zusammenfassen in ein Formular geht deshalb nicht weil des dropdowns mit Abhängigkeiten sind (Wir erinnern uns an diese Anfrage meinerseits) *schmunzel*

    Nun bist du wieder dran :)

    Meine Problemstellung ist (glaube ich):

    Ein OnChange nimmt die bestehende URL und lädt sie neu, richtig?
    Wenn ich daran was anfügen könnte (index.php?site=formular) wäre ich schon glücklich denke ich - die Frage ist, geht sowas, und wenn ja, wie würde es aussehen *smile* :)
    Das Leben ist binär - du bist eine 1, oder eine 0
  • hi

    Es geht mir ja auch nicht um die richtige Deklarierung von der Switch Anweisung


    es ging ja nicht um die deklaration der switch anweisung, sondern darum das "formular" in anführungszeichen stehen sollte(wenn nicht gar MUSS)

    Ein OnChange nimmt die bestehende URL und lädt sie neu, richtig?


    im prinzip sollte sie das tun, zumindest in deinem fall, da du ja mit submit arbeitest.

    aber da du mit diesen abhängigkeiten arbeitest, würde ich auf die formulare verzichten. ich stell mir das so vor, das der user erst auf die erste select box klickt, und je nach auswahl die 2. gefüllt wird (und die 3. auch noch?)

    wenn es nur das is, brauchst du keine formulare...
    .:Reden Ist Schweigen und Silber Ist Gold:.

    real programmers don't comment their code: if it was hard to write, it should be hard to read!
  • HI!

    Jawohl, genau sowas is es ...

    Ablauf:

    Per switch wird eine php datei eingeladen (nennen wir sie formular.php)

    Darin sieht der User eine Dropdownbox welche mit Daten aus einer MySQL gefüllt wird.

    Nachdem er aus dieser dropdown was ausgewählt hat erscheint eine zweite dropdown box mit abhängig von der ersten Auswahl gefüllten Daten aus der MySQL.

    Wenn er dort ebenfalls seine Auswahl getroffen hat gibt es einen Submit Button der die selektierten Werte (in GET Variablen durchgeschliffen von der ersten dropdown und eben der Wert der zweiten) an eine andere Seite schicken welche die Variablen in nen XML Stream bastelt und abschickt.
    Das Leben ist binär - du bist eine 1, oder eine 0
  • ok, dann mach die sache mit ajax, wenn du dir das zutraust :)

    auswahl der select box kannst du so übergeben

    Quellcode

    1. <select name="country" size=30 onclick="javascript:deinefunktion(this.value)">


    in der js funktion gibst du einfach den wert an das php skript zurück und füllst damit die 2 oder 3 box...oder welche auch immer....

    aber nicht vergessen im <option> tag ne eindeutige value="" anzugeben...
    .:Reden Ist Schweigen und Silber Ist Gold:.

    real programmers don't comment their code: if it was hard to write, it should be hard to read!
  • Hi!

    Du glaubst nicht wieviel Anstrengung es mich gekostet hat zu meinem jetzigen Ergebnis zu kommen ... nochmal alles umbauen? Ajax? Klar, werd schon meiner Mutter das Scheuermittel wegnehmen ... *kicher*

    Im Ernst - An Ajax wage ich mich noch nicht ran.

    Hier mal mein Code (und wehe du ziehst wieder darüber her *grins)

    Quellcode

    1. <?
    2. include ("db_config.php"); // includes the connection data
    3. include ("database_class.php"); // Used class
    4. $showarea="hidden";
    5. ?>
    6. <script language="JavaScript">
    7. function doit()
    8. {
    9. document.form.submit();
    10. }
    11. </script>
    12. <table border="0">
    13. <tr>
    14. <td>Email</td>
    15. <td>Country</td>
    16. <td></td>
    17. <td>City</td>
    18. </tr>
    19. <tr>
    20. <td>
    21. <form name="email" action="usermain.php?site=form_add_any_number">
    22. <input name="email" type="text" style="background-color:dce6f5; border: 1px; font-family: Times,serif; visibility:visible" onChange="document.forms['email'].submit()" value="<?php echo $_GET[email]; ?>" size="55">
    23. </form>
    24. <td>
    25. <form name="country" action="usermain.php?site=form_add_any_number&">
    26. <select name="country" onChange="document.forms['country'].submit()" style="background-color:dce6f5; border: 1px; font-family: Times,serif; visibility:visible">
    27. <?php
    28. $select = $Connection->query("SELECT countryname, countrycode from codes GROUP BY countryname");
    29. while($country = mysql_fetch_object($select))
    30. {echo "<option value=\"".$country->countryname."\">".$country->countryname."</option>";}
    31. ?>
    32. <option selected><?php echo $_GET[country] ?></option>
    33. </select>
    34. <input name="email" type="hidden" value="<?php echo $_GET[email]; ?>">
    35. </form>
    36. </td>
    37. <?php
    38. $select = $Connection->query("SELECT DISTINCT areaname from codes WHERE countryname LIKE"."'".$_GET[country]."'");
    39. while($area = mysql_fetch_object($select))
    40. if($area->areaname == "")
    41. {$showarea="hidden";}
    42. else
    43. {$showarea="visible";}
    44. ?>
    45. <td>
    46. <form name="area" action="usermain.php?site=form_add_any_number&">
    47. <select name="area" onChange="document.forms['area'].submit()" style="background-color:dce6f5; border: 1px; font-family: Times,serif; visibility: <?php echo $showarea?>">
    48. <?php
    49. $select = $Connection->query("SELECT DISTINCT areaname from codes WHERE countryname LIKE"."'".$_GET[country]."'");
    50. while($area = mysql_fetch_object($select))
    51. {echo "<option value=\"".$area->areaname."\">".$area->areaname."</option>";}
    52. ?>
    53. <option selected><?php echo $_GET[area] ?></option>
    54. <input type="hidden" name="country" value="<? echo $_GET[country]; ?>">
    55. </select>
    56. <input name="email" type="hidden" value="<?php echo $_GET[email]; ?>">
    57. </form>
    58. </td>
    59. <?php
    60. $select = $Connection->query("SELECT citycode from codes WHERE cityname LIKE"."'".$_GET[country]."'");
    61. while($city = mysql_fetch_object($select))
    62. if($city->cityname == "")
    63. {$showcity="hidden";}
    64. else
    65. {$showcity="visible";}
    66. ?>
    67. <td>
    68. <form name="city" action="usermain.php?site=do_add_any_number">
    69. <select name="city" style="background-color:dce6f5; border: 1px; font-family: Times,serif; visibility:<?php echo $showcity; ?>">
    70. <?php
    71. $select = $Connection->query("SELECT cityname, citycode from codes WHERE countryname LIKE"."'".$_GET[country]."'"."AND areaname LIKE"."'".$_GET[area]."'" );
    72. while($city = mysql_fetch_object($select))
    73. {echo "<option value=\"".$city->citycode."\">".$city->cityname."</option>";}
    74. ?>
    75. <option selected><? echo $_GET[city]; ?></option>
    76. <td>
    77. <?php
    78. //GET THE countrycode into a variable
    79. $select = $Connection->query("SELECT countrycode from codes WHERE countryname LIKE"."'".$_GET[country]."'");
    80. $result = mysql_fetch_array($select);
    81. $countrycode = $result[countrycode];
    82. ?>
    83. </select>
    84. <input type="hidden" name="country" value="<? echo $countrycode; ?>">
    85. <input name="email" type="hidden" value="<? echo $email; ?>">
    86. <input type="image" src="../gfx/ok_haken.gif">
    87. </form>
    88. </td>
    89. </tr>
    90. </table>
    Alles anzeigen


    Hier ein die usermain.php

    Quellcode

    1. <?php session_start(); ?>
    2. <? include("header.php"); ?>
    3. <style>
    4. body {
    5. background-color : #dce6f5;
    6. }
    7. #navi ul, #navi li
    8. { margin: 0;
    9. padding: 0;
    10. display: inline;
    11. list-style-type: none;
    12. }
    13. #navi a:link, #navi a:visited
    14. { float: left;
    15. line-height: 20px;
    16. font:Times New Roman;
    17. font-size:13px;
    18. margin: 0;
    19. padding: 0px 15px;
    20. text-decoration: none;
    21. color: #000000;
    22. background-color: #DCE6F5;
    23. }
    24. #navi #akt
    25. {
    26. color: #3160A7;
    27. }
    28. #navi a:hover, #navi a:hover#akt
    29. {
    30. color: #3160A7;
    31. background-color:#FFFFFF;
    32. }
    33. .description {
    34. background-color : #dce6f5;
    35. font-style : normal;
    36. font-size:11px;
    37. color:#666666;
    38. text-align:right;
    39. }
    40. </style>
    41. <?php
    42. switch($site)
    43. {
    44. default:
    45. $content = "home.php";
    46. if ($_GET['domainname']!="") $domain1 = $_GET["domainname"];
    47. break;
    48. case form_create_user:
    49. $content = "form_create_user.php";
    50. break;
    51. case do_create_user:
    52. $content = "do_create_user.php";
    53. break;
    54. case do_user_create:
    55. $content = "do_user_create.php";
    56. break;
    57. case form_get_user:
    58. $content = "form_get_user.php";
    59. break;
    60. case do_get_user:
    61. $content = "do_get_user.php";
    62. break;
    63. case get_all_users:
    64. $content = "get_all_users.php";
    65. break;
    66. case form_change_user:
    67. $content = "form_change_user.php";
    68. break;
    69. case form1_change_user:
    70. $content = "form1_change_user.php";
    71. break;
    72. case do_change_user:
    73. $content = "do_change_user.php";
    74. break;
    75. case user_delete:
    76. $content = "user_delete.php";
    77. break;
    78. case do_user_delete:
    79. $content = "do_user_delete.php";
    80. break;
    81. case number_move:
    82. $content = "number_move.php";
    83. break;
    84. case form_add_specific_number:
    85. $content = "form_add_specific_number.php";
    86. break;
    87. case do_add_specific_number:
    88. $content = "do_add_specific_number.php";
    89. break;
    90. case form_add_any_number:
    91. $content = "form_add_any_number.php";
    92. break;
    93. case do_add_any_number:
    94. $content = "do_add_any_number.php";
    95. break;
    96. case number_get_all:
    97. $content = "get_all_numbers.php";
    98. break;
    99. case number_add_tollfree:
    100. $content = "number_add_tollfree.php";
    101. break;
    102. case number_delete:
    103. $content = "form_del_faxnumber.php";
    104. break;
    105. case do_del_faxnumber:
    106. $content = "do_del_faxnumber.php";
    107. break;
    108. }
    109. ?>
    110. <table width="600" border="1" align="center" bgcolor="#DCE6F5" style="border-collapse:collapse; border-spacing: 0px;">
    111. <tr>
    112. <td><img src="gfx/logo-top.gif"></td>
    113. </tr>
    114. <tr>
    115. <td><ul id="navi">
    116. <li> <a href="usermain.php?site=form_create_user" id="akt">Create User</a> </li>
    117. <li> <a href="usermain.php?site=user_delete">Delete User</a> </li>
    118. <li> <a href="usermain.php?site=form_get_user">Get User Details</a> </li>
    119. <li> <a href="usermain.php?site=get_all_users">List all Users</a> </li>
    120. <li> <a href="usermain.php?site=form_change_user">Change User</a> </li>
    121. <li> <a href="usermain.php?site=user_delete">Delete User</a> </li>
    122. <li> <a href="logout.php">Logout</a> </li>
    123. </ul>
    124. <tr><td><ul id="navi">
    125. <li> <a href="usermain.php?site=form_add_specific_number" id="akt">Add Specific Number</a> </li>
    126. <li> <a href="usermain.php?site=form_add_any_number">Add any Number</a> </li>
    127. <li> <a href="usermain.php?site=number_get_all">Show all Numbers</a> </li>
    128. <li> <a href="usermain.php?site=number_delete">Delete Number</a> </li>
    129. <li> <a href="usermain.php">Move Number</a> </li>
    130. </ul>
    131. </td></tr>
    132. <tr height="450" valign="top" bgcolor="#FFFFFF">
    133. <td><?
    134. include($content);
    135. ?></td>
    136. </tr>
    137. <tr height="20" valign="center" bgcolor="#DCE6F5" class="description">
    138. <td>&copy;opyright 2006-2007 by Venali Europa GmbH </td>
    139. </tr>
    140. </table>
    141. <p><script language="JavaScript">
    142. new menu (MENU_ITEMS, MENU_TPL);
    143. </script>
    144. </p>
    145. </body></html>
    Alles anzeigen


    So, nun habe ich die Hosen runtergelassen ... :o
    Das Leben ist binär - du bist eine 1, oder eine 0
  • das & zeichen das du bei den actions im form tag angibst brauchst du eigentlich nicht... sobald ein formular übergeben wird fügt er das selber hinzu...

    im form tag gibt man bei action nur eine datei an, maximal die komplette url oder auch email adressen, aber keine argumente an php also alles nach .php

    http://de.selfhtml.org/html/formulare/definieren.htm#bereich

    bau es doch so um, das du in ein hidden feld, das du auf jedenfall immer mitschickst,
    einen wert dynamisch reinschreibst, mit dem du das verhalten steuern kannst...

    Quellcode

    1. <input type="hidden" name="frmname" value="was_auch_immer">


    das könntest du z.b. mit $_REQUEST['frmname'] auswerten und darauf reagieren...
    .:Reden Ist Schweigen und Silber Ist Gold:.

    real programmers don't comment their code: if it was hard to write, it should be hard to read!
  • dann aber richtig.
    Poste mal bitte den geparsten Code. Handelt sich wohl um ein JavaScript Problem.

    Und benenne schonmal onChange in onchange um.
    Die doit Funktion kannst du auch löschen.

    Und persönlich würde ich es auch umgehen "name" mehrmals für unterschiedliche Elemente zu vergeben.

    Quellcode

    1. <form name="area" ...>
    2. <select name="area"
  • Hi!

    Hier der geparste Code:

    Quellcode

    1. <head>
    2. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    3. <title>Venali Provisioning Tool</title>
    4. <style>
    5. body {
    6. background-color : #dce6f5;
    7. }
    8. #navi ul, #navi li
    9. { margin: 0;
    10. padding: 0;
    11. display: inline;
    12. list-style-type: none;
    13. }
    14. #navi a:link, #navi a:visited
    15. { float: left;
    16. line-height: 20px;
    17. font:Times New Roman;
    18. font-size:13px;
    19. margin: 0;
    20. padding: 0px 15px;
    21. text-decoration: none;
    22. color: #000000;
    23. background-color: #DCE6F5;
    24. }
    25. #navi #akt
    26. {
    27. color: #3160A7;
    28. }
    29. #navi a:hover, #navi a:hover#akt
    30. {
    31. color: #3160A7;
    32. background-color:#FFFFFF;
    33. }
    34. .description {
    35. background-color : #dce6f5;
    36. font-style : normal;
    37. font-size:11px;
    38. color:#666666;
    39. text-align:right;
    40. }
    41. </style>
    42. <table width="600" border="1" align="center" bgcolor="#DCE6F5" style="border-collapse:collapse; border-spacing: 0px;">
    43. <tr>
    44. <td><img src="gfx/logo-top.gif"></td>
    45. </tr>
    46. <tr>
    47. <td><ul id="navi">
    48. <li> <a href="usermain.php?site=form_create_user" id="akt">Create User</a> </li>
    49. <li> <a href="usermain.php?site=user_delete">Delete User</a> </li>
    50. <li> <a href="usermain.php?site=form_get_user">Get User Details</a> </li>
    51. <li> <a href="usermain.php?site=get_all_users">List all Users</a> </li>
    52. <li> <a href="usermain.php?site=form_change_user">Change User</a> </li>
    53. <li> <a href="usermain.php?site=user_delete">Delete User</a> </li>
    54. <li> <a href="logout.php">Logout</a> </li>
    55. </ul>
    56. <tr><td><ul id="navi">
    57. <li> <a href="usermain.php?site=form_add_specific_number" id="akt">Add Specific Number</a> </li>
    58. <li> <a href="usermain.php?site=form_add_any_number">Add any Number</a> </li>
    59. <li> <a href="usermain.php?site=number_get_all">Show all Numbers</a> </li>
    60. <li> <a href="usermain.php?site=number_delete">Delete Number</a> </li>
    61. <li> <a href="usermain.php">Move Number</a> </li>
    62. </ul>
    63. </td></tr>
    64. <tr height="450" valign="top" bgcolor="#FFFFFF">
    65. <td> <table border="0">
    66. <tr>
    67. <td>Email</td>
    68. <td>Country</td>
    69. <td></td>
    70. <td>City</td>
    71. </tr>
    72. <tr>
    73. <td>
    74. <form name="emailform" action="usermain.php?site=form_add_any_number">
    75. <input name="email" type="text" style="background-color:dce6f5; border: 1px; font-family: Times,serif; visibility:visible" onchange="document.forms['emailform'].submit()" value="" size="55">
    76. </form>
    77. <td>
    78. <form name="countryform" action="usermain.php?site=form_add_any_number&">
    79. <select name="country" onchange="document.forms['countryform'].submit()" style="background-color:dce6f5; border: 1px; font-family: Times,serif; visibility:visible">
    80. <option value="Australia">Australia</option><option value="Austria">Austria</option><option value="Belgium">Belgium</option><option value="Canada">Canada</option><option value="China">China</option><option value="Country">Country</option><option value="Denmark">Denmark</option><option value="Finland">Finland</option><option value="France">France</option><option value="Germany">Germany</option><option value="Greece">Greece</option><option value="Ireland">Ireland</option><option value="Italy">Italy</option><option value="Japan">Japan</option><option value="Luxembourg">Luxembourg</option><option value="Netherlands">Netherlands</option><option value="Norway*">Norway*</option><option value="Poland">Poland</option><option value="Portugal">Portugal</option><option value="Spain">Spain</option><option value="Sweden">Sweden</option><option value="Switzerland">Switzerland</option><option value="United Kingdom">United Kingdom</option><option value="United Kingdom*">United Kingdom*</option><option value="United States">United States</option> <option selected></option>
    81. </select>
    82. <input name="email" type="hidden" value="">
    83. </form>
    84. </td>
    85. <td>
    86. <form name="areaform" action="usermain.php?site=form_add_any_number&">
    87. <select name="area" onchange="document.forms['areaform'].submit()" style="background-color:dce6f5; border: 1px; font-family: Times,serif; visibility: hidden">
    88. <option selected></option>
    89. <input type="hidden" name="country" value="">
    90. </select>
    91. <input name="email" type="hidden" value="">
    92. </form>
    93. </td>
    94. <td>
    95. <form name="cityform" action="usermain.php?site=do_add_any_number">
    96. <select name="city" style="background-color:dce6f5; border: 1px; font-family: Times,serif; visibility:">
    97. <option selected></option>
    98. <td>
    99. </select>
    100. <input type="hidden" name="country" value="">
    101. <input name="email" type="hidden" value="">
    102. <input type="image" src="../gfx/ok_haken.gif">
    103. </form>
    104. </td>
    105. </tr>
    106. </table>
    107. </td>
    108. </tr>
    109. <tr height="20" valign="center" bgcolor="#DCE6F5" class="description">
    110. <td>&copy;opyright 2006-2007 by Venali Europa GmbH </td>
    111. </tr>
    112. </table>
    113. <p><script language="JavaScript">
    114. new menu (MENU_ITEMS, MENU_TPL);
    115. </script>
    116. </p>
    117. </body></html>
    Alles anzeigen
    Das Leben ist binär - du bist eine 1, oder eine 0
  • HI!

    Okay, ich bin ein Stück weiter.

    submit() nimmt ja die URL aus dem action tag ausm Formular, richtig?
    Nun habe ich dort eingetragen:

    usermain.php?site=form_add_any_number

    Wenn nun aber der onchange Tag seine Arbeit verrichtet übernimmt er alles bis zum Fragezeichen und was danach kommt nimmer ... also muss ich ihn dazu bringen den kompletten String (ist es einer, ich nenne es mal einen) als eins zu sehen und das ? dort nicht zu beachten.

    Ich hoffe es ist verständlich und natürlich das jemand Hilfe weiß .... im action die url in Gänsefüßchen oder Apostrophe setzen brachte leider keine Hilfe.

    Matze
    Das Leben ist binär - du bist eine 1, oder eine 0