Comunidad de diseño web y desarrollo en internet online

enviar array[] a mysql

Citar            
MensajeEscrito el 06 Mar 2014 04:24 pm
Hola que tal, estoy haciendo unas pruebas de un formulario en el cual mediante jquery agregar´nuevos inputs type"text" name="nombre[]"

LA cosa esta en que no se bien como enviar el array, he leido que con serialize se puede hacer pero la verdad todos los ejemplos los dan con arrays ya creados en el mismo documento y no mediante el uso de array[].

Si tienen alguna ayuda o texto que me pueda ayudar a entender como hacerlo se los agradezco.

Pongo aca el codigo sin jquery solo a modo de practica para poder entender lo que hago. Por ahora solo envia un campo vacio a la base de datos diciendo "Array"
index.php

Código :

<html>
<body>

<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname[]"> <br>
Firstname 2: <input type="text" name="firstname[]">
<input type="submit">
</form>

</body>
</html>




insert.php

Código :

<?php
$con=mysqli_connect("localhost","inputmultiplicad","inputmultiplicado","inputmultiplicado");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
  
  
  

$sql="INSERT INTO input_field (firstname)
VALUES
('$_POST[firstname]')";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
echo "1 record added";

mysqli_close($con);
?>

Por unasemana

Claber

166 de clabLevel



 

Venezuela

chrome
Citar            
MensajeEscrito el 06 Mar 2014 05:20 pm
$_POST[firstname] es un ARRAY, osea tiene elementos del tipo
$_POST[firstname][0]
$_POST[firstname][1]
$_POST[firstname][n]

y a mysql en tu consulta lo que estas haciendo es darle un STRING pero en vez de Eso le estas dando un ARRAY,
ahora si lo quieres convertir a String un array de forma sencilla

Código PHP :

$sql="INSERT INTO input_field (firstname)
VALUES
('".implode(',',$_POST[firstname]."')";

lo que esta haciendo implode es Unir el Array en un string Colando por asi decir con un coma ,

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Mar 2014 05:44 pm
he probado lo que me escribes y ahora se queda en blanco y no envia nada a la tabla

Código :

<?php
$con=mysqli_connect("localhost","inputmultiplicad","inputmultiplicado","inputmultiplicado");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
  
  
  

$sql="INSERT INTO input_field (firstname)
VALUES
('".implode(',',$_POST[firstname]."')";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
echo "1 record added";

mysqli_close($con);
?>

Por unasemana

Claber

166 de clabLevel



 

Venezuela

chrome
Citar            
MensajeEscrito el 06 Mar 2014 07:33 pm
Imprime (haz un echo) la variable $sql. Lo más probable es que tenga un error de sintaxis SQL.

Lo que te ha puesto tuadmin es un ejemplo. Tu tienes que adaptarlo a tus necesidades particulares.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 06 Mar 2014 08:05 pm
si hay un error aca pero no lo encuentro

Código :

 
$sql="INSERT INTO input_field (firstname)
VALUES
('".implode(',',$_POST[firstname]."')";


en la linea de implode

Por unasemana

Claber

166 de clabLevel



 

Venezuela

chrome
Citar            
MensajeEscrito el 06 Mar 2014 11:42 pm
jeje perdona,cuandos e trabaja con ARRAYS hay que escapar lo que son VARIABLES de CONSTANTES

Código PHP :

$sql="INSERT INTO input_field (firstname)
VALUES
('".implode(',',$_POST['firstname']."')";

notas la diferencia :)

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 07 Mar 2014 01:39 am
gracias por tu ayuda, si noto la diferencia y esta tarde probé también eso y no me da resultado, se queda sin hacer nada, pero el editor me seniala que en esa linea hay un error : parse error: parse error on line 16

este es mi codigo insertar con tus lineas:

Código :

<?php
$con=mysqli_connect("localhost","inputmultiplicad","inputmultiplicado","inputmultiplicado");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
  
  

  
  

$sql="INSERT INTO input_field (firstname)
VALUES
('".implode(',',$_POST['firstname']."')";


if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
echo "1 record added";

mysqli_close($con);
?> 

Por unasemana

Claber

166 de clabLevel



 

Venezuela

chrome
Citar            
MensajeEscrito el 07 Mar 2014 04:41 pm
Vaya que la gente se ha vuelto muy floja ultimamente, con eso tengo mi trabajo asegurado por largo tiempo

Código PHP :

#con comillas dobles
$sql= "INSERT INTO input_field (firstname)
       VALUES
       ('".implode(',', $_POST['firstname'])."')";
       

$sql= 'INSERT INTO input_field (firstname)
       VALUES
       ("'.implode(',', $_POST['firstname']).'")';


Solo utiliza un IDE que le pondra colorcitos ;)

Ahora para enteder que hace.. tan simple como un:

Código PHP :

echo $sql;


Copia y pegala en tu editor SQL favorito y comprueba que funcione bien.

Saludos ;)

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 07 Mar 2014 06:06 pm
Gracias por tu respuesta ELPORFIRIO. Pase todo el día de ayer buscando entender el error y honestamente se me pasó y eso que probé quitar y poner algunas cosas.

Encontré otras maneras de hacerlo con serialize pero no me gusta mucho y me comentan que no es recomendable usar.

Estoy aprendiendo a trabajar con php, soy autodidacta pero siempre es bueno una guía como la que me has dado.

Ahora si funciona y lo almacena con comas.

El método explode me ayudaría a crear un input nuevo por cada valor agregado, para asi poder editarlo en caso que sea necesario?, agrego los firstname mediante jquery.
En este ejemplo que usé no.

Agradezco mucho tu ayuda.

gracias

saludos

Por unasemana

Claber

166 de clabLevel



 

Venezuela

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.