Estoy teniendo problemas con un sistemilla que estoy montando.
Explico:
Tengo un formulario donde aparece una zona llamada Servidores, en esta zona, aparecen 2 Checkboxes con su correspondientes nombres.
Mediante javascript, hago que cuando se seleccione un checkbox aparezca una caja de texto, o sea, un input text donde el usuario pondra el enlace del servidor.
Luego lo subo a la base de datos utilizando foreach porque el usuario puede escojer 1 o los 2 servidores.
La base mas o menos se queda así:
id = 1
id_servidor = 1
enlace = www.demo.com
id = 2
id_servidor = 2
enlace = www.demo2.com
Todo me funciona correctamente, no me da ningun problema, lo que sucede es que ahora he pensado, ¿y sí un servidor dispone de más enlaces?.
Entonces, se me ha ocurrido poner varios input text. Asi que lo unico que he hecho ha sido agregar un input text más, pero no me ha funcionado, puesto que todo lo demas se sube correctamente, pero el campo enlace SOLO se sube el ultimo enlace que se haya escrito.
Así lo tengo;
Javascript y css para el efecto de ocultación de los input text:
Código 1:
Ver original
<style> .hideable { position: relative; visibility: visible; } </style> <script type="text/javascript"> <!-- function showMe (it, box) { var vis = (box.checked) ? "block" : "none"; document.getElementById(it).style.display = vis; } //-->
Parte del formulario donde se establecen los servidores:
Código 2:
Ver original
<tr> <td>Servidor:</td> <td> <?php $sqlServidores=mysql_query("SELECT * FROM oc_servidores ORDER BY id",$conexion); $i=0; while($MostrarFilaServidores=mysql_fetch_array($sqlServidores)){ $i++; $ide = $MostrarFilaServidores['id']; $nombre = $MostrarFilaServidores['nom_serv']; ?> <input type="checkbox" name="id_serv[<?php echo $MostrarFilaServidores['id_serv']; ?>]" onclick="showMe('div1<?php echo $i ?>', this)" value="<?php echo $MostrarFilaServidores['id_serv']?>"><?php echo $nombre; ?><br /> <div id="div1<?php echo $i ?>" style="display:none"> <SPAN ID="contenido" CLASS="hideable"> Enlace:<INPUT TYPE="text" NAME="enlace[<?php echo $MostrarFilaServidores['id_serv']; ?>]" SIZE="15" MAXLENGTH="100"><br> Enlace:<INPUT TYPE="text" NAME="enlace[<?php echo $MostrarFilaServidores['id_serv']; ?>]" SIZE="15" MAXLENGTH="100"><br> </FORM> </SPAN> </div> <?php } ?> </td> </tr>
Y aqui el insert:
Código 3:
Como dijé, si tan solo dejo uno:Ver original
$id_servidor=$_POST['id_serv']; $enlaces=$_POST['enlace']; foreach ($id_servidor as $indice => $valor) { echo "{$id_servidor[$indice]} : {$enlaces[$indice]}<br />"; $connection=mysql_connect("localhost","root","pass") or die("Error conectando a la base de datos"); $db=mysql_select_db("deffer",$connection) or die ("Error seleccionando la base de datos"); $query="INSERT INTO oc_servers_pel1 (id_servidor,enlace) values ('$id_servidor[$indice]','$enlaces[$indice]')"; $result=mysql_query($query) or die (mysql_error()); }
Enlace:<INPUT TYPE="text" NAME="enlace[<?php echo $MostrarFilaServidores['id_serv']; ?>]" SIZE="15" MAXLENGTH="100"><br>
Me funciona, pero como deje dos, todo me funciona, pero solo se sube el ultimo enlace que se haya escrito.
¿Porque no lo recoje bien?
Muchas gracias, una vez más