Foros del Web » Programando para Internet » PHP »

checkbox problem

Estas en el tema de checkbox problem en el foro de PHP en Foros del Web. Estoy haciendo una barra de busqueda y todo va bien hasta que me toca interactuar con los checkboxes. Las acciones que el usuario debe realizar ...
  #1 (permalink)  
Antiguo 26/05/2012, 23:06
 
Fecha de Ingreso: mayo-2012
Ubicación: En la Tierra
Mensajes: 41
Antigüedad: 12 años, 5 meses
Puntos: 3
checkbox problem

Estoy haciendo una barra de busqueda y todo va bien hasta que me toca interactuar con los checkboxes.
Las acciones que el usuario debe realizar son:
1. Entrar las palabras en el buscador. (listo)
[ Se Muestran los resultados y al lado de cada resultado un checkbox, solo uno. (creo que listo)]
2. Seleccionar la columna de interes seleccionando el checkbox.
3. click en el boton submit, ubicado en la parte superior de la pagina, para Enviar los resultados marcados con el checkbox (incluidos los campos completos de la(s) columnas seleccionadas) a otra pagina, llamemosle pag2.
[Se Muestran los resultados deseados en pag2.]
4. Pag2 contiene un formulario con el nombre y mail de quien esta enviando la info junto con los resultado marcados.
5. Enviar la información: nombre, mail y resultados marcados al correo del dueño de la pagina.

Esto es lo que tengo:
Código HTML:
<html>
    <head>
      </head>
    <body>
        <form method="post" action="checkboxes.php">
            <input type=submit value="submit" ></input>
        </form></br>
        
        
          
<?php // query.php
require_once 'midb.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());
mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());
$query = "SELECT * FROM riskyjobs";
$result = mysql_query($query);
if (!$result) die ("Database access failed: " . mysql_error());
$rows = mysql_num_rows($result);
for ($j = 0 ; $j < $rows ; ++$j)
{
echo 'titulo: ' .     mysql_result($result,$j,'titulo') .   '<br />';
echo 'descripcion: ' . mysql_result($result,$j,'descripcion') . '<br />';
echo 'ciudad: ' . mysql_result($result,$j,'ciudad') . '<br />';
echo 'estado: ' . mysql_result($result,$j,'estado') . '<br />';
echo 'codigol: ' . mysql_result($result,$j,'codigol') . '<br />';
echo 'company: ' . mysql_result($result,$j,'company') . '<br />';
echo 'fecha: ' . mysql_result($result,$j,'fecha') . '<br />';
echo 'link: ' . '<input name="checky[]" type="checkbox" id="activar2" />' . '<br /><br />';
}
?>
        </body>
</html>
    
y esto...

Código HTML:
<html>
    <head></head>
    <body> 
        <div>Hola Mundo</div>
<?php

    foreach ($_REQUEST["checky"] as $checky2 => $value) {
        echo "value";
}

?>
        </body>
</html> 
Mi problema es el punto 2. ¿Como agarro el checkbox junto con toda la fila y la llevo a pag.2? Lo he intentado pero me muestra errores:

Notice: Undefined index: checky in C:\xampp\htdocs\checkboxes.php on line 7

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\checkboxes.php on line 7

¿podría alguien orientarme?

Por su atencion, grax.
  #2 (permalink)  
Antiguo 27/05/2012, 00:32
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: checkbox problem

o.O amigo, antes de seguir te sugiero que primero leas un buen manual/tutorial de HTML, tu problema es muy basico y nada que ver con PHP...

Cita:
...Notice: Undefined index: checky in C:\xampp\htdocs\checkboxes.php on line 7...
Eso es porque no encierras dentro de los tag form los checkbox, por lo tanto no se envian a la página checkboxes.php...

Cita:
...Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\checkboxes.php on line 7...
El error es derivado del anterior, como no existe el index "checky" no puede realizar el loop...

Ahora, otra cosa, por seguridad no se debe usar $_REQUEST, ya que se presta a que manipulen el archivo que intenta procesar el formulario, si vas a usar el metodo post en el formulario recoge los valores mediante $_POST, si es get con $_GET, ya que si indicas en el formulario el metodo post bien podrías mandar manualmente los valores via GET y el archivo los procesará igual...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 27/05/2012, 10:27
 
Fecha de Ingreso: mayo-2012
Ubicación: En la Tierra
Mensajes: 41
Antigüedad: 12 años, 5 meses
Puntos: 3
Respuesta: checkbox problem

Gracias por contestarme.

Quieres decir corregirlo de la siguiente manera?:

