Foros del Web » Programando para Internet » PHP »

checkbox y mysql

Estas en el tema de checkbox y mysql en el foro de PHP en Foros del Web. Buenas, soy nuevo por aqui y desearia enviar un saludo de bienvenida. Ahora al grano: He creado un php en el que traigo de una ...
  #1 (permalink)  
Antiguo 27/12/2011, 12:51
 
Fecha de Ingreso: diciembre-2011
Ubicación: Ourense España
Mensajes: 10
Antigüedad: 12 años, 10 meses
Puntos: 0
checkbox y mysql

Buenas, soy nuevo por aqui y desearia enviar un saludo de bienvenida.

Ahora al grano:
He creado un php en el que traigo de una base de datos los datos correspondientes para un chequeo.
Los traigo de una seleccion "ref_pcb" añado operario y idi y devuelve el resto de los campos
Al traerlos le asigno una casilla de checkbox de forma que se pueda marcar o no marcar.
El problema surge que cuando envio los datos de vuelta a mysql, si solo he marcado una o varias casillas, devuelve un valor "ok" para todas las casillas y en cambio si no marco ninguna entonces devuelve un valor " " para todas las casillas. Es decir no diferencia las marcadas de las no marcadas.
Muchas gracias anticipadas por vuestra ayuda

Este es el codigo


<form action="usargama.php" method="post" id=”formulario” name=”formulario”>

<table >
<tr>
<?php $operario = (isset($_POST['operario']))?$_POST['operario']:""; echo "Operario: <input type='text' value='$operario' name='operario' id='operario' />"; ?><BR>
</tr>
<td align="center" ><b><font color="black" >REFERENCIA: </font> </b> </td>
<tr>
<td align="center">

<select name="ref_pcb">
<?php

$link = mysql_connect("localhost","xxxx","xxxx");
mysql_select_db("fabricacion", $link);

$result = mysql_query("SELECT distinct(ucase(ref_pcb)) ref_pcb FROM gama_calidad", $link);

if ($row = mysql_fetch_array($result)){
do {
$valor=$row["ref_pcb"];
echo "<option value='$valor'> $valor </option>";
} while ($row = mysql_fetch_array($result));
}
?>

</select>
<tr>
<?php $idi = (isset($_POST['idi']))?$_POST['idi']:""; echo "Idi: <input type='text' value='$idi' name='idi' id='idi' />"; ?><BR>
</tr>
<tr>
<td align="center"> <input type="submit" value="Ejecutar" name="ejecutar" id="ejecutar" /> </td>
</tr>
<tr>
<td align="center"><br> </td>
</tr>

</table>


</td>

<?php
$ref_pcb = (isset($_POST['ref_pcb']))?$_POST['ref_pcb']:"";
$idi = (isset($_POST['idi']))?$_POST['idi']:"";
$host_db = "localhost"; // Aquí pones el servidor mysql
$usuario_db = "root"; // Aquí el nombre de usuario de la base de datos
$pass_db = ""; // La contraseña de la base de datos
$base_db = "fabricacion"; // El Nombre de la base de datos, que previamente habiamos definido
$coneccion = mysql_connect($host_db, $usuario_db, $pass_db);
mysql_select_db($base_db, $coneccion);
$select = "select * from gama_calidad where ref_pcb LIKE '$ref_pcb'";
$resultados = mysql_query($select, $coneccion);
$cantresult = mysql_num_rows($resultados);
$ok = $_POST['ok'];
$operario = $_POST['operario'];
$result = $_POST['result'];
//$sql = "INSERT INTO resultados (ref_pcb ref_elec descripcion ok idi operario) ";
//$sql .= "VALUES ( '".$ref_pcb."', '".$row[1]."', '".$row[2]."', '".$ok."', '".$idi."', '".$operario."')";




echo "<table border = '1'> \n";

echo "<tr> \n";

echo "<td><b>Referencia electrica </b></td> \n";

echo "<td><b>Descripcion </b></td> \n";

echo "<td><b>ok </b></td> \n";

echo "</tr> \n";

