Foros del Web » Programando para Internet » PHP »

update segun checkbox

Estas en el tema de update segun checkbox en el foro de PHP en Foros del Web. Hola, Esta es mi duda despliego a partier de una consulta varios registros, cada uno con su correspondiente ckeckbox, ademas de datos de entradas (el ...
  #1 (permalink)  
Antiguo 18/03/2005, 11:38
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 20 años, 1 mes
Puntos: 0
Sonrisa update segun checkbox

Hola, Esta es mi duda
despliego a partier de una consulta varios registros, cada uno con su correspondiente ckeckbox, ademas de datos de entradas (el usuario va a gregar informacion a ese registro, entre varios).

pero mi problema esta en como referirme a ese text, donde el usuario ingresa la informacion requerida. esto al postear.

lei:http://www.forosdelweb.com/f18/faqs-php-530600-post518710/.
(Pregunta: Como gestionar acciones a los registros seleccionados con checbox (estilo web-mails tipo Hotmail)

que es parecido a la duda que tengo. sin embargo no se me ocurre como referirme al text en particular

Última edición por maurimono; 18/03/2005 a las 11:41
  #2 (permalink)  
Antiguo 18/03/2005, 11:58
 
Fecha de Ingreso: marzo-2005
Mensajes: 74
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola

No termino de entender tu pregunta pero haber si esto te sirve
Código PHP:
<form action="script.php" method="post">
<?
   $query 
mysql_query"SELECT id, texto, ..." );
   while ( 
$result mysql_fetch_array$query ) ) {
?>
  <input type="checbox" name="seleccion[<?=$result["id"]?>]" value="1">
<? ?>
<input type="submit" name="Submit" value="Enviar">
</form>
Este ejemplo genera un check para cada registro de tu consulta, ademas como nombre "name" se pone un array con indice, cuando se envie el formulario recibirás un array que solo incluirá los checks marcados y como indice el id (clave primaria) del nuestro registro, ahora solo queda recorrerlo y hacer lo que queramos.
Código PHP:
<?
foreach( $seleccion AS $k => $v ) {
// $k es el indice (la clave primaria)  y $v el contenido (en este ejemplo siempre será 1)
}
?>
Salu2
KAYETANO
  #3 (permalink)  
Antiguo 18/03/2005, 13:19
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 20 años, 1 mes
Puntos: 0
Mensaje

Gracias por responder!!, imagina que ademas de tener checkbox, en el while existen <td> con muestras de campos para esa coincidencia, ademas, ingreso de datos text, textarea, donde el usuario "añadira" informacion a este registro luego elige este registro, por medio del check, y submita. entonces en la otra pagina debera update solo ese registro. Algo asi:

<form action="script.php" method="post">
<?
$query = mysql_query( "SELECT id, texto, ..." );
while ( $result = mysql_fetch_array( $query ) ) {
?>
<input type="checbox" name="seleccion[<?=$result["id"]?>]" value="1">
<input type="text" name="hora">
<input type="textarea" name="comentario">
<input type="text" name="observacion">
<? } ?>
<input type="submit" name="Submit" value="Enviar">
</form>

obviamente imagina por lo menos unos "n" registros, cada uno con su correspondiente check, que lo diferenciara al submitar...
Atte
Maurimono
  #4 (permalink)  
Antiguo 18/03/2005, 13:31
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 21 años, 4 meses
Puntos: 21
De acuerdo checa esta pagina

http://www.rinconastur.net
__________________
gerardo
  #5 (permalink)  
Antiguo 18/03/2005, 14:27
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 20 años, 1 mes
Puntos: 0
sin respuesta????

Oye, pero en que parte de rincorastur sale algo relacionado con el tema?????


parece que la idea es identificar cada uno de los text, de entrada, ya que ademas no se recibe nada al oto lado al submitar.
Bueno a ver si alguien ha echo algo parecido y me pueda dar una manito.
Atte
Maurimono
  #6 (permalink)  
Antiguo 18/03/2005, 14:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Usando la misma técnica que describe la FAQ mencionada .. puedes generar N arrays más con tus resto de elementos del formulario .. Eso sí .. para leer luego ese array no usariamos un bucle foreach() que va bien para un simple array sino un for() donde usaremos el mismo indice para los N arrays que tengamos que recorrer simultaneamente:

Código PHP:
<input type="hidden" name="id_registro[]" value="<? echo $row['id_registro'?>">
<input type="text" name="nose[]">
<input type="text" name="otronose[]">
Y el script de proceso .. recibirá 3 arrays .. de nombre el que se indica ahí y sus valores asociados al mismo indice:
Código PHP:
for ($indice=0$indice<count($_POST['id_registro']); $indice++){
   echo 
$_POST['id_registro'][$indice]."<br>";
   echo 
$_POST['nose'][$indice]."<br>";
   echo 
$_POST['otronose'][$indice]."<br>";

   
// actualizas tu registro .. 
   
$sql="UPDATE FROM tabla SET nose='".$_POST['nose'][$indice]."' WHERE id_registro='".$_POST['id_registro']."'";
    
mysql_query($sql) or die (mysql_error());

Como tenemos 3 arrays con el mismo n° de elementos .. con sólo contar uno de ellos sabremos el total de registros para componer el bucle for() ...

Un saludo,

Última edición por Cluster; 18/03/2005 a las 14:53
  #7 (permalink)  
Antiguo 18/03/2005, 14:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
... osease que quieres actualizar solo los valores que tengan el checkbox seleccionado???... Tienes problema con recoger el valor del checkbox???... con un while, creo viene algo en las mismas FAQ y en el foro... pero bueno, suponiendo que ese no es el problema... lo siguiente seria una simple condicional....
Código PHP:
while(condicion) {
   if(
$seleccion['algo']==1) {
      
"Actializa";
   }

Algo asì.... espero haberte entendido y ayudado en tal caso. Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 18/03/2005, 15:16
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 20 años, 1 mes
Puntos: 0
andaba cerquita, solo estaba con un foreach... que no me funcionaba. Muy agradecido y satisfecho de la respuesta obtenida.
Gracias!!!
Maurimono
  #9 (permalink)  
Antiguo 21/03/2005, 09:20
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 20 años, 1 mes
Puntos: 0
faltan ajustes

Amigos vi que la mejor opcion es la echo por Cluster, implemente esta en mi script, sin embargo me pasa que hay dos valores que no entran en el for (idem script cluster) entonces para saber que pasa hice, a modo de bandera esto:

$hora2=implode(',',$_POST['hora_ini']);
$minuto2=implode(',',$_POST['minuto_ini']);
$lugar=implode(',',$_POST['seleccion']);

que me arroja esto:

en implode la hora :,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, , el minuto : ,,25,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, el lugar : 615565orden :615565
minuto :
Hora :
la fecha de emision es :

hay unas comas antes en hora (dos comas) idem en minuto, esto quiere decir que esta en la posicion 2 del arrego. no en 0 donde esta lugar.... me entienden???, a ver si alguien me da una manito
Chao.

Pd: Se me ocurrio ponerle el mismo name a las entradas en html y recorrer toooooooooodo el arreglo hasta que encuentre algo !="", pero es una lata!, quiza aya una solucion mas optima cierto??

Última edición por maurimono; 21/03/2005 a las 09:41
  #10 (permalink)  
Antiguo 21/03/2005, 09:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Por mi parte no ví bien el ejemplo .. .

Sería mejor que uses:

Código PHP:
echo "<pre>";
print_r($_POST['una_de_tus_arrays']);
echo 
"</pre>"
así veras mejor que estructura toma tu array según los valores que introduzcas.

Un saludo,
  #11 (permalink)  
Antiguo 21/03/2005, 11:00
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 20 años, 1 mes
Puntos: 0
Amigos. Tengfo casi solucionado este problema, pero necesito una funcion o un script que me permita eliminar espacios en blanco de un arreglo.
algo asi como:
array_filter(arreglo, funcion);
Atte
maurimon o
  #12 (permalink)  
Antiguo 21/03/2005, 11:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Justamente .. usando array_filter() que te permite aplicar una función a cada elemento del array que vas aplicar el filtro .. tu función podría ser tipo

Código PHP:
function quita_espacios($valor){
   return 
trim($valor);
}

array_filter($arreglo"quita_espacios"); 
Un saludo,

PD: trim() quita espacios al principio y al final .. si quieres eliminar todo espacio usa str_replace() ...

Última edición por Cluster; 21/03/2005 a las 11:57
  #13 (permalink)  
Antiguo 21/03/2005, 14:01
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 20 años, 1 mes
Puntos: 0
Por Fin!!

Costo pero salio!


function quita_espacios($valor){
return trim($valor);
}

$numero= (array_filter($_POST['seleccion'], "quita_espacios"));

$i = 0;

//con esto le puedo asignar a cada elemento del arreglo una v ariable...
foreach($numero as $v) {
print "\$numero[$i] => $v.\n";
$i++;
}


La idea es a partir de un gran listado de valores con entradas, se puede recibir solo lo necesario, por post.
Gracias, mil gracias a los que me ayudfaron.
Atte
Maurimono
  #14 (permalink)  
Antiguo 22/03/2005, 07:50
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 20 años, 1 mes
Puntos: 0
Chuuuuuuuuta!!!!

Todo bien logre eliminar los vacios, pasandolos a otrro arreglo, esta perfecto, lo unico que no me funciona, es un select que tengo en el formulario, este me arroja todo su contenido.

<td width=60 bgcolor="#eeeeee">
<select name="seleccion[]">
<?php
$result=mysql_query("select * from accion",$link);
while($wow = mysql_fetch_array($result))
{
$punta=$wow["action"];?>
<option><?php print("$puta") ?></option>
<?
} mysql_free_result($result); ?>
</select>
</td>

supuestamente deberia asignarle un arreglo al name, pero no funciona, alguien tiene alghuna idea de como solucionarlo, tal vez con la id de cada <option>???
Atte
Mauricio (maurimono)
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:58.