Stapelverarbeitung bei $_POST & ein Verständnisproblem

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

  • Stapelverarbeitung bei $_POST & ein Verständnisproblem

    Hi,

    ich lese eine mySQL-Tabelle aus. Anhand der Länge aller existierenden Einträge wird ein Fromular erstellt.
    Mach das mal so:

    Tabelle: LanguagePackages
    enhält:
    - 1, deutsch
    - 2, englisch
    sowie einen Dateipfad, usw. Also Sachen die sich für jede Sprache ändern können. Vorranging benötige ich Sie jedoch jetzt nur, um Festzustellen, wieviele Sprachen überhaupt vorhanden sind und wie sie heißen.

    Also existieren zwei Sprachen.

    Das PHP generiert ein Formular, um Aliase abzuspeichern:
    Mit einer Forschleife schreibe ich also das hier:

    Quellcode

    1. <input type="hidden" name="source_group" value="headline">
    2. <input type="textfield" value="english title" name="title0">
    3. <input type="textfield" value="english description" name="description0">
    4. <input type="textfield" value="deutscher titel" name="title1">
    5. <input type="textfield" value="deutsche beschreibung" name="description1">


    Das Formular steht und es wird alles korrekt angezeigt.
    Die Daten werden jetzt mit POST gesendet und in eine Tabelle (language_files) geschrieben.
    Dazu wechsle ich von "index.php?insert" auf "index.php?update".

    mit print_r($_POST); bekomme ich das hier:

    Quellcode

    1. Array ( [status] => 1 [tooltip] => 1 [title0] => english title [description0] => english description [title1] => deutscher titel [description1] => deutsche beschreibung [description] => )


    Was soweit okay ist. Ich weiß aber nicht, wie ich an die Variablennamen ran komme. Ich kann mir mit
    echo $title0 den Titel anzeigen lassen.
    1. Problem:
    Der Versuch, Varibalennamen in ener Vorschleife zu generieren funktioniert nicht. Aber ganau sowas brauch ich, denke ich.

    Quellcode

    1. for ( $p=0; $p<count($_POST); $p++ ) {
    2. echo $title[$p];
    3. // würde ich jetzt weiter machen, sähe es so aus:
    4. // schreibe in languagefiles:
    5. // $package_id = $p+1
    6. // $source_code = (keine Ahnung wie ich die ermitteln soll, siehe unten)
    7. // '', $package, $source_code, $source_group, $title[$p], description[$p]
    8. // $qry = 'INSERT INTO language_files (id, package_id, source_code, source_group, title, description) VALUES (\'\', '.$package_id.', '.$source_code.', \''.$source_group.'\', \''.$title[$p].'\', \'\')';
    9. }



    Ich weiß, dass das flasch ist. Aber ich denke, ihr wisst, worauf ich hinaus will. Ich weiß, wie ich es in Flash machen müsste - also syntaktisch.
    Ich müsste beim schreiben in die Tabelle wieder ermitteln, wieviele Sprachen existieren, die Variablennamen, anhand der Länge zusammensetzten (title0, title1 usw.) und das als Variable festlegen in $title0, $title1. Dann guggen, was in diesen Variablen gesandt worden ist.
    Resultat wäre dann eben [title0] > english description usw.

    Was muss man tun?

    ...SPLIT...

    Vielen Dank für eure Zeit.

    lg icronosonic
  • Ich weiß nicht was du mit den Schlüsseln vor hast.
    Also um einfach nur an die Schlüssel heranzukommen und die Schlüsselwerte in ein normales Array zu bekommen verwendest du nur die Methode array_keys.

    Aber wozu du sie brauchst weiß ich nicht....

    Quellcode

    1. $qry = 'INSERT INTO language_files VALUES ("'.$_POST['title0'].'","'.$_POST['description0'].'"); ';
  • Danke :D

    OT (sehr subjectiv - aber sowas von!):
    Der Übergang von ActionScript auf PHP und JS ist easy. Bisher hab ich mich immer davor gedrückt. (Liegt vielleicht wirklich daran, das Flash meckert, wenn was net funzt. Das is ja unter PHP und JS doch eher anders.)
    Mir sagte mal wer, man solle erst mal C# lernen, da AS zu unsauber ist, um überhaupt anständig coden/verstehen zu können. Mmh... Ich find es aber ehrlich umständlicher von C#/VB etc. auf PHP zu gehen. Zumindest ist es umständlicher ASP zu schreiben. Finde ich. Man gewöhnt sich Denkweisen an, die man für PHP gar net braucht. Umgekehrt, also von PHP auf ASP ist, denk ich, noch schwieriger. Hab mit ASP angefangen, bevor ich HTML konnte - hat sich so ergeben.
    Ich bin kein Coder - nur Designer. Ich hab aber durch Flash festgestellt, dass es viel geiler ist, wenn man seine Vorstellungen coden kann - und nicht nur malt. Gerade bei Usability-Designs.

    Verbesserungsvorschläge sind mir Willkommen, da ich mit PHP erst anfange.


    Quellcode

    1. if(isset($_GET[$ITEM_LINKCATEGORY_INSERT])) {
    2. $pagesubtitle = $ADDSUBTITLE;
    3. include("inc.header.php");
    4. // ermittle wert für status und tooltip
    5. if ($status != "1") {
    6. $status = "0";
    7. }
    8. if ($tooltip != "1") {
    9. $tooltip = "0";
    10. }
    11. // ermittle höchste ID innerhalb einer gruppe
    12. $all_SOURCECODES = array();
    13. for ( $p=0; $p<$ln; $p++ ) {
    14. if ($all_LANGUAGEFILES[$p][3] == "linkcategory") {
    15. $all_SOURCECODES[$p] = $all_LANGUAGEFILES[$p][2];
    16. }
    17. }
    18. $max_source_code = max($all_SOURCECODES);
    19. $new_source_code = $max_source_code+1;
    20. echo $new_source_code;
    21. // ermittle title und description für jedes alias und schreibe sprachdaten
    22. for ( $p=0; $p<$lp; $p++ ) {
    23. $languagefiles_package_id = $p+1;
    24. $languagefiles_source_code = $new_source_code;
    25. $languagefiles_source_group = $source_group;
    26. $languagefiles_title = $_POST['title'.$p];
    27. $languagefiles_description = $_POST['description'.$p];
    28. $qry_LANGUAGEFILE = 'INSERT INTO persistencor_language_files (id, package_id, source_code, source_group, title, description) VALUES (\'\', '.$languagefiles_package_id.', '.$languagefiles_source_code.', \''.$languagefiles_source_group.'\', \''.$languagefiles_title.'\', \''.$languagefiles_description.'\')';
    29. $res_LANGUAGEFILE = mysql_query($qry_LANGUAGEFILE) OR DIE("<meta http-equiv=\"refresh\" content=\"5;URL=".$PAGE."?".$PAGE_LINKCATEGORY_CONTENT."&".$ITEM_LINKCATEGORY_ADD."\" />MySQL-Error: $qry_LANGUAGEFILE");
    30. }
    31. // schreibe neue Link-Kategorie
    32. $linkcategory_status = $status;
    33. $linkcategory_tooltip = $tooltip;
    34. $linkcategory_source_group = $source_group;
    35. $linkcategory_source_code = $new_source_code;
    36. $linkcategory_description = $description;
    37. $qry_LINKCATEGORY = 'INSERT INTO persistencor_link_categories (id, status, tooltip, source_group, source_code, description) VALUES (\'\', '.$linkcategory_status.', '.$linkcategory_tooltip.', \''.$linkcategory_source_group.'\', '.$linkcategory_source_code.', \''.$linkcategory_description.'\')';
    38. $res_LINKCATEGORY = mysql_query($qry_LINKCATEGORY) OR DIE("<meta http-equiv=\"refresh\" content=\"5;URL=".$PAGE."?".$PAGE_LINKCATEGORY_CONTENT."&".$ITEM_LINKCATEGORY_ADD."\" />MySQL-Error: $qry_LINKCATEGORY");
    39. /*
    40. echo "<meta http-equiv=\"refresh\" content=\"0;URL=".$PAGE."?".$PAGE_LINKCATEGORY_CONTENT."&".$ITEM_LINKCATEGORY_VIEWLIST."\" />";
    41. */
    42. }
    Alles anzeigen

    Dafür, dass ich die Variablen in eine neue Variablen schreibe, krieg ich jetzt sicher Prügel. Und sicher auch dafür, dass sie so ellenlang sind. Find es allerdings praktischer als zu jedem 5 Zeilen Kommentar zu schreiben.
    Das mit dem foreach fehlt noch. Weil ich das nicht verstehe. Habs jetzt weitestgehendst so gemacht, wie ich es unter ActionScript machen würde.

    Vielleicht ist der Ansatz auch verkehrt. Ich mein es funzt. Mal schauen, wie lange :)

    Hier mal das HTML-Form, das dem User vor die Nase gesetzt wird, vielleicht kommt jetzt besser rüber, warum das so sein muss.

    Quellcode

    1. <table class="mainwrapperright" width="100%" height="100%">
    2. <tr>
    3. <td width="100%" valign="top" height="50">
    4. <div>
    5. <span class="TabLink"onClick="location.href('?LINKCATEGORIES&ListAll')" title="" target="_self">LIST ALL</span>
    6. <span class="TabLinkActive" target="_self">ADD NEW</span>
    7. </div>
    8. </td>
    9. </tr>
    10. <tr>
    11. <td valign="top" height="100%">
    12. <div id="mainwrappercontent">
    13. <form action="?LINKCATEGORIES&Insert" id="addlinkcategory" method="post">
    14. <input type="hidden" name="source_group" value="linkcategory">
    15. <table border="0" id="tabela" class="maintable" align="center" width="100%" cellpadding="0" cellspacing="0">
    16. <thead> <tr>
    17. <th colspan="5" valign="top">ADD NEW CATEGORY</th>
    18. </tr>
    19. <tr>
    20. <th class="maintabletheadtd_secondary" valign="bottom">status</th>
    21. <th class="maintabletheadtd_secondary" valign="bottom">tooltip</th>
    22. <th class="maintabletheadtd_secondary" valign="bottom">multilingual title</th>
    23. <th class="maintabletheadtd_secondary" valign="bottom">description for category</th>
    24. </tr>
    25. </thead>
    26. <tbody>
    27. <tr>
    28. <td style="width:5%" align="center" valign="top"><input type="checkbox" name="status" value="1" checked="checked"></td>
    29. <td style="width:5%" align="center" valign="top"><input type="checkbox" name="tooltip" value="1" checked="checked"></td>
    30. <td style="width:45%" align="center" valign="top">
    31. <table class="mainwrapperright" width="100%" height="100%" cellpadding="0" cellspacing="0">
    32. <thead> <tr>
    33. <th colspan="2" valign="top" align="center">english</th>
    34. </tr>
    35. </thead> <tbody> <tr>
    36. <td class="maintabletheadtd_secondary" align="left" valign="top">title</td>
    37. </tr>
    38. <tr>
    39. <td style="" align="center" valign="top"><input type="text" name="title0" style="width:100%" maxlength="250"></td>
    40. </tr>
    41. <tr>
    42. <td class="maintabletheadtd_secondary" align="left" valign="top">description</td>
    43. </tr>
    44. <tr>
    45. <td style="" align="center" valign="top"><input type="text" name="description0" style="width:100%" maxlength="250"></td>
    46. </tr>
    47. </tbody> </table>
    48. <table class="mainwrapperright" width="100%" height="100%" cellpadding="0" cellspacing="0">
    49. <thead> <tr>
    50. <th colspan="2" valign="top" align="center">deutsch</th>
    51. </tr>
    52. </thead> <tbody> <tr>
    53. <td class="maintabletheadtd_secondary" align="left" valign="top">title</td>
    54. </tr>
    55. <tr>
    56. <td style="" align="center" valign="top"><input type="text" name="title1" style="width:100%" maxlength="250"></td>
    57. </tr>
    58. <tr>
    59. <td class="maintabletheadtd_secondary" align="left" valign="top">description</td>
    60. </tr>
    61. <tr>
    62. <td style="" align="center" valign="top"><input type="text" name="description1" style="width:100%" maxlength="250"></td>
    63. </tr>
    64. </tbody> </table>
    65. </td>
    66. <td style="width:45%" align="left" valign="top"><input type="text" name="description" style="width:100%" maxlength="250"></td>
    67. </tr>
    68. <tr>
    69. <td align="center" valign="bottom"> </td>
    70. <td align="left" valign="bottom"> </td>
    71. <td class="error" align="left" valign="bottom"><a href="#" target="_self">» EDIT LANGUAGEFILES</a></td>
    72. <td align="left" valign="bottom"> </td>
    73. </tr>
    74. </tbody>
    75. <tfoot>
    76. <tr>
    77. <td align="left" valign="bottom" colspan="6"><span class="ButtonLink" onClick="submit()" onMouseOver="Tip('Insert new link in database.');" title="">ADD NEW</span><span class="ButtonLink" onClick="location.href('?LINKCATEGORIES&ListAll')" onMouseOver="Tip('Cancel an go back to the linklist.');" title="">CANCEL</span></td>
    78. </tr>
    79. </tfoot>
    80. </table>
    81. </form> </div>
    82. </td>
    83. </tr>
    84. <tr>
    85. <td width="100%" valign="top" height="50">
    86. <div>
    87. </div>
    88. </td>
    89. </tr>
    90. </table>
    Alles anzeigen


    thx