PHP - Array a bbdd

   
Vista:

Array a bbdd

Publicado por Madison (30 intervenciones) el 24/08/2011 12:38:08
Tengo este select dentro de un formulario junto a otros datos los envio a una bbdd.

<?
<form action="registro1.php" method="POST" name="registro" id="registro" >

<select name="sel_coches[]" id="sel_coches" style="width:210px" size="5" multiple="multiple">
<option value="1">Merecedes</option>
<option value="2">Peugeot</option>
<option value="3">Talbot</option>
<option value="4">Jaguar</option>
</select>
?>

Los envio asi

registro1.php

<?
$insertSQL = sprintf("INSERT INTO usuarios (email, contrasena,sel_coches ) VALUES (%s, %s, %s)",
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['contrasena'], "text"),
GetSQLValueString($_POST['sel_coches'], "text"));

mysql_select_db($database_conexion, $conexion);
$Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());

?>
El email y la contraseña me los envia bien pero no se como enviar el array. podeis ayudarme?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Array a bbdd

Publicado por xve (5513 intervenciones) el 24/08/2011 14:03:53
Hola Madison, creo que tienes que tratar la cadena antes de guardarla directamente en la base de datos... por ejemplo, cogiendo todos los valores seleccionados del formulario y guardarlos en la base de datos separados por comas por ejemplo.
Que yo sepa, no se puede guardar un array de php directamente en la base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Array a bbdd

Publicado por Madison (30 intervenciones) el 24/08/2011 14:37:19
Hola xve

Eso es lo que quiero pero no se como se hace.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Array a bbdd

Publicado por xve (5513 intervenciones) el 24/08/2011 17:09:59
te lo pongo de memoria, pero seria algo así:
1
2
3
4
5
6
7
8
9
10
11
$result="";
foreach($_POST['sel_coches'] as $valores)
{
    if($result)
        $result.="-";
    $result.=$valores;
}
$insertSQL = sprintf("INSERT INTO usuarios (email, contrasena,sel_coches ) VALUES (%s, %s, %s)",
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['contrasena'], "text"),
GetSQLValueString($valores, "text"));

Lo que hace, es que te guardaria los valores separados por un guion (-)

Comentanos si te sirvio, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Array a bbdd

Publicado por Madison (30 intervenciones) el 25/08/2011 01:49:50
Me aparece este mensaje

Warning: Invalid argument supplied for foreach() in /home/a7047070/public_html/formularios/registro1.php on line 54

y no me carga los datos del sel_coches
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Array a bbdd

Publicado por xve (5513 intervenciones) el 25/08/2011 09:56:49
Hola Madison, nos puedes mostrar el contenido de la variable $_POST['sel_coches']??
Antes del foreach pon:
1
print_r($_POST['sel_coches'])

Habir si no contiene un array...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Array a bbdd

Publicado por Madison (30 intervenciones) el 26/08/2011 01:53:09
Me devuelve esto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Array a bbdd

Publicado por Juan Manuel Castaneda (50 intervenciones) el 26/08/2011 01:54:53
Hola Madison.
implode(",",$_POST['sel_coches']->selected) para separar con comas el array de opciones seleccionadas;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Array a bbdd

Publicado por xve (5513 intervenciones) el 27/08/2011 09:30:03
Gracias Juan Manuel por este post, desconocía la instrucción implode.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Array a bbdd

Publicado por Madison (30 intervenciones) el 26/08/2011 23:12:08
No consigo nada ¿Alguien puede ponerme todo el codigo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Array a bbdd

Publicado por xve (5513 intervenciones) el 27/08/2011 09:31:28
Hola Madison, gracias al comentario de Juan Manuel, podría quedar así:
1
2
3
4
$insertSQL = sprintf("INSERT INTO usuarios (email, contrasena,sel_coches ) VALUES (%s, %s, %s)",
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['contrasena'], "text"),
GetSQLValueString(implode(",",$_POST['sel_coches']->selected), "text"));

Comentanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Array a bbdd

Publicado por Madison (30 intervenciones) el 27/08/2011 18:33:24
Me da este resultado


Warning: implode() [function.implode]: Invalid arguments passed in /home/a7047070/public_html/formularios/registro1.php on line 67
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Array a bbdd

Publicado por xve (5513 intervenciones) el 27/08/2011 21:34:35
Hola Madison, estamos partiendo de que el usuario ha seleccionado una o varias opciones del desplegable verdad? Si se pasa vacío, puede ser que de ese error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Array a bbdd

Publicado por madison (30 intervenciones) el 28/08/2011 13:37:31
No entiendo porque me da vacio, asi es como lo tengo asi

<script type="text/javascript">
function volcarSelects(emisor, receptor){

// Accedemos a los 2 selects
emisor = document.getElementById(emisor);
receptor = document.getElementById(receptor);

// Obtenemos algunos datos necesarios
posicion = receptor.options.length;
selecionado = emisor.selectedIndex;

if(selecionado != -1) {


volcado = emisor.options[selecionado];

// Volcamos la opcion al select receptor y lo eliminamos del emisor
receptor.options[posicion] = new Option(volcado.text, volcado.value);
emisor.options[selecionado] = null;
document.registro.sel_idiomas.value = volcado.value;

}

}
</script>
<?
<form action="registro1.php" method="POST" name="registro" id="registro" >

<select name="list_coches[]" id="list_coches" style="width:210px" size="5" multiple="multiple">
<option value="1">Merecedes</option>
<option value="2">Peugeot</option>
<option value="3">Talbot</option>
<option value="4">Jaguar</option>
</select>
<input type="button" value="&gt;&gt;" onclick="volcarSelects('list_idiomas', 'sel_idiomas');" /><br /> <input type="button" value="&lt;&lt;" onclick="volcarSelects('sel_idiomas', 'list_idiomas');" />
<select name="sel_coches[]" id="sel_coches" style="width:210px" size="5" multiple="multiple">
</select>
?>

Los envio asi

registro1.php

<?
$insertSQL = sprintf("INSERT INTO usuarios (email, contrasena,sel_coches ) VALUES (%s, %s, %s)",
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['contrasena'], "text"),
GetSQLValueString(implode(",",$_POST['sel_idiomas']->selected), "text"),

mysql_select_db($database_conexion, $conexion);
$Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());

?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Array a bbdd

Publicado por Madison (30 intervenciones) el 28/08/2011 17:47:46
hay una errata

No es GetSQLValueString(implode(",",$_POST['sel_IDIOMAS']->selected), "text"), sino GetSQLValueString(implode(",",$_POST['sel_coches']->selected), "text"),


Pero no es el motivo de que no funcione
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar