webForumDet fria alternativet
Logga in / Bli medlem

ForEach?

PHP

8 svar · 266 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Trådstart#1

Har en adminsida där jag lägger till flera svar. Helt olika varje gång. Alltså inget bestämt.

  <form action="admin.php?action=save" method="post">
    <input type="hidden" name="fraga" value="<?=$fraga?>">
    <?$sort = $antal+1;
    for($i = 1;$i < $sort ;$i++){?>
    <tr>
      <td><b>Svar <?=$i?></b><br><input type="text" name="svar<?=$i?>" size="40"> </td>
    </tr>
    <?}?>
    <tr>
      <td colspan="2" height="25" style="border-bottom: 1px solid #000000" valign="top"><input type="submit" value="Slutför"></td>
    </tr>
  </form>

Sen vill jag spara detta. Har denna kod nu men hur gör jag för alla svarsalternativen?

   mysql_query("Insert Into fraga(fraga) Values('$fraga')");?>
   <script>location.href='admin.php';</script>
Medlem sedan aug. 20002 975 inlägg
#2

Nu skickar du från formuläret $svar1, $svar2, $svar3 o.s.v
Hur hade du tänkt spara dom?
Har du olika kolumner som heter svar1, svar2 o.s.v ?

Medlem sedan dec. 20011 860 inlägg
#3

Nej! Jag har id, pollid, klick och svar. Det ska alltså läggas till alla. Man vet ej hur många svar det är för man kan ha hur många svar som helts. Antalet får man från steget före det som är i min kod ovan!

Medlem sedan dec. 20011 860 inlägg
#4

Har jag inte förklarar riktigt så ni föstår?

Medlem sedan aug. 20002 975 inlägg
#5

Jag har nog inte förstått, men så här har jag uppfattat det.

Du har en tabell (fraga) där du lagrar frågan och en tabell (svar) där du lagrar svaren.

fältet pollid i tabellen svar motsvaras av id i tabellen fraga.

Då borde det gå med något liknande det här:

mysql_query("Insert Into fraga(fraga) Values('$fraga')");

$q_num = mysql_insert_id();

foreach($_POST as $key => $val){
	if (substr($key, 0, 4) == "svar"){
		mysql_query("INSERT INTO svar(pollid, svar) VALUES($qnum, '$val')");
	}
}
Medlem sedan dec. 20011 860 inlägg
#6

För varje svar så är det en siffra när man skriver de svar man vill ha! Hur får man med den siffran? SKa sparas som svarId för varje svar! Bestämmer ordningen på svaren! Med detta?

   mysql_query("Insert Into fraga(fraga) Values('$fraga')");
   $q_num = mysql_insert_id();

   foreach($_POST as $key => $val){
     if (substr($key, 0, 4) == "svar"){
       $svarId = substr($key, 5,3);
       mysql_query("INSERT INTO svar(pollid, svar, svarId) VALUES($q_num,'$val',$svarId)");
     }
   }

Hur som helst sparas frågan men inte svaren!

Medlem sedan aug. 20002 975 inlägg
#7
$svarId = substr($key,4);

Är pollid och svarId av formatet INT, annars får du sätta citationstecken runt dom: VALUES('$q_num','$val','$svarId').

Lite felsökning:

   foreach($_POST as $key => $val){
      if (substr($key, 0, 4) == "svar"){
         $svarId = substr($key, 4);
         $sql = "INSERT INTO svar(pollid, svar, svarId) VALUES($q_num,'$val',$svarId)";
         echo "SQL: $sql <br>";
         mysql_query($sql) or die(mysql_error());
     }
   }
Medlem sedan dec. 20011 860 inlägg
#8

Dom är INT. SKa testa och återkommer strax!

Medlem sedan dec. 20011 860 inlägg
#9

Det fungerade nu! Vad var det som var fel?

258 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)