Foros del Web » Programando para Internet » PHP »

Problema con array dentro de otro array

Estas en el tema de Problema con array dentro de otro array en el foro de PHP en Foros del Web. Buenas tardes amigos, estoy con un problema que me esta costando encontrar la solucion, a ver si me echan un cable... En una tabla tengo ...
  #1 (permalink)  
Antiguo 16/10/2008, 15:04
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Problema con array dentro de otro array

Buenas tardes amigos, estoy con un problema que me esta costando encontrar la solucion, a ver si me echan un cable...

En una tabla tengo 3 campo correos_eletronicos (id,correo,publicidad)
En la tabla correos_eletronicos como veran tengo el campo publicidad que por defecto esta en 'S' (esto quiere decir que el correo que tenga la 'S' acepta la publicidad)

Entonces

Código PHP:
$SQL_X 'SELECT * FROM correos_eletronicos ORDER BY id';
$EJECT_SQL_X $bd->bbdd_query($SQL_X);

while (
$row $bd->bbdd_fetch($EJECT_SQL_X ))
{

    if (
$row['publicidad']=='S')
    {
          echo 
"<input type='checkbox' name='chk_publicidad[]' value='".$row['id']."' checked >";
               
     }
     else
     {
          echo 
"<input type='checkbox' name='chk_publicidad[]' value='".$row['id']."' >";

     }

y tengo un boton submit que me envia a la misma pagina pero con una accion diferente.

Hasta aca todo Correcto.

Lo que pretendo hacer es recibir todos los checkbox y evaluar los que estan marcados y los que No estan marcados, es decir, si han sido desmarcados por el usuario actualizar ese registro por su id.

Lo que hago es lo siguiente

Código PHP:
//Almaceno todos los registros de la tabla en un array 

$correos_marcadas_en_tabla = array();
$SQL "SELECT * FROM correos_eletronicos ";
$XXXXX $bd->bbdd_query($SQL);

while(
$row_correos_Tablas=$bd->bbdd_fetch($XXXXX))
{
       
$correos_marcadas_en_tabla[]=$row_correos_Tablas["id"];
 }

//Ahora evaluo los marcados y desmarcado.

 
foreach($_POST['chk_publicidad'] as $key => $value)
 {
                      
    if (
in_array($value,$correos_marcadas_en_tabla))
    {
             echo 
"Encontrado<br />";
     }
     else
    {
            echo 
"NO Encontrado<br />";
     }
                        
 } 
Ahora el problema es el siguiente:

si tengo 4 registros y por defecto los 4 estan marcados y yo desmarco el 2 y 4 me sale solo 2 que dicen ENCONTRADO pero no me sale los dos restantes(registros 1 y 3), lo que pasa que quiero que me salga el NO ENCONTRADO para actualizarlo.

Donde puede esta mi error ???

Espero que me puedan ayudar.

SAludos y gracias a todos.
  #2 (permalink)  
Antiguo 17/10/2008, 01:20
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: Problema con array dentro de otro array

Buenos dias.

Hay alguien que me pueda ayudar.

Gracias
  #3 (permalink)  
Antiguo 17/10/2008, 01:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con array dentro de otro array

los checkbox solo se envían si están marcados (checked)

osea, si no los marcas manualmente no se envían... ademas, para que necesitas saberlo si se van a quedar igual?

no mas, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 17/10/2008, 01:41
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Problema con array dentro de otro array

haber cuando creas un array de datos por ejemplo

name="id[]"
debe este tener un value que es el que viene de base de datos....

<input type="chekbox" name="id[]" value="<?php echo "$datos[id]";?>">
<input type="chekbox" name="id[]" value="<?php echo "$datos[id]";?>">
<input type="chekbox" name="id[]" value="<?php echo "$datos[id]";?>">
<input type="chekbox" name="id[]" value="<?php echo "$datos[id]";?>">

donde $datos id es el valor que viene de base de datos ok, entonces en este caso hay 4 chek con valores en sus id 5,6,7 y 8 y nombres 1 al 4
si marco el 1 y el 4 solamente debería enviar los valores 5 y 8

esos los recuperas con la funcion explode();
y puedes tratarlos con IN en las sentencias SQL espero se entienda...
si no le echamos otro cable



FE de Erratas la función es implode() :P te dejo un ejemplo

Código PHP:
$lista=implode(',',$_POST['id']); 
//por ejemplo eliminamos de una tabla solo los selecionados
mysql_query (" DELETE FROM TU_TABLA WHERE id IN(".$lista.")") or die ("Error ".mysql_error()); 
saludos
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #5 (permalink)  
Antiguo 17/10/2008, 02:14
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 19 años, 7 meses
Puntos: 1
Respuesta: Problema con array dentro de otro array

Cita:
Iniciado por pateketrueke Ver Mensaje
los checkbox solo se envían si están marcados (checked)

osea, si no los marcas manualmente no se envían... ademas, para que necesitas saberlo si se van a quedar igual?

no mas, suerte!
Hola amigo pateketrueke

Claro tienes toda la razon del mundo, pero alli esta el problema(si se puede llamar asi), pero realmente eso es lo que quiero saber, cual(es) check box han sido desmarcados por el usuario para actualizarlos y por ejemplos cambiar el registro de publicidad de "S" a "N", para que en un futuro solo enviar la publicidad a los clientes que la publicidad sea = a "S".

Espero haberme explicado mejor
  #6 (permalink)  
Antiguo 17/10/2008, 03:36
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Problema con array dentro de otro array

aps ya entender, pero esque tu solo te estas poniendo la traba :/ digo cuando ingresas un usuario creo pones un campo con la letra S que es con publi o sea SI....

entonces lo que quieres hacer es : traes todos los clientes pero estas marcando todos los checkbox y estos vuelven a tener S y lo que quieres es que los desmarcados se actualicen a N...
y como te comentaron solo pasaran los check....
entonces lo que debes hacer es traer todos como lo haces.... pero no los traigas marcados pues solo marcas lo que ya no tendrán publi y a esos les actualizas N....

:/ digo una cosa por otra....
o sea en ves de poner desmarque los que no tendran publi, cambiar por marque los que no tendran publi :/
__________________
Gokuh Salvo al mundo. PUNTO!!!!
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 10:20.