Estoy cambiando un sistema de encuestas en ASP a PHP y llevo horas atascado en la adicion de los votos a la base de datos. Os explico:
Para asociar las encuestas con las preguntas que contienen (ya que van en la misma tabla "encuestas", a las preguntas se le da el valor de la "id" de la encuesta en el campo "identificador".
El problema viene cuando proceso el formulario "encuesta.php" a "verencuesta.php". En ASP tenía lo siguiente:
Código PHP:
<form method="POST" action="verencuesta.asp?id=<%=request.QueryString("id")%>">
<table width="100%" border="0" class="txt_cajas">
<tr>
<td><b><%=ucase(rse("pregunta"))%></b></td>
</tr>
<%
set rse1=createobject("ADODB.Recordset")
sqltxt1="SELECT * from encuestas where identificador="&rse("idencuesta")&" order by pregunta"
rse1.open sqltxt1,connae
if not rse1.EOF then
rse1.movefirst
while not rse1.EOF
%>
<tr>
<td><b class="tit_noticias01"><%=rse1("pregunta")%></b></td>
</tr>
<%for i = 0 to rse1("nopciones")-1 step 1 %>
<tr>
<td><input type="radio" value="<%=i%>" name="<%=rse1("idencuesta")%>">
<font face="Verdana" size="1"><%=rse1(i)%></font></td>
</tr>
<%next
rse1.movenext
wend
end if
rse1.close
rse.close%>
</table>
<p align="center">
<label><br>
<input name="Submit" type="submit" class="pie_foto" value="Enviar">
</label>
</p>
</form>
Código PHP:
<form method="POST" action="verencuesta.php?id=<?=$_GET["id"]?>&preguntas=""">
<table width="100%" border="0" class="txt_cajas">
<tr>
<td><b><?=strtoupper($datos["titulo"]);?></b></td>
</tr>
<?
$s="select * from encuestas where identificador=".$_GET["id"]." order by pregunta";
$q=mysql_query($s);
while($preg=mysql_fetch_array($q))
{
?> <? $i=1?>
<tr>
<td><b class="tit_noticias01"><?=$preg["pregunta"];?></b></td>
</tr>
<? for($i=1;$i<=$preg["nopciones"];$i++)
{
?>
<? $preguntas[$i]=$preg["id"];?>
<tr>
<td><input type="radio" value="<?=$preg["tr".$i];?>" name="<?=$preg["id"];?>">
<font face="Verdana" size="1"><?=$preg["tr".$i];?></font></td>
</tr>
<?
}
?><? }
?>
</table>
<p align="center">
<label><br>
<input name="Submit" type="submit" class="pie_foto" value="Enviar">
</label>
</p>
</form>
Código PHP:
set rse1=createobject("ADODB.Recordset")
sqltxt1="SELECT * from encuestas where identificador="&request.QueryString("id")
rse1.open sqltxt1,conn
if not rse1.EOF then
rse1.movefirst
while not rse1.EOF
if request.form(""&rse1("idencuesta")&"")<>"" then
select case true
case request.form(""&rse1("idencuesta")&"")=0
campo="r1"
case request.form(""&rse1("idencuesta")&"")=1
campo="r2"
case request.form(""&rse1("idencuesta")&"")=2
campo="r3"
case request.form(""&rse1("idencuesta")&"")=3
campo="r4"
end select
sqltxt="update encuestas set "&campo&" = "&campo&"+1 where idencuesta="&rse1("idencuesta")
conn.execute sqltxt
end if
rse1.movenext
wend
end if
rse1.close
%>
Código PHP:
<?
$s="select * from encuestas where identificador=".$_GET["id"]." order by pregunta";
$q=mysql_query($s);
while($preg=mysql_fetch_array($q))
{$titulo=$_POST[$preg["id"]];
?>
<? switch ($preg["id"])
{
case "1": $campo="r1";break;
case "2": $campo="r2";break;
case "3": $campo="r3";break;
case "4": $campo="r4";break;
break;
}
?><? $s="update encuestas set '$campo'='1' where id=".$_GET["id"]?><? } ?>