Detalle de codigo:
Código HTML:
echo 'link: ' . '<form method="post" action="checkboxes.php"><input name="checky[]" type="checkbox" id="activar2"/><input type=submit value="submit" ></input></form>' . '<br /><br />';
De esta manera mi problema queda solucionado, sin embargo tendría un input type submit en cada fila, y lo que necesito es un solo input type submit que tome los valores de los checkboxes seleccionados y los lleve a, llamemosle pag2.

Gracias por el dato de $_REQUEST.
  #4 (permalink)  
Antiguo 27/05/2012, 10:34
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: checkbox problem

o.O no se te ocurrio meter todo el código del for dentro de un tag form...

Código PHP:
Ver original
  1. echo '<form method="post" action="checkboxes.php">';
  2. for($j=0; $j<$rows; $j++) {
  3.      //demás código...
  4. }
  5. echo '<input type=submit value="submit" /></form>';
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 27/05/2012, 13:48
 
Fecha de Ingreso: mayo-2012
Ubicación: En la Tierra
Mensajes: 41
Antigüedad: 12 años, 5 meses
Puntos: 3
Respuesta: checkbox problem

Si.

Detalle de codigo:
Código HTML:
for ($j = 0 ; $j < $rows ; ++$j)
{
echo 'titulo:' . ' <form method="post" action="checkboxes.php"> ' . mysql_result($result,$j,'titulo')  .  '<br />';
echo 'descripcion: ' . mysql_result($result,$j,'descripcion') . '<br />';
echo 'ciudad: ' . mysql_result($result,$j,'ciudad') . '<br />';
echo 'estado: ' . mysql_result($result,$j,'estado') . '<br />';
echo 'codigol: ' . mysql_result($result,$j,'codigol') . '<br />';
echo 'company: ' . mysql_result($result,$j,'company') . '<br />';
echo 'fecha: ' . mysql_result($result,$j,'fecha') . '<br />';
echo 'link: ' . '<input name="checky[]" type="checkbox" id="activar2"/><input type=submit value="submit" ></input></form>' . '<br /><br />';
}
Funciona.

Me muestra la palabra ON

Mi sigiente pregunta es
¿cómo agarro los valores (titulo, descripcion, ciudad, estado...) de la fila seleccionada?

Intento 1.
Introduje un input type hidden y asigne como value a mysqlresult.
Detalle de codigo:
Código HTML:
echo 'titulo:' . ' <form method="post" action="checkboxes.php"><input type=hidden name="order" id="order" value=" ' . mysql_result($result,$j,'titulo')  .  '"/><br />';
Me oculta el titulo en todas las filas.

Intento2.
Para el intento cambie contenido del atributo value por uno semejante a éste: value="<?php echo($_POST['field']) ?>"
Nada.

Alguna idea?

Salu2.
  #6 (permalink)  
Antiguo 27/05/2012, 15:34
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: checkbox problem

No se si de plano me ignoras o solo quieres hacerlo a tu manera, esta será la ultima vez que comente en este post, porque veo que no tiene caso perder el tiempo si no haces caso a lo que uno te dice...

tu código esta igual que en un principio, ESTA MAL, te dije que metieras el loop (for) DENTRO de los tag form, no al revés, usar mysql_result en este caso esta MAL, por eso es que existe mysql_fetch_array / assoc, en general, TIENES MUCHOS PROBLEMAS DE CONCEPTOS BASICOS tanto de PHP como de HTML, mejor lee un buen manual/tutorial antes de seguir, solo estas intentando adivinar como se hacen las cosas...

Por cierto, otra cosa, PARA QUE QUIERES UN CHECKBOX SI NI SI QUIERA LE ASIGNAS UN VALOR, JAMAS SERÁ ENVIADO POR EL NAVEGADOR ¬¬

un ultimo ejemplo...

Código PHP:
Ver original
  1. $query = "SELECT * FROM riskyjobs";
  2. $result = mysql_query($query) or die(mysql_error());
  3.  
  4. $form = '<form action="archivo.php" method="post">';
  5. while($row = mysql_fetch_assoc($result)) {
  6.      $form.='fecha: ' .$row['fecha']. '<br />';
  7.      $form.='<input type="checkbox" name="checky[]" />';
  8. }
  9. $form.='</form>';
  10.  
  11. echo $form;
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 27/05/2012, 18:56
 
Fecha de Ingreso: mayo-2012
Ubicación: En la Tierra
Mensajes: 41
Antigüedad: 12 años, 5 meses
Puntos: 3
Respuesta: checkbox problem