while ($row = mysql_fetch_row($resultados)){



echo "<tr> \n";

echo "<td>$row[1]</td> \n";

echo "<td>$row[2]</td> \n";

echo "<td><input name='ok[]' type='checkbox' value='ok' /></td> \n";
$ok='ok';
echo "</tr> \n";

if(isset($_POST['result']) && !empty($_POST['result']))
{
$sql = "INSERT INTO resultados (ref_pcb, ref_elec, descripcion, ok, idi, operario)";
$sql .= "VALUES ( '".$ref_pcb."','".$row[1]."', '".$row[2]."', '".$ok."', '".$idi."', '".$operario."')";
$result = mysql_query( $sql);

$my_error = mysql_error($link);

if(!empty($my_error)) {

} else {
echo "Los datos han sido introducidos satisfactoriamente";
}
} else {

}



}

echo "</table> \n";



?>
<?php ?>
<tr>
<td align="center"> <input type="submit" value="Grabar" name="result" id="result" /> </td>
</tr>
</form>
  #2 (permalink)  
Antiguo 27/12/2011, 14:09
Avatar de alguienmas  
Fecha de Ingreso: mayo-2009
Mensajes: 62
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: checkbox y mysql

tu problema es que no sabes que recibes en el POST, haz un print_r($_POST) para que te muestre el contenido de este.
Otro problema que tienes es q asignas a la variable $ok = $_POST['ok'] lo cual esta bien, pero lo que tienes en $ok es un array y lugo le asignas un texto $ok ='ok'

como consejo, te recomiendo que cuando hagas una tabla de checkbox le pongas un identificador para saber a que fila de la tabla corresponde.

espero que esto te sirva. Saludos
  #3 (permalink)  
Antiguo 28/12/2011, 02:44
 
Fecha de Ingreso: diciembre-2011
Ubicación: Ourense España
Mensajes: 10
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: checkbox y mysql

Gracias por tu pronta respuesta, alquienmas
el print me da esto

Array ( [operario] => [idi] => [ref_pcb] => UNI-C-10 [ok] => Array ( [0] => ok ) [result] => Grabar )

Pues ahí esta mi problema, no se como seguir.

Lo de $ok='ok' se me colo que fue haciendo pruebas.

Gracias de nuevo
  #4 (permalink)  
Antiguo 02/01/2012, 10:27
Avatar de alguienmas  
Fecha de Ingreso: mayo-2009
Mensajes: 62
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: checkbox y mysql

hola sorry pero no habia pasado por el foro. Bueno al grano.
Generalmente yo lo trabajo asi dado que $_POST['ok'] sera un array que contiene solo aquellos checkbox q fueron marcado, el problema en este caso es saber a que fila markaron ok, para esto puedes usar 2 caminos

1) el value del checkbox es igual a la fila en la que se encuentra

Código PHP:
$index 0;
while (
$row mysql_fetch_row($resultados)){
  echo 
"<tr> \n";
  echo 
"<td>$row[1]</td> \n";
  echo 
"<td>$row[2]</td> \n";
  echo 
"<td><input name='ok[]' type='checkbox' value='$index' /></td> \n";
  
$index++

2) el value del checkbox es igual a la primary key de la fila:

Código PHP:
while ($row mysql_fetch_row($resultados)){
  echo 
"<tr> \n";
  echo 
"<td>$row[1]</td> \n";
  echo 
"<td>$row[2]</td> \n";
  echo 
"<td><input name='ok[]' type='checkbox' value='".$row[1]."' /></td> \n";

  #5 (permalink)  
Antiguo 02/01/2012, 14:04
 
Fecha de Ingreso: diciembre-2011
Ubicación: Ourense España
Mensajes: 10
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: checkbox y mysql

Buenas y gracias por la respuesta
pero el problema sigue siendo el mismo. si marco una casilla a todas las demás le pone el mismo valor que la marcada. el "value"
  #6 (permalink)  
Antiguo 14/01/2012, 05:13
 
Fecha de Ingreso: diciembre-2011
Ubicación: Ourense España
Mensajes: 10
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: checkbox y mysql

Hola, sigo necesitando ayuda para este tema

Etiquetas: checkbox, formulario, mysql, sql, usuarios
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:19.