Foros del Web » Programando para Internet » PHP »

Arrays y tablas MySQL

Estas en el tema de Arrays y tablas MySQL en el foro de PHP en Foros del Web. Buenas a todos, he estado pensando en un nuevo servicio para mi página de reducción de URL's http://oneblu.com/url Consiste en introducir una URL por campo ...
  #1 (permalink)  
Antiguo 29/06/2012, 10:56
Avatar de itemc2  
Fecha de Ingreso: marzo-2010
Ubicación: México
Mensajes: 8
Antigüedad: 14 años, 1 mes
Puntos: 0
Arrays y tablas MySQL

Buenas a todos, he estado pensando en un nuevo servicio para mi página de reducción de URL's http://oneblu.com/url

Consiste en introducir una URL por campo en un form
Código HTML:
<input type='text' name='url' size='30' /> 
y mediante un botón agregar otro campo, el usuario agregará los campos que necesite.

La función para agregar un campo al form:
Código HTML:
<script language="javascript">
fields = 0;
function addInput() {
if (fields != 10) {
document.getElementById('text').innerHTML += "<input type='text' name='url' size='30' />";
fields += 1;
} else {
document.getElementById('text').innerHTML += "<br />Sólo se permiten hasta 10 campos!.";
document.form.add.disabled=true;
}
}
</script> 
El form:
Código HTML:
<form method="POST">
<div id="text">
<input type='text' name='url' size='30' />
<input type='text' name='url' size='30' />
</div>
<input type="button" onclick="addInput()" name="add" value="Agregar campo" />
<input type="submit" name="submit" value="Submit" />
</form> 
Me gustaría saber cómo obtener el valor de cada campo que el usuario creó (supongo que es con arrays) y posteriormente hacer un INSERT en una tabla de cada uno.

Soy novato en esto de los arrays, he buscado en Google pero no logro entenderlos, espero puedan ayudarme.
  #2 (permalink)  
Antiguo 29/06/2012, 11:02
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: Arrays y tablas MySQL

podes hacer asi..

Código:
<input type='text' name='url[]' size='30' />
<input type='text' name='url[]' size='30' />
agregando los corchetes que significan que dicho campo tendra mas de un valor.. array en pocas palabras..

y luego para recibir seria

Código PHP:
Ver original
  1. foreach($_POST['url'] as $value)
  2. {
  3.      //aqui tu codigo de insert....
  4. }

Es un ejemplo rapido.. prueba y dime si te sirvio.. no lo probe pero algo asi seria la idea..
  #3 (permalink)  
Antiguo 29/06/2012, 11:11
Avatar de itemc2  
Fecha de Ingreso: marzo-2010
Ubicación: México
Mensajes: 8
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Arrays y tablas MySQL

Gracias por tu respuesta!, no funcionó del todo estoy haciendo lo que tu dices y sólo inserta en la tabla el primer campo, los demás los ignora, este es el código que estoy usando:
Código PHP:
<?php 
if (isset($_POST['submit'])) 

foreach(
$_POST['url'] as $value)
{
 
$sql "insert into url values('$id','$value','test')";  
    
mysql_query($sql);     
}
}
?>
  #4 (permalink)  
Antiguo 29/06/2012, 11:22
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: Arrays y tablas MySQL

prueba este codigo y veras que si funciona

Código PHP:
Ver original
  1. <?php
  2. if (isset($_POST['enviar']))
  3. {
  4.     foreach($_POST['url'] as $value)
  5.     {
  6.         echo $value . '<br />';
  7.     }  
  8. }
  9.  
  10. echo '
  11. <br /><br />
  12. <form name="furl" method="post" action="index.php">
  13.     <input type="text" name="url[]" value="" />
  14.     <br />
  15.     <input type="text" name="url[]" value="" />
  16.     <br />
  17.     <input type="submit" name="enviar" id="enviar" />
  18. </form>';
  19. ?>

como le generas los valores de $id?...
  #5 (permalink)  
Antiguo 29/06/2012, 11:39
Avatar de itemc2  
Fecha de Ingreso: marzo-2010
Ubicación: México
Mensajes: 8
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Arrays y tablas MySQL

GRACIAS! , en el INSERT yo me equivoqué el id es un auto_increment, es que ya hacía tiempo que no usaba esa tabla y no recordaba la estructura, este es el código que usé al final, ahora sólo falta probarlo con el código javascript para agregar más campos:

Código PHP:
<?php 
if (isset($_POST['enviar']))
{
    
$shortened "$sh";
    foreach(
$_POST['url'] as $value)
    {
    
$sql "insert into url_pack (url, shortened) values('$value','$shortened')";  
    
mysql_query($sql);   
    }   
}
else { 
?>
<br /><br />
<form name="furl" method="post" action="pack.php">
    <input type="text" name="url[]" value="" />
    <br />
    <input type="text" name="url[]" value="" />
    <br />
    <input type="submit" name="enviar" id="enviar" />
</form>
<?php ?>
  #6 (permalink)  
Antiguo 29/06/2012, 11:54
Avatar de itemc2  
Fecha de Ingreso: marzo-2010
Ubicación: México
Mensajes: 8
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Arrays y tablas MySQL

Otra cosa!, he notado que al dejar campos vacios los inserta en la tabla de todos modos (claro), como haré para que ignore los que son nulos o vacios y no los inserte :)
  #7 (permalink)  
Antiguo 29/06/2012, 12:39
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: Arrays y tablas MySQL

prueba agregando esa condicional que expuse en el codigo

Código PHP:
Ver original
  1. <?php  
  2. if (isset($_POST['enviar']))
  3. {
  4.     $shortened = "$sh";
  5.     foreach($_POST['url'] as $value)
  6.     {
  7.     if (!empty($value))
  8.     {
  9.     $sql = "insert into url_pack (url, shortened) values('$value','$shortened')";  
  10.     mysql_query($sql);    
  11.     }
  12.     }    
  13. }
  14. else { ?>
  15. <br /><br />
  16. <form name="furl" method="post" action="pack.php">
  17.     <input type="text" name="url[]" value="" />
  18.     <br />
  19.     <input type="text" name="url[]" value="" />
  20.     <br />
  21.     <input type="submit" name="enviar" id="enviar" />
  22. </form>
  23. <?php } ?>

Etiquetas: arrays, input, insert, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:49.