El proposito de mis preguntas no fue para que te molestes.
Realmente necesito solucionar este problema. Se de mis limitaciones en còdigo, soy principiante y tengo una tarea escolar que tengo que entregar la proxima semana, estoy dispuesta a dar una gratificacion para la soluciòn de este codigo por medio de deposito bancario.
Dime en cuanto me sale. Yo te envio la base de datos muestra y tu me envias la soluciòn al problema.
Te doy una parte al inicio y la otra al final.

No encuentro otra manera de solucionar a la brevedad posible este problema.

Gracias.
  #8 (permalink)  
Antiguo 27/05/2012, 19:53
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: checkbox problem

A ver, no, mi intención no es que me "gratifiques" (si me quieres dar karma no me quejo ajaja >.<) , mi "problema" es que ya te había dado soluciones pero parecia que pasabas de ellas, el hecho de ser principiante no es problema, todos lo fuimos alguna vez, y no, tampoco es que me moleste, solo que te repito, parecia que pasabas de las "recomendaciones" que te había hecho...

Respecto al código te dejo algo "funcional", no lo eh probado porque obviamente no tengo una tabla con la estructura que usas, pero "debería" funcionar, intenta leer el código y entenderlo, si no sabes que hace alguna función, visita el manual de PHP, eso te ahorrará muchos dolores de cabeza, y enserio, no quiero sonar pesado, pero te recomiendo 1000 veces que leas un manual/tutorial de HTML y de PHP, en serio, te ayudará muchisimo, respecto a los checkbox, DEBES OBLIGATORIAMENTE agregar un value, si no, el navegador no enviará los checkbox aun cuando esten marcados, por lo tanto no podrás recuperarlos en el otro archivo PHP...

Nota: en los checkbox eh agregado un value con el valor ID, el cual fue SUPOSICIÓN mia de que dicho campo exista, debes revisar que información quieres enviar en los checkbox, pero lo que si es que NO debes dejarlo VACIO...

Código PHP:
Ver original
  1. <html>
  2.     <head>
  3.       </head>
  4.     <body></br>
  5.        
  6.        
  7.          
  8. <?php // query.php
  9. require_once 'midb.php';
  10. $db_server = mysql_connect($db_hostname, $db_username, $db_password);
  11. if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());
  12. mysql_select_db($db_database)
  13. or die("Unable to select database: " . mysql_error());
  14. $query = "SELECT * FROM riskyjobs";
  15. $result = mysql_query($query) or die(mysql_error());
  16.  
  17. echo '<form method="post" action="checkboxes.php">';
  18. while($row = mysql_fetch_assoc($result)) {
  19.     echo 'titulo:' . $row['titulo'] .  '<br />';
  20.     echo 'descripcion: ' . $row['descripcion'] . '<br />';
  21.     echo 'ciudad: ' . $row['ciudad'] . '<br />';
  22.     echo 'estado: ' . $row['estado'] . '<br />';
  23.     echo 'codigol: ' . $row['codigol'] . '<br />';
  24.     echo 'company: ' . $row['company'] . '<br />';
  25.     echo 'fecha: ' . $row['fecha'] . '<br />';
  26.     echo 'link: ' . '<input name="checky[]" type="checkbox" id="activar2" value="'.$row['id'].'"/>' . '<br /><br />';
  27. }
  28. echo '<input type=submit value="submit" >';
  29. echo '</form>';
  30. ?>
  31.         </body>
  32. </html>

y para recoger los datos...
Código PHP:
Ver original
  1. <html>
  2.     <head></head>
  3.     <body>
  4.         <div>Hola Mundo</div>
  5. <?php
  6.  
  7.     foreach ($_POST["checky"] as $checky2 => $value) {
  8.         echo $value;
  9. }
  10.  
  11. ?>
  12.         </body>
  13. </html>
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 29/05/2012, 23:09
 
Fecha de Ingreso: mayo-2012
Ubicación: En la Tierra
Mensajes: 41
Antigüedad: 12 años, 5 meses
Puntos: 3
Respuesta: checkbox problem

Le agradezco la forma sencilla y clara en la que me ha descrito el funcionamiento del código ya que para mi corto conocimiento, sinceramente, no lo hubiera podido realizar, pero ya lo lleve a cabo, hice algunas pruebas y si funciona.
Y es justo lo que necesitaba para sacar adelante mi tarea escolar que aun todavía me queda mucho por hacer. Y valoro su apoyo y reconozco su amplia experiencia en estos temas.
Infinitas Gracias.
Sandy

Etiquetas: checkbox, formulario, html, mysql, problem, 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 01:06.