Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/04/2009, 09:53
Avatar de OsSk4R
OsSk4R
 
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Inconveniente con Foreach

Buenas,

Tengo un problema con el tema del foreach, pues necesito pasar y subir a la base de datos más de un array.

Me explico.
Actualmente, muestro una lista de servidores que se seleccionan con checkbox. Entonces, al seleleccionar uno o varios, estos, se suben a una tabla de la BD especificamente diseñada para eso.

Todo bien, el uso del foreach lo utilizo antes de el INSERT y me funciona perfectamente.

El problema es que ahora he hecho que al seleccionar un checkbox, se muestre un input, si seleccionamos dos checkbox, dos inputs y asi sucesivamente.

Entonces quiero que si seleccionamos dos checkbox, o sea, elegimos dos servidores, aparezcan dos input text pàra escribir unos enlaces.

Todo sale perfecto con el código actual que tengo. El problema surje a la hora de subirlo a la tabla y es que me sube los servidores seleccionados, pero no me sube los enlaces o lo que escriba en los input.

Y todo eso, es porque seguro hago mal el foreach.

Este es el codigo actual:
Código Listamos:
Ver original
  1. <style>
  2. .hideable { position: relative; visibility: visible; }
  3. </style>
  4.     <script type="text/javascript">
  5. <!--
  6. function showMe (it, box) {
  7. var vis = (box.checked) ? "block" : "none";
  8. document.getElementById(it).style.display = vis;
  9. }
  10. //-->
  11. </script>
  12. <tr>
  13. <td>Servidor:</td>
  14.  <td>
  15.  
  16.        <?php
  17.  
  18.                         $sql = "SELECT * FROM servidores ORDER BY id";
  19.                         $res = do_sql ($sql);
  20.  
  21.                         $i=0;
  22.                         while ($row = mysql_fetch_array($res)) {
  23.                         $i++;
  24.                         $ide = $row['nom_serv'];
  25.             $imagenserv = $row['imagen_serv'];
  26.                 ?>
  27.  
  28. <input type="checkbox" name="id_servidor[]" onclick="showMe('div1<?php echo $i ?>', this)" value="<?php echo $row['id_servidor']?>"><?php echo $ide; ?><br />
  29.  
  30. <div id="div1<?php echo $i ?>" style="display:none">
  31. <SPAN ID="contenido" CLASS="hideable">
  32. Enlace:<INPUT TYPE='text' NAME='enlace[]' SIZE=15 MAXLENGTH=100>
  33. </FORM>
  34. </SPAN>
  35. </div>
  36.                 <?php
  37.                         }
  38.                 ?>
  39.    
  40.  </td>
  41. </tr>

Como hemos observado, listamos los servidores que tengo, la funcion esa del enlace...

Y aqui tenemos el código para insertar:
Código Segundo paso:
Ver original
  1. $id_servidor=$_POST['id_servidor'];
  2. $enlace=$_POST['enlace'];
  3. foreach ($id_servidor as $ide) {
  4. foreach ($enlace as $ide) {
  5.  
  6. $connection=mysql_connect("localhost","root","pass")
  7. or die("Error conectando a la base de datos");
  8. $db=mysql_select_db("deffer",$connection)
  9. or die ("Error seleccionando la base de datos");
  10. $query="INSERT INTO servidores1 (id_servidor,nombre_servidor,img_servidor,enlace,id_p) values ('$ide','$nombre_s','$imagen','$enlace','$id_p')";
  11. $result=mysql_query($query) or die (mysql_error());
  12. }
  13. }

La id del servidor, nombre del servidor... todo eso me lo inserta correctamente, pero en el tema del input enlace no :S

Seguro que el problema esta en el foreach, que no se hace de esa manera si quiero caputrar dos arrays, ¿verdad?

¿Como lo puedo hacer?

Muchas gracias,