Foros del Web » Programando para Internet » PHP »

problema con checkbox y consulta a Base de datos

Estas en el tema de problema con checkbox y consulta a Base de datos en el foro de PHP en Foros del Web. Hola a todos. Estoy haciendo pruebas con la faq nº 93 de cluster, para pasar un array de codigos seleccionados con checkbox a una consulta ...
  #1 (permalink)  
Antiguo 20/12/2004, 14:23
Avatar de ibme74  
Fecha de Ingreso: marzo-2004
Mensajes: 81
Antigüedad: 20 años, 8 meses
Puntos: 0
problema con checkbox y consulta a Base de datos

Hola a todos.

Estoy haciendo pruebas con la faq nº 93 de cluster, para pasar un array de
codigos seleccionados con checkbox a una consulta SQL, pero me he encontrado con el siguiente problema:
me pasa el array de codigos correctamente, pero si el codigo empieza por
0 ó contiene una letra no lo tiene en cuenta en la consulta.

Este es el código:

<?
// Realizar la conexión a la BD .. Seleccionar la BD a usar.
$host = "xxxxx";
$user = "xxxx";
$password = "xxxxx";
$dbdat = "xxxxx";
$link = mysql_connect ($host,$user,$password);
$query = "SELECT * FROM referen ORDER BY codigo";
// Ejecutar la consulta para obtener los datos de la BD.
$result=mysql_db_query($dbdat,$query,$link);
// Se inicial el formulario
echo "<form action=\"procesar.php\" method=\"post\"> \n";

// Extraemos y componemos los checbox dinámicos de los datos de nuestra tabla de la BD.
while ($row = mysql_fetch_array($result)){
echo "<input type=\"checkbox\" name=\"seleccion[]\" value=\"".$row['codigo']."\">$row[codigo]-$row[nombre]<br/>";
}

// Cerramos el formulario y ponemos nuestro botón de Submit.
echo "<input type=\"submit\" name=\"Submit\" value=\"Enviar\">";
echo "</form>";
?>

y este el código de procesar.php

<?
// Generamos una lista de los ID's (campo value= ..) que tenemos en nuestro array.
if (is_array($_POST['seleccion'])){
$lista=implode(',',$_POST['seleccion']);
} else{
$lista=$_POST['seleccion'];
}

echo ".$lista.";
$host = "xxxxx";
$user = "xxxxxx";
$password = "xxxxxxxx";
$dbdat = "xxxxxxxxxxx";
$link = mysql_connect ($host,$user,$password);

$query = "SELECT * FROM referen WHERE codigo IN(".$lista.")";

$result=mysql_db_query($dbdat,$query,$link);

while ($row = mysql_fetch_array($result))
{

echo "<br/>.$row[nombre].<br/>";
}
mysql_close();
?>

¿por que sucede esto? ¿es problema del código php o de mysql?
  #2 (permalink)  
Antiguo 20/12/2004, 14:57
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 21 años, 3 meses
Puntos: 105
No sera tu Base de datos que tienes que configurarla el tipo de campo que utilizas?, y si le pones a autoincremet y como una clave primaria?.

Prueba con eso que te dije, a mi si me resulto.

Saludos
Gildus
__________________
.: Gildus :.
  #3 (permalink)  
Antiguo 21/12/2004, 05:15
Avatar de ibme74  
Fecha de Ingreso: marzo-2004
Mensajes: 81
Antigüedad: 20 años, 8 meses
Puntos: 0
Gracias Gildus, pero lo he solucionado usando foreach() en vez de implode().
<?
foreach ($_POST['seleccion'] as $id){
echo "$id";
$host = "";
$user = "";
$password = "";
$dbdat = "";
$link = mysql_connect ($host,$user,$password);

$query = "SELECT * FROM referen WHERE codigo='$id'";

$result=mysql_db_query($dbdat,$query,$link);

while ($row = mysql_fetch_array($result))
{

echo "<br/>.$row[codigo].---.$row[nombre].---.$row[abrevia].---$row[pvp].<br/>";
}
}
mysql_close();
?>

Supongo que es correcto.
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 14:08.