Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

meerdere $_POST met foreach

rjpm
8 antwoorden
  • Misschien kan iemand mij helpen met het volgende: ik ben bezig met het maken van een inschrijfsysteem met mysql en php. De bedoeling is dat mensen hun naam invullen, een klas aanklikken en een module kiezen. De gegevens voor de klas worden gehaald uit tblklas en de gegevens voor de modules uit tblmod.

    Ik heb het nu zover werkend dat de naam en de modulekeuze opgeslagen worden in tblmodule. Ik wil echter ook de klaskeuze in diezelfde tabel hebben. Ik krijg dit niet voor elkaar. Weet iemand hoe ik dit moet oplossen? Kun je eigenlijk foreach combineren met meerdere gegevens?

    Nog een andere vraag ten slotte. Ik ben bezig geweest met een dropdownmenu voor de klaskeuze, maar dat werkt steeds niet. Ik krijg wel een menu, maar inladen van gegegevens uit tblklas lukt dan niet. Misschien heeft iemand daar een tip voor.

    Dit is de code:

    [code:1:125007375c]
    <?php
    ob_start();

    include_once('library/config.inc');

    if ($_GET["action"] == "") {
    $action = $_POST["action"];
    } else {
    $action = $_GET["action"];
    }

    function inschrijf() {
    $naam = $_POST['naam'];
    $klas = $_POST['klas'];
    $module = $_POST['module'];

    {
    foreach ($_POST['module'] as $modNaam)
    $sql_query = "INSERT INTO tblmodule (naam, klas, module) ";
    $sql_query .="VALUES ('$naam', '$klasNaam', '$modNaam');";
    $result = mysql_query($sql_query) or die(mysql_error());
    }
    }
    ?>

    <html>
    <head>
    <title>Inschrijven</title>
    <meta name="Robots" content="NOINDEX, NOFOLLOW">
    </head>
    <body topmargin="20" leftmargin="20" style="background-image: url(../../logo-01.jpg); background-repeat: no-repeat;background-attachment: fixed; background-position: 100% 10%;">
    <font face="Arial, Helvetica, sans-serif">

    <table width="100%">
    <tr>
    <td width="5%"></td>
    <td width="85%">
    <h1>Modules</h1>
    <form name="form2" action="<?php echo($_SERVER["PHP_SELF"]);?>" method="post">
    <table cellspacing="0" cellpadding="0" border="1" width="60%" align="center" summary="Inschrijven voor modules">
    <tr>
    <th valign="middle" align="left">Je naam</th>
    <td valign="top" align="left" colspan="3"><input type="text" size="40" maxlength="40" name="naam" id="naam" /></td>
    </tr>
    <tr>
    <th valign="top" align="left">Klas</th>
    <?php
    $sqlKlas = "SELECT * FROM tblklas" ;
    $resultKlas = mysql_query($sqlKlas) or die(mysql_error());
    while ($rowKlas = mysql_fetch_array($resultKlas)) {
    $klasID = $rowKlas["klasID"];
    $klasNaam = $rowKlas["klasNaam"];
    echo "<td valign=\"top\" align=\"left\" colspan=\"3\"><input type=\"radio\" name=\"klas[]\" value=\"$klasID\" id=\"$klasID\" />$klasNaam</td>
    ";
    echo "</tr>
    ";
    }
    ?>
    <tr>
    <th valign="top" align="left">Module</th>
    <?php
    $sqlMod = "SELECT * FROM tblmod" ;
    $resultMod = mysql_query($sqlMod) or die(mysql_error());
    while ($rowMod = mysql_fetch_array($resultMod)) {
    $modID = $rowMod["modID"];
    $modNaam = $rowMod["modNaam"];
    echo "<td valign=\"top\" align=\"left\" colspan=\"3\"><input type=\"radio\" name=\"module[]\" value=\"$modID\" id=\"$modID\" />$modNaam</td>
    ";
    echo "</tr>
    ";
    }
    ?>
    <tr>
    <td valign="bottom" align="center" colspan="4"><br />
    <input type="hidden" value="save" name="action">
    <input type="submit" value="Inschrijven" title="Inschrijven" name="Inschrijven" /><br /><br />
    </td>
    </tr>
    </table>
    </body>
    </html>

    <?php
    switch ($action) {
    case "save":
    inschrijf();
    break;
    default:
    break;
    }
    ?>
    [/code:1:125007375c]

    Alvast bedankt!

    Groeten,
    Rob



  • Dan maak je er toch gewoon een 2e query bij die je dan uitvoert, zo moeilijk lijkt me dat niet.

    voor het dropdown menu:

    [code:1:6c7fb20f39]
    <option name="klas">
    <?php
    // query en zo
    while ($klas = mysql_fetch_array($result)){
    echo "<option value=\"".$klas['id']."\">".$klas['naam']."</option>";
    }
    ?>
    </option>

    en dat dan opvangen met een if/else of switch (controleer op id, en die zet je er dan in, let wel op dat je niet klakeloss accepteerd wat er ingevoerd is.[/code:1:6c7fb20f39]
  • Bedankt voor je antwoord. Ik heb het nu inderdaad werkend met een extra query. Het dropdownmenu wil nog niet echt lukken. Hij blijft alle waarden naast elkaar plaatsen op het scherm in plaats van in een dropdownmenu. Blijkbaar doe ik iets fout, maar wat? Misschien kan je me nog een keer helpen?

    Rob
  • het kan wezen dat ik de codes weer door de war haal van dropdown (heb ik altijd last van).
    [code:1:450ffd8e3d] <select name="ouder">
    <option value="none" selected="selected">&nbsp;</option>
    <?php
    $result= mysql_query("SELECT * FROM `cmspages`");
    while($r = mysql_fetch_array($result)){
    echo "<option value=\"".$r['id']."\">".$r['titel']."</option>";
    }
    ?>
    </select>[/code:1:450ffd8e3d] dit is een stukje code uit mijn cms, dit moet haastzeker werker indien je het aanpast.

    if in me vorige stukje:
    [code:1:450ffd8e3d]
    <select name="klas">
    <?php
    // query en zo
    while ($klas = mysql_fetch_array($result)){
    echo "<option value=\"".$klas['id']."\">".$klas['naam']."</option>";
    }
    ?>
    </select>

    en dat dan opvangen met een if/else of switch (controleer op id, en die zet je er dan in, let wel op dat je niet klakeloss accepteerd wat er ingevoerd is.[/code:1:450ffd8e3d]
  • Zoals zo vaak, is het na proberen toch gelukt om het dropdownmenu in te voegen, maar nu wordt die keuze niet in de database opgeslagen. Wat doe ik nu weer fout??

    De code van de query:
    [code:1:f3bd93d707]
    function inschrijf() {
    $voornaam = $_POST['voornaam'];
    $achternaam = $_POST['achternaam'];
    $klas = $_POST['klas'];
    $module = $_POST['module'];

    $sql_query = "SELECT voornaam FROM tblmodule WHERE voornaam='".$voornaam."' AND achternaam='".$achternaam."';";
    $result = mysql_query($sql_query);
    if(mysql_num_rows($result) > 0) {
    header ("Location: error.php");
    } else {
    foreach ($_POST['module'] as $modNaam);

    $sql_query = "INSERT INTO tblmodule (voornaam, achternaam, klas, module) ";
    $sql_query .="VALUES ('$voornaam', '$achternaam', '$klasNaam', '$modNaam');";
    $result = mysql_query($sql_query) or die(mysql_error());
    }
    [/code:1:f3bd93d707]

    de code van het dropdownmenu:


    [code:1:f3bd93d707]
    <?php
    $sqlKlas = "SELECT * FROM tblklas" ;
    $resultKlas = mysql_query($sqlKlas) or die(mysql_error());
    echo '<select name=\"selectname\">';
    echo '<option value="">–Kies je klas–</option>';
    while($klasSel = mysql_fetch_array($resultKlas)) {
    echo '<option value="'.$klasSel['klasID'].'">'.$klasSel['klasNaam'].'</option>';
    }
    echo '</select>';
    ?>[/code:1:f3bd93d707]


    Wie kan me helpen?
  • Ik denk dat je de verkeerde post afvangt (je gebruikt $_POST['klas'] terwijl de naam selectname is, dus $_POST['selectname'] is de correcte variabele in dit geval)
  • Dat blijkt ook niet te werken helaas. Hij geeft geen foutmelding, maar het veld in de database blijft leeg. Heb je nog andere suggesties?
  • [code:1:3d87e2832a] $klas = $_POST['klas']; [/code:1:3d87e2832a]

    wordt

    [code:1:3d87e2832a] $klasnaam = $_POST['selectname']; [/code:1:3d87e2832a] indie je de naam van de dropdown ng neit verandert hebt.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.