webForumDet fria alternativet

loopa värden från formulär

PHP

7 svar · 261 visningar · startad av Pedda

Medlem sedan juni 20006 031 inlägg
Frågan#1

Har ett script där jag har ett formulär med flera textfält.

<form name="form1" method="post" action="<?=$_SERVER['PHP_SELF'] ?>?action=ny&Step3=">
  <table width="100%" border="0" cellspacing="5" cellpadding="0">
    <tr> 
      <td>&nbsp;</td>
      <td>Steg 2</td>
    </tr>
    <tr> 
      <td>Svar 1:</td>
      <td><input name="answ1" type="text" value="" size="50" maxlength="100">
        F&auml;rg: # 
        <input name="color1" type="text" size="6" maxlength="6"></td>
    </tr>
    <tr> 
      <td>Svar 2:</td>
      <td><input name="answ2" type="text" value="" size="50" maxlength="100">
        F&auml;rg: # 
        <input name="color2" type="text" size="6" maxlength="6"></td>
    </tr>
    <tr>
      <td>Svar 3:</td>
      <td><input name="answ3" type="text" value="" size="50" maxlength="100">
        F&auml;rg: # 
        <input name="color3" type="text" size="6" maxlength="6"></td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td><input type="submit" name="Step3" value="Till Steg 3 &gt;&gt;"> <input name="clear" type="reset" id="clear" value="Rensa"> 
      </td>
    </tr>
  </table>
</form>

Vill loopa in svaren i databasen tabellnamn data, fält answ och color. Så varje fält kommer alltså på en rad i databasen. Har id som autoincrement.
Tomma fält i formuläret ska inte heller läggas in i databasen, och jag lyckas inte lista ut hur man gör.

Medlem sedan juni 20001 251 inlägg
#2

Följande kod loopar igenom alla POST-variabler. (Även skicka- och återställknappen? Om detta är fallet kan du utesluta dem genom att subtrahera 2 från count($keys).)

Om båda answ och color har har ett värde så läggs det in en ny post i tabellen data.

<?
$keys = array_keys($_POST); 
$i = 0;
while($i < count($keys)){ 
	if (isset($_POST[$keys[$i]]) && isset($_POST[$keys[$i+1]])) {
	mysql_query("INSERT INTO data (id, answ, color) VALUES ('', '{$_POST[$keys[$i]]}', '{$_POST[$keys[$i+1]]}')") or die(mysql_error());
	}
$i+=2;
}
?>
Medlem sedan juni 20006 031 inlägg
#3

Tackar, funkade utmärkt!

Medlem sedan juni 20006 031 inlägg
#4

Ropade visst hurra för tidigt.

Förslaget från stevenet lägger in även tomma poster.

Någon som har fler förslag, eller något som kan ändras i stevenet's förslag?

Medlem sedan aug. 20002 975 inlägg
#5

Testa det här:

foreach ($_POST as $key => $val) {

    if (substr($key, 0, 4) == 'answ' && $val != "") {

       $sql = "INSERT INTO data (id, answ, color) VALUES ('', '$key', '$val')";
       mysql_query($sql) or die(mysql_error());

    }

}
Medlem sedan juni 20006 031 inlägg
#6

Tyvärr, inget sparas i databasen.

Medlem sedan juni 20001 251 inlägg
#7

Pröva att byta ut:
if (isset($_POST[$keys[$i]]) && isset($_POST[$keys[$i+1]])) {
mot
if (strlen($_POST[$keys[$i]])>0 && strlen($_POST[$keys[$i+1]])>0) {

Medlem sedan juni 20006 031 inlägg
#8

Underbart, nu funkar det.
Tack igen!!

268 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)