Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] modificar datos desde checkbox

Estas en el tema de modificar datos desde checkbox en el foro de PHP en Foros del Web. hola a todos tengo una duda. tengo un formulario en donce una pelicula puede tener verios generos. el nombre de la pelicula se la recupera ...
  #1 (permalink)  
Antiguo 24/06/2013, 19:59
Avatar de leo_garay91  
Fecha de Ingreso: mayo-2012
Ubicación: argentina
Mensajes: 51
Antigüedad: 11 años, 11 meses
Puntos: 0
modificar datos desde checkbox

hola a todos tengo una duda. tengo un formulario en donce una pelicula puede tener verios generos. el nombre de la pelicula se la recupera de la bd, y la muestra mediante una lista, y a los generos tambien de los trae de la bd pero se los muestra mediante checkbox,

a estos datos se los almacena en una tabla:

pelicuula-genero(id, id_pelicula,id_genero)

lo que yo quiero saber es como puedo traer estos datos para modificarlos, lo q no puedo traer son los generos, para que los checkbox aparescan tildados.

desde ya gracias
  #2 (permalink)  
Antiguo 24/06/2013, 20:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: modificar datos desde checkbox

Para que un checkbox se marque debes agregar el atributo checked.

Ahora, para que así suceda debes iterar la lista general de tus categorías, y comparar las que tienes ya guardadas contra la lista general.

Lo demás debe ser obvio, si la categoría a imprimir ya existe en la relación entonces agregas dicho atributo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 02/07/2013, 22:25
Avatar de leo_garay91  
Fecha de Ingreso: mayo-2012
Ubicación: argentina
Mensajes: 51
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: modificar datos desde checkbox

hola gracias por responder.... deje el proyecto por unos dias, retomo el tema de nuevo...para que no se me haga un lio.. muestro lo q ue estoy haciendo...
tengo 3 tablas
articulo(id_articulo,nombre) -> se cargan una serie de articulo
cargo(id_cargo,nombre) -> se cargan una serie de cargo
cargoXarticulo (id, id_articulo,id_cargo) -> con una relacion de n:m un articulo puede tener varios cargo.

la carga de estos datos se hacen de la siguiente manera.

Código HTML:
<td><select id="lista"  name="articulo">
				<option value="" selected="" > Seleccione un Articulos:</option>
				<?php 
				while($row= mysql_fetch_array($sql,MYSQL_ASSOC)) 
				{	 
					echo '<option value="'.$row['id_articulo'].'">'.$row['numero_art'].' - '.
$row['nombre_art'].'</option>';
					}
				?>
				</select>
		</td>
	</tr>
	<tr>
		<td align="right">cargo: *</td>
		<td><?php 
			while($row2= mysql_fetch_array($sql2,MYSQL_ASSOC)) 
				{
					echo '<input id="check" type="checkbox" name="cargo[]" value='.$row2['id_cargo'].'>'.$row2['id_cargo].'-'.
$row2['nombre_cargo'];
					}

				?>
		</td> 
hasta aca todo bien, pero ahora quiero editar, intentando entender lo que me quiso decir pateketrueke, hice 2 array uno con todos los datos que tenia la tabla cargos y otro con id_cargo que tiene cargosXarticulos y compararlos. pero cuando ejecuto este codigo me trae duplicados los checkbox, como muestra la imagen al final.

Código PHP:
<?php
$id 
=$_GET['id']; //------------ARTICULO QUE SE QUIERE MODIFICAR

$sql1=mysql_query("SELECT car.nombre_cargo, art.id_articulo, art.numero_art, art.nombre_art
            FROM cargosXarticulos carArt, cargos car, articulo art
            WHERE art.id_articulo = carArt.id_articulo
        
            AND `carArt.id` = $id"
,$con);
                    

$sql2=mysql_query("SELECT id_cargo,nombre_cargo  FROM cargos ORDER BY nombre_carogs DESC",$con);

$row1=mysql_fetch_array($sql1);
?>

//----------SE CARGA EL NUMERO DE ARTICULO QUE SE QUIERE MODIFICAR
<td align="right"><label>Numero Articulo:*</label></td>
        
        <td><select readonly="readonly" id="lista"  name="articulo">
                <option selected="<?php echo $row1['id_articulo'];?>" value="<?php echo $row1['id_articulo'];?> " >
<?php echo $row1['numero_art'].' - '.$row1['nombre_art'];?> </option>
                
                </select>
        </td>
    </tr>
    <tr>
        <td align="right">Cargos: *</td> 
        <td>
        
            <?php 
//----------- SE CARGAN LOS CHECKBOX
    
            
while($row2mysql_fetch_array($sql2,MYSQL_ASSOC)) 
                {
                    
$sql_cargo=    mysql_query("SELECT ca.id_cargo, c.id_cargo, c.nombre_cargo, a.id_articulo
FROM cargoXarticulos ca, cargos c, articulos a
WHERE ca.id_cargo = c.id_cargo && ca.id_articulo = a.id_articulo && a.id_articulo ='"
.$row1['id_articulo']."'",$con);
                        

while(
$row_cargo=mysql_fetch_array($sql_cargo,MYSQL_ASSOC)){

    if(
$row2['id_revista']==$row_cargo['id_cargo'])         
        {                    
        echo 
'<input id="check" type="checkbox" name="cargo[]" checked value='.$row_cargo['id_cargo'].'>'.$row_cargo['id_cargo'].'-'.
$row_rev['nombre_cargo'];
                                                
                            }                            
                            else
                            { 
                            echo 
'<input id="check" type="checkbox" name="cargo[]"  value='.$row2['id_cargo'].'>'.$row2['id_cargo'].'-'.$row2['nombre_cargo'];                
                                                                
                                }                
                    }
                }
                
?>
        </td>
  #4 (permalink)  
Antiguo 03/07/2013, 01:42
Avatar de leo_garay91  
Fecha de Ingreso: mayo-2012
Ubicación: argentina
Mensajes: 51
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: modificar datos desde checkbox

encontre una forma... de hacer lo que necesitaba.. pero en media rebuscada y tengo que realizar 2 veces la misma consulta....
repido la consulta por que si uso la misma consulta me trae el articulo pero solo me trae un solo registro del checkbox
alguien me ayuda a optimizar este codigo?

Código PHP:
<?php
include ("../conection.php");
$id=$_GET['num_art'];  //--------------TRAE EL NUMERO DE ARTICULO

// consulta para seleccionar y mostrar el articulo en el select
$sql1=mysql_query("SELECT ca.id_cargo,ca.nombre_cargo, art.numero_art,art.id_articulo,art.nombre_art 
FROM cargoXarticulo carArt, cargos ca, articulo art
WHERE
carArt.id_cargo = ca.id_cargo
AND carArt.id_articulo = art.id_articulo
AND carArt.id_articulo = (SELECT id_articulo FROM  articulo WHERE numero_art = '$id')
ORDER BY id_cargo DESC"
,$con);

//consulta para los checkbox
$sql2=mysql_query("SELECT rev.id_ cargo,rev.nombre_ cargo,art.numero_art,art.id_articulo,art.nombre_art 
FROM  cargoZarticulo carArt,  cargo ca,  articulo art
WHERE
carArt.id_ cargo = rev.id_ cargo
AND carArt.id_articulo = art.id_articulo
AND carArt.id_articulo = (SELECT id_articulo FROM  articulo WHERE numero_art = '$id')
ORDER BY id_ cargo DESC"
,$con);
                    
//consulta para traer los checkbox que no fueron seleccionados usa el LEFT JOIN
$sql_Nocargos=mysql_query("SELECT ca.id_ cargo,ca.nombre_ cargo
FROM  cargo ca
LEFT JOIN   articulos carArt  ON carArt.id_ cargo = ca.id_cargo
AND carArt.id_articulo = (SELECT id_articulo FROM  articulo WHERE numero_art = '$id')
WHERE carArt.id_cargo is NULL"
,$con);

$row1=mysql_fetch_array($sql1);

?>
<td> <!-- muestro  el articulo que se quiere editar-->
  <select readonly="readonly" id="lista"  name="articulo">
     <option selected="<?php echo $row1['id_articulo'];?>" value="<?php echo $row1['id_articulo'];?> " >
<?php echo $row1['numero_art'].' - '.$row1['nombre_art'];?> </option>
   </select>
</td>
<td align="right">cargos *</td> 
<td><?php 
        
//----------- SE CARGAN LOS CHECKBOX que fueron seleccionados


while($row2mysql_fetch_array($sql2,MYSQL_ASSOC)) 
{
                
    echo 
'<input id="check" type="checkbox" name="cargo[]" checked value='.$row2['id_cargo'].'>'.$row2['id_cargo'].'-'.$row2['nombre_cargo'];
}
//consulta para traer los checkbox que no fueron seleccionados 
        
while($row_nocargomysql_fetch_array($sql_Nocargos,MYSQL_ASSOC)) 
{
                
    echo 
'-<input id="check" type="checkbox" name="cargo[]" checked value='.
$row_nocargo['id_cargo'].'>'.$row_nocargo['id_cargo'].'-'.$row_nocargo['nombre_cargo'];
}
?>
  #5 (permalink)  
Antiguo 04/07/2013, 15:00
Avatar de leo_garay91  
Fecha de Ingreso: mayo-2012
Ubicación: argentina
Mensajes: 51
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: modificar datos desde checkbox

bueno, con la ayuda de un amigo he logrado descubrir el problema... lo q pasaba era que el primer indice del array de row1 se utilizaba en el SELECT y cuando iba al while el indice ya estaba en la posicion 2...
luego para reducir codigo creamos un array de array y de ahi se puede trabajar mejor...
nose si me explico bien.. pego el codigo por si alguien necesita algo similar..


Código PHP:
<?php
include ("../conection.php");
$id=$_GET['num_art'];  //--------------TRAE EL NUMERO DE ARTICULO

// consulta para seleccionar y mostrar el articulo en el select
$sql1=mysql_query("SELECT ca.id_cargo,ca.nombre_cargo, art.numero_art,art.id_articulo,art.nombre_art 
FROM cargoXarticulo carArt, cargos ca, articulo art
WHERE
carArt.id_cargo = ca.id_cargo
AND carArt.id_articulo = art.id_articulo
AND carArt.id_articulo = (SELECT id_articulo FROM  articulo WHERE numero_art = '$id')
ORDER BY id_cargo DESC"
,$con);

                   
//consulta para traer los checkbox que no fueron seleccionados usa el LEFT JOIN
$sql_Nocargos=mysql_query("SELECT ca.id_ cargo,ca.nombre_ cargo
FROM  cargo ca
LEFT JOIN   articulos carArt  ON carArt.id_ cargo = ca.id_cargo
AND carArt.id_articulo = (SELECT id_articulo FROM  articulo WHERE numero_art = '$id')
WHERE carArt.id_cargo is NULL"
,$con); 

$resultado= array();
$row=array();
while(
$row=mysql_fetch_array($sql1)){
        
$resultado[]=$row;   //array de array
    
}
    
///print_r($resultado);
$row1=$resultado[0]; //muestra el primer elemento del array que es para mostrar el articulo que se quiere modificar

<td> <!-- muestro  el articulo que se quiere editar-->
  <
select readonly="readonly" id="lista"  name="articulo">
     <
option selected="<?php echo $row1['id_articulo'];?>" value="<?php echo $row1['id_articulo'];?> " >
<?
php echo $row1['numero_art'].' - '.$row1['nombre_art'];?> </option>
   </select>
</td>
<td align="right">cargos *</td> 
<td><?php 
        
//----------- SE CARGAN LOS CHECKBOX que fueron seleccionados


foreach ($resultado as $row2
            {
                
                
    echo 
'<input id="check" type="checkbox" name="cargo[]" checked value='.$row2['id_cargo'].'>'.$row2['id_cargo'].'-'.$row2['nombre_cargo'];
}
//consulta para traer los checkbox que no fueron seleccionados 
        
while($row_nocargomysql_fetch_array($sql_Nocargos,MYSQL_ASSOC)) 
{
                
    echo 
'-<input id="check" type="checkbox" name="cargo[]" checked value='.
$row_nocargo['id_cargo'].'>'.$row_nocargo['id_cargo'].'-'.
$row_nocargo['nombre_cargo'];
}
?>

Etiquetas: checkbox, formulario, modificar, tabla
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 20:27.