Foros del Web » Programando para Internet » PHP »

Mostrar y actualizar registros

Estas en el tema de Mostrar y actualizar registros en el foro de PHP en Foros del Web. Hola. Necesito mostrar los registros de mi tabla y eventualmente actualizarlos pero tengo un campo enum que quiero mostrar con un checkbox y no hay ...
  #1 (permalink)  
Antiguo 18/10/2005, 21:15
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 6 meses
Puntos: 1
Mostrar y actualizar registros

Hola.
Necesito mostrar los registros de mi tabla y eventualmente actualizarlos pero tengo un campo enum que quiero mostrar con un checkbox y no hay manera.
Tengo esto:
Código PHP:
<?

$sqlalt
=("SELECT Country AS COUNTRY, group1 AS G1, group2 AS G2 FROM groups ");
$resultalt mysql_query($sqlalt$con) or die("Error al leer base de datos: ".mysql_error);
if (
$rowmysql_fetch_array($resultalt))
{

   echo 
"<TABLE BORDER='1'>";
   echo 
"<TR><TD align='center'><strong><font color=white><small>Country</small></small></TD><TD  align='center'><small><strong><font color=white>G1</small></small></TD><TD align='center'><small><font color=white><strong>G2</small></small></TD></TR>";
   DO
   {
     echo 
"<TR><TD align='left'><small>".$row["COUNTRY"]."</small></small></TD><TD align='center'><small><form action='up_countries_groups.php' method='post'> <input type='text' size='1' name='group1' value=".$row['G1']."></small></small></TD><TD align='center'><small><form action='up_countries_groups.php' method='post'> <input type='text' size='1' name='group' value=".$row['G2']." </small></small></TD></TR></FORM>";
   }
   WHILE (
$row=mysql_fetch_array($resultalt));
   
   echo 
"\t</tr>\n";
   echo 
"</TABLE>";

}
?>
Los campos G1 son 'enum', tienen valor o ó 1, quiero poder ver el estado actual y en algunos casos modificarlos.
Con checkbox no puedo. He tratado de seguir unos ejemplos que Cluster posteó pero nada, o me quedan todos desmarcados o todos chequeados
Alquien podría ayudarme por favor.
Muchas gracias :)
  #2 (permalink)  
Antiguo 18/10/2005, 21:31
 
Fecha de Ingreso: julio-2005
Ubicación: Guatemala
Mensajes: 165
Antigüedad: 18 años, 8 meses
Puntos: 0
Intentar

Bueno, espero poder haber captado la idea, puedes hacer esto:

Código PHP:
$sqlalt=("SELECT Country AS COUNTRY, group1 AS G1, group2 AS G2 FROM groups ");
$resultalt mysql_query($sqlalt$con) or die("Error al leer base de datos: ".mysql_error);
//COLOCA AQUI LO DE LA TABLA Y EL INICIO DEL FORMULAIO
if ($rowmysql_fetch_array($resultalt))

      
//AQUI VIENE EL TRUCO
     //SI EL CAMPO G2 ES 1, HAREMOS QUE AL FINAL AGREGUE EL VALOR CHECKED
     
if ($row['G2']==1) {$sel="checked";} else {$sel="";}
     echo 
"<input type='checkbox' name='nombre_de_input' value='1' {$sel}";
     
//ENTONCES SI EL CAMPO G2 ESTA EN VALOR 1, SE AGREGA CHECKED AL FINAL DEL INPUT
     //LO CUAL OBLIGARA AL CHECKBOX A APARECER MARCADO
     //EN CASO CONTRARIO APARECERA DESMARCADO
}
//FINALIZAS EL FORMULARIO Y LA TABLA 
Espero haberte ayudado, aunque como te podrás dar cuenta algunas cosas las tendrás que hacer.

No olvides que por cada check necesitaras hacer un segmento como este:

Código PHP:
if ($row['nombre_campo']==1) {$sel="checked";} else {$sel="";}
echo 
"<input type='checkbox' name='nombre_de_input' value='1' {$sel}"
Un saludo.

Última edición por bilkarm3; 18/10/2005 a las 21:37
  #3 (permalink)  
Antiguo 18/10/2005, 22:35
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 6 meses
Puntos: 1
!

Espectacular BILKARM3 !!!

Mee has captado perfecto.
Cariños y te agradezco mucho mucho
  #4 (permalink)  
Antiguo 19/10/2005, 11:51
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 6 meses
Puntos: 1
Ay me volví a perder :(

Ahora trato de modificar y actualizar los datos en mi tabla.
El groups.php quedó así:
Código PHP:
<? 

$sqlalt
=("SELECT Country AS COUNTRY, group1 AS G1, group2 AS G2  FROM groups "); 
$resultalt mysql_query($sqlalt$con) or die("Error al leer base de datos: ".mysql_error); 
if (
$rowmysql_fetch_array($resultalt)) 


   echo 
"<TABLE BORDER='1'>"
   echo 
"<TR><TD align='center'><strong><font color=navy><small>Country</small></small></TD><TD  align='center'><small><strong><font color=navy>G1</small></small></TD><TD align='center'><small><font color=navy><strong>G2</small></small></TD></TR>"
   DO 
   { 
if (
$row['G1']==1) {$sel1="checked";} else {$sel1="";}
    if (
$row['G2']==1) {$sel2="checked";} else {$sel2="";}

     echo 
"<TR><TD align='left'><small>".$row["COUNTRY"]."</small></small></TD><TD align='center'><small><form action='update.php' method='post'> <input type='hidden' name='country' value=".$row['COUNTRY']."> <input type='checkbox' name='group1' value='1' {$sel1}></small></small></TD><TD align='center'><small> <input type='checkbox' name='group2' value='1' {$sel2} > </small></small></TD></TR></FORM>"
   } 
   WHILE (
$row=mysql_fetch_array($resultalt)); 
   echo 
"<table><tr><td align='center'> <input type='submit' class='button' name='up_countries' value='Submit'></FORM></td></tr></table>";
   echo 
"\t</tr>\n"
   echo 
"</TABLE>"


?>
Entonces intento procesar la actualización en update.php pero no sé como recorrer esos registros:
Código PHP:
$group1=$_POST['group1'];
$group2=$_POST['group2'];
$group3=$_POST['group3'];
$country=$_POST['country']; 
Por favor socorro otra vez. Muchísimas gracias
  #5 (permalink)  
Antiguo 19/10/2005, 12:44
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 6 meses
Puntos: 1
Lo tengo, lo tengo !!!
... en parte

Sería así:
Código PHP:
foreach ($_POST['group1'] AS $G1) {
   
$lista=implode(',',$_POST['group1']);

---Sigo editando (por si a alguien le sirve y para que me ayuden con lo que no puedo por favor):
Luego de mucho luchar me di cuenta de lo obvio :):
Código PHP:
$lista1=implode(',',$_POST['group1']);
$lista_1=explode(","$lista1);
$numero_elementos count($lista_1);
for (
$indice=0$indice$numero_elementos; ++$indice) {
  
$group_new1=$lista_1[$indice];

Entonces para actualizar:
Código PHP:
$sql="UPDATE groups SET group1='$group_new1', group2='$group_new2' WHERE country='$country' ";
mysql_query($sql,$con) or die ("Invalid query");
if (
mysql_query($sql,$con)) {
echo(
"<P>Record successfully updated!</P>");
}
else
{
echo 
"<P>Error updating record: " mysql_error() . "</P>";
}
?> 
Pero esta query no vale porque ese $country es el último que me llega. Como hago para asociar el campo a un 'contador'... fua que me cuesta esto.
Muchas gracias :)

Última edición por Suyta; 19/10/2005 a las 17:30
  #6 (permalink)  
Antiguo 25/10/2005, 14:42
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Hola Suyta.
Las variables que vienen de checkbox sólo existen si la casilla está activada.
Si no se ha marcado, por ejemplo, el checkbox "group1", la variable $_POST['group1'] ni siquiera existirá. Eso es lo que tienes que tener en cuenta para evaluar.

Entonces bastará con que hagas esto:
Código PHP:
if(isset($_POST['group1'])){
    
// Si está definida $_POST['group1']
    
$group_new1 1// La casilla estaba marcada
}else{
    
// Si no
    
$group_new1 0// La casilla no estaba marcada

Lo mismo para $_POST['group2'].

También puedes utilizar la forma simplificada del if... else (operador ternario)
Código PHP:
$group_new1 = isset($_POST['group1'])?1:0;
$group_new2 = isset($_POST['group2'])?1:0
Saludos
  #7 (permalink)  
Antiguo 25/10/2005, 21:17
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 6 meses
Puntos: 1
Muchísimas gracias Maestro JPinedo !

Voy entendiendo.
Con los radio button es igual ?
  #8 (permalink)  
Antiguo 26/10/2005, 00:38
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Hola...
Con los radio button pasa algo similar. Todos tienen el mismo name, digamos "rad" pero cada uno tiene un value diferente.

Si no se marcara ninguna opción, la variable $_POST['rad'] no existirá.
Si se marca alguna, $_POST['rad'] tomará el valor del atributo value del que se eligió.

Saludos
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 08:35.