Foros del Web » Programando para Internet » PHP »

Llamar elementos dinámicos almacenados en un array

Estas en el tema de Llamar elementos dinámicos almacenados en un array en el foro de PHP en Foros del Web. De esta consulta: Código PHP: $sql_editar = "select * from dpswd.$tabla where id_" . $tabla . "='$id_'" ; $result_editar = mysql_query ( $sql_editar , $link ); while( $mrow = mysql_fetch_array ...
  #1 (permalink)  
Antiguo 27/05/2009, 07:43
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Pregunta Llamar elementos dinámicos almacenados en un array

De esta consulta:

Código PHP:
$sql_editar="select * from dpswd.$tabla where id_".$tabla."='$id_'";
$result_editar=mysql_query($sql_editar,$link);
while(
$mrow=mysql_fetch_array($result_editar)){
 
$valores[]=$mrow

Como puedo visualizar los elementos almacenado en $valores[], si en la consulta $sql_editar, puede variar la tabla a la que se le realiza la consulta; por lo que no puedo decir $valores['nombre_de_un_campo'] porque debe ser capaz de poner el nombre de un campo cualquiera, sin que yo le diga cual quiero.
  #2 (permalink)  
Antiguo 27/05/2009, 07:50
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: Llamar elementos dinámicos almacenados en un array

Hola
Código PHP:
foreach($values as $key=>$value) echo $key.": ".$value."<br/>"
  #3 (permalink)  
Antiguo 27/05/2009, 08:01
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Llamar elementos dinámicos almacenados en un array

Hice esto:

Código PHP:
$sql_editar="select * from dpswd.$tabla where id_".$tabla."='$id_'";
$result_editar=mysql_query($sql_editar,$link);
while(
$mrow=mysql_fetch_array($result_editar)){
$valores[]=$mrow//tratar de poner aqui el nombre del campo
}
foreach(
$valores as $key=>$valores)  //codigo que me distes
echo $key.": ".$valores."<br/>";          // codigo que me distes 
y lo que me sale en pantalla es:
Código:
0: array
Sigo igual.
  #4 (permalink)  
Antiguo 27/05/2009, 08:12
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: Llamar elementos dinámicos almacenados en un array

Si claro perdona..
Código PHP:
$sql_editar="select * from dpswd.$tabla where id_".$tabla."='$id_'";
$result_editar=mysql_query($sql_editar,$link);
while(
$mrow=mysql_fetch_array($result_editar)){
 
$valores[]=$mrow
}  
foreach(
$valores as $single_row) {
  foreach(
$single_row as $key=>$value) {
         echo 
$key.": ".$value."<br/>";
  }

  #5 (permalink)  
Antiguo 27/05/2009, 08:12
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Llamar elementos dinámicos almacenados en un array

Hice este cambio en el que me habias dado anteriormente:

Código PHP:
$sql_editar="select * from dpswd.$tabla where id_".$tabla."='$id_'";
$result_editar=mysql_query($sql_editar,$link);
while(
$mrow=mysql_fetch_array($result_editar)){
 
$valores=$mrow//tratar de poner aqui el nombre del campo
}
foreach(
$valores as $key=>$value
echo 
$key.": ".$value."<br/>"
Y me muestra esto de una de mis tablas:

Código:
0: 1
id_usuarios: 1
1: ana
login: ana
2: 0cc175b9c0f1b6a831c399e269772661
pass: 0cc175b9c0f1b6a831c399e269772661
3: 11 Mayo 2009
fecha: 11 Mayo 2009
4: 03:36:17 pm
hora: 03:36:17 pm
5: 2
id_funcion: 2
cómo mejoro esto, es el mismo reultado que obtengo con este otro código que me acabas de dar

Última edición por boy-computer; 27/05/2009 a las 08:17 Razón: Falta argumento
  #6 (permalink)  
Antiguo 27/05/2009, 08:21
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: Llamar elementos dinámicos almacenados en un array

Bueno, no entiendo bien a donde quieres llegar, o sea qual resultado quieres obtener?
Código PHP:
$sql_editar="select * from dpswd.$tabla where id_".$tabla."='$id_'";
$result_editar=mysql_query($sql_editar,$link);
while(
$mrow=mysql_fetch_array($result_editar)){
 
$valores[]=$mrow
}  
foreach(
$valores as $single_row) {
  foreach(
$single_row as $key=>$value) {
         $
$key $value;
  }

asì por ejemplo vas a definir las variables con el mismo nombre del campo igual a su propio valor.
Pero bueno, habria que intender como quieres utilizar estos resultados...
  #7 (permalink)  
Antiguo 27/05/2009, 08:23
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Mejorar código

¿Por qué de este código? que es una consulta a una de mis tablas

Código PHP:
$sql_editar="select * from dpswd.$tabla where id_".$tabla."='$id_'";
$result_editar=mysql_query($sql_editar,$link);
while(
$mrow=mysql_fetch_array($result_editar)){
 
$valores=$mrow;
}
foreach(
$valores as $key=>$value
echo 
$key.": ".$value."<br/>"
Me devuelve esto:

Código:
0: 1
id_usuarios: 1
1: ana
login: ana
2: 0cc175b9c0f1b6a831c399e269772661
pass: 0cc175b9c0f1b6a831c399e269772661
3: 11 Mayo 2009
fecha: 11 Mayo 2009
4: 03:36:17 pm
hora: 03:36:17 pm
5: 2
id_funcion: 2
Que tengo que cambiar, o como debo hacerlo para obtener:

Código:
id_usuarios: 1
login: ana
pass: 0cc175b9c0f1b6a831c399e269772661
fecha: 11 Mayo 2009
hora: 03:36:17 pm
id_funcion: 2

Última edición por boy-computer; 27/05/2009 a las 08:28 Razón: Mejorando el contenido de la pregunta
  #8 (permalink)  
Antiguo 27/05/2009, 08:28
 
Fecha de Ingreso: octubre-2008
Mensajes: 71
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mejorar código

prueba asi:

Código PHP:
$sql_editar="select * from dpswd.$tabla where id_".$tabla."='$id_'"
$result_editar=mysql_query($sql_editar,$link); 
if(
$mrow=mysql_fetch_array($result_editar)){echo "GOOD";}else{"No hay datos";};

foreach(
$mrow as $key=>$value)  
echo 
$key.": ".$value."<br/>"
  #9 (permalink)  
Antiguo 27/05/2009, 08:32
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: Mejorar código

utiliza mysql_fetch_assoc
  #10 (permalink)  
Antiguo 27/05/2009, 08:32
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Llamar elementos dinámicos almacenados en un array

Mira colega, ese código me genera de una de mis tablas:

Código:
0: 1
id_usuarios: 1
1: ana
login: ana
2: 0cc175b9c0f1b6a831c399e269772661
pass: 0cc175b9c0f1b6a831c399e269772661
3: 11 Mayo 2009
fecha: 11 Mayo 2009
4: 03:36:17 pm
hora: 03:36:17 pm
5: 2
id_funcion: 2
Y lo que quiero que me genere es:

Código:
id_usuarios: 1
login: ana
pass: 0cc175b9c0f1b6a831c399e269772661
fecha: 11 Mayo 2009
hora: 03:36:17 pm
id_funcion: 2
Entiendes ahora, lo que quiero.
  #11 (permalink)  
Antiguo 27/05/2009, 08:34
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: Llamar elementos dinámicos almacenados en un array

utiliza mysql_fetch_assoc en lugar de mysql_fetch_array
  #12 (permalink)  
Antiguo 27/05/2009, 08:38
 
Fecha de Ingreso: octubre-2008
Mensajes: 71
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Mejorar código

da igual,

puede usar mysql_fetch_array o si quieres mysql_fetch_array($res,MYSQL_ASSOC)
__________________
Developer Staff
http://img8.imageshack.us/img8/7852/firmaeun.jpg
  #13 (permalink)  
Antiguo 27/05/2009, 08:41
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Llamar elementos dinámicos almacenados en un array

Ahora si me sale como quería, pero tengo la duda de como usar el valor de la variable $valor, para asignarselo a un objeto de formulario en el atributo value='', te pongo el siguiente código y te digo donde quiero ponerlo:

Código PHP:
$sql_campos="SHOW COLUMNS FROM $tabla";
        
$result mysql_query($sql_campos,$link);
         
        echo 
"<tr><td colspan='2' class='encabeza'>Editando $tabla</td></tr>";
        while (
$row mysql_fetch_assoc($result)) {
        
$campos=$row;
        echo 
"<tr>";
        echo 
"<td align='right' valign='top'>".$campos['Field'].":&nbsp;</td>";
        echo 
"<td>";
        
        if ( 
$campos['Key']=='MUL' ) {
         
$campo_foraneo $campos['Field'];
         
$sql="SELECT CONCAT( referenced_table_name) AS tabla_referencia
                 FROM information_schema.KEY_COLUMN_USAGE
                WHERE REFERENCED_TABLE_SCHEMA = 'dpswd' AND REFERENCED_TABLE_NAME IS NOT NULL AND COLUMN_NAME = '$campo_foraneo'
                      ORDER BY TABLE_NAME, COLUMN_NAME"
;
         
$result=mysql_query($sql,$link);
         
//echo $sql;
         
$cols=mysql_fetch_object($result);
         
$tabla=$cols->tabla_referencia
         
         
$sql="select * from dpswd.$tabla";
         
$result=mysql_query($sql,$link);
         
//echo $sql;
         
echo "<select name='".$campos."'>";
         echo 
"<option>- - - </option>";
         while ( 
$select=mysql_fetch_assoc($result) ){
         
$select_campo=$select;
         echo 
"<option value='".$select_campo[$campo_foraneo]."'>".$select_campo[$tabla]."</option>";
         }
         echo 
"</select>";
        
        }elseif( 
$campos['Type']=='longtext' )
        {
         echo 
"<textarea name='".$campos['Field']."' cols='50' rows='7'></textarea>";
        }else{
         if ( 
$campos['Key']=='PRI' 
         {
          echo 
$id_;
         }else{
         echo 
"<input type='text' name='".$campos['Field']."' value='aqui es donde quiero el valor de la variable $value' />";
         }
        }
        echo 
"</td>";
        echo 
"</tr>";
        } 
Quiero poner el valor de la variable $valor en la línea:

Código PHP:
echo "<input type='text' name='".$campos['Field']."' value='aqui es donde quiero el valor de la variable $value' />"
Como lo hago

Última edición por boy-computer; 27/05/2009 a las 08:45 Razón: Arreglar el tema
  #14 (permalink)  
Antiguo 27/05/2009, 08:43
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Mejorar código

Colega cambie mysql_fetch_array por mysql_fetch_assoc y ahora si me sale bien.

Pero comohago ahora para pasar la variable $value a un código que esta unas líneas más abajo de este y que esta dentro de un WHILE.
  #15 (permalink)  
Antiguo 27/05/2009, 09:01
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: Llamar elementos dinámicos almacenados en un array

Aqui esta tu codigo correctamente indentato (no se en espanol como se dice)
Código PHP:
$sql_campos="SHOW COLUMNS FROM $tabla";
$result mysql_query($sql_campos,$link);
echo 
"<tr><td colspan='2' class='encabeza'>Editando $tabla</td></tr>";
while (
$row mysql_fetch_assoc($result)) {
    
$campos=$row;
    echo 
"<tr>";
    echo 
"<td align='right' valign='top'>".$campos['Field'].":&nbsp;</td>";
    echo 
"<td>";  
    if(
$campos['Key']=='MUL') {
        
$campo_foraneo $campos['Field'];
        
$sql="SELECT CONCAT( referenced_table_name) AS tabla_referencia FROM information_schema.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = 'dpswd' AND REFERENCED_TABLE_NAME IS NOT NULL AND COLUMN_NAME = '$campo_foraneo' ORDER BY TABLE_NAME, COLUMN_NAME";
        
$result=mysql_query($sql,$link);
        
$cols=mysql_fetch_object($result);
        
$tabla=$cols->tabla_referencia
        
$sql="select * from dpswd.$tabla";
        
$result=mysql_query($sql,$link);
        echo 
"<select name='".$campos."'>";
        echo 
"<option>- - - </option>";
        while (
$select=mysql_fetch_assoc($result) ){
            
$select_campo=$select;
            echo 
"<option value='".$select_campo[$campo_foraneo]."'>".$select_campo[$tabla]."</option>";
        }
        echo 
"</select>";
    }
    elseif( 
$campos['Type']=='longtext' ) {
        echo 
"<textarea name='".$campos['Field']."' cols='50' rows='7'></textarea>";
    }
    else {
        if( 
$campos['Key']=='PRI' ) {
            echo 
$id_;
        }
           else {
            echo 
"<input type='text' name='".$campos['Field']."' value='$value' />";
        }
     }
     echo 
"</td>";
     echo 
"</tr>";
 } 
Bueno ahora:
$value tiene que ser un resultado de qual consulta??
  #16 (permalink)  
Antiguo 27/05/2009, 09:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Llamar elementos dinámicos almacenados en un array

Temas unidos por favor NO dupliques temas.
  #17 (permalink)  
Antiguo 27/05/2009, 09:10
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Llamar elementos dinámicos almacenados en un array

abidibo, el valor de la variable $value sale de un código que está por encima del cñodigo del while, te pongo para que veas de donde sale el valor de $value

Código PHP:
$sql_editar="select * from dpswd.$tabla where id_".$tabla."='$id_'";
        
$result_editar=mysql_query($sql_editar,$link);
        while(
$mrow=mysql_fetch_assoc($result_editar)){
        
$valores=$mrow;
        }
        foreach(
$valores as $key=>$value
        
$value
  #18 (permalink)  
Antiguo 27/05/2009, 09:29
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: Llamar elementos dinámicos almacenados en un array

Ya, es que pero no es facil si no tengo ida de lo que quieres conseguir con todo esto. A lo mejor lo que quieres es:
Código PHP:
echo "<input type='text' name='".$campos['Field']."' value='".$valores[$campos['Field']]."' />"
$value no existe fuera de
Código PHP:
foreach($mrow as $key=>$value)  echo $key.": ".$value."<br/>"
yo te escribi eso para mostrarte que si se puede imprimir los elementos de un array sin conocer sus index. Pero claro, si tienes que coger un preciso elemento del array tienes que conocer su nombre, su index.
Si el index es dado de $campos['Field'] arriba tienes tu respuesta, si no habria que saber bien lo que quieres obtener te todo esto.
Chao
  #19 (permalink)  
Antiguo 27/05/2009, 09:38
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
De acuerdo Respuesta: Llamar elementos dinámicos almacenados en un array

Colegaaa!!!!!, al fin di con lo que quería no sabes cuan agradecido estoy, llevaba días con esto, que fácil, nunca se me ocurrió esa idea.

Gracias.
  #20 (permalink)  
Antiguo 27/05/2009, 09:44
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años
Puntos: 7
Respuesta: Llamar elementos dinámicos almacenados en un array

de nada :)
  #21 (permalink)  
Antiguo 27/05/2009, 15:02
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Llamar elementos dinámicos almacenados en un array

Colega, tengo un detalle, cuando pongo un botón de envio, que variable es la que almacena el contenido del atributo value='' de los objetos del formulario. Pues en el código aparece:

Código PHP:
".$campos['Field']." 
pero cuando hago:

Código PHP:
if ( !empty($campos['Field']) )
{
 echo 
$campos['Field']."<br>";

No me muestra nada. Cómo hago
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 07:05.