Foros del Web » Programando para Internet » PHP »

Hacer que me aparezcan todos los valores de un array

Estas en el tema de Hacer que me aparezcan todos los valores de un array en el foro de PHP en Foros del Web. Buenas, estoy diseñando un sistema y tengo un problema. Tengo de código por una parte: Código PHP: <?php $mail  =  $_SESSION [ 'k_email' ];  //defino mail ...
  #1 (permalink)  
Antiguo 11/03/2011, 05:56
 
Fecha de Ingreso: diciembre-2010
Ubicación: Gavà
Mensajes: 74
Antigüedad: 13 años, 4 meses
Puntos: 3
Mensaje Hacer que me aparezcan todos los valores de un array

Buenas, estoy diseñando un sistema y tengo un problema. Tengo de código por una parte:
Código PHP:
<?php
$mail 
$_SESSION['k_email']; //defino mail

$consultaidu mysql_query("SELECT idu FROM usuarios WHERE email='$mail'");
while(
$resultado mysql_fetch_array($consultaidu)){
$idu $resultado['idu']; } //Consulto el idu de la tabla "usuarios" para pañadirlo en la tabla "tablasprofes"

$consultanombre_tabla mysql_query("SELECT nombre_tabla FROM tablasprofes WHERE idu='$idu'");
while(
$resultado2 mysql_fetch_array($consultanombre_tabla)){
$nombre_tabla $resultado2['nombre_tabla']; }

$consultaidt mysql_query("SELECT idt FROM tablasprofes WHERE nombre_tabla='$nombre_tabla'");
while(
$resultado3 mysql_fetch_array($consultaidt)){
$idt $resultado3['idt']; }

?>
Y por la otra
Código PHP:
Quina taula de mitges vols editar? <br />
<?php 
    
echo "<li><a href=\"$idt\">$nombre_tabla</a></li>";
    
 
?>
El problema es que tan solo me aparece el campo creado más recientemente en lugar de todos los que hay.

Muchas gracias!
  #2 (permalink)  
Antiguo 11/03/2011, 06:40
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años
Puntos: 13
Respuesta: Hacer que me aparezcan todos los valores de un array

Buenas!

Estás usando variables normales en vez de arrays.
Código PHP:
$variable="hola";
$variable="adios";
echo 
$variable// Devuelve "adios"

$array[0]="hola";
$array[1]="adios";
echo 
$array// Da error
echo $array[0]; // Devuelve "hola"
echo $array[1]; // Devuelve "adios" 
Es decir, que debería quedarte algo así, por ejemplo:

Código PHP:
<?php
$mail 
$_SESSION['k_email']; //defino mail
$cont 0// Defino contador

$consultaidu mysql_query("SELECT idu FROM usuarios WHERE email='$mail'");
while(
$resultado mysql_fetch_array($consultaidu)){
    
$idu[$cont] = $resultado['idu'];
    
$cont++;
//Consulto el idu de la tabla "usuarios" para pañadirlo en la tabla "tablasprofes"

$cont=0// Reinicializo contador
$consultanombre_tabla mysql_query("SELECT nombre_tabla FROM tablasprofes");
while(
$resultado2 mysql_fetch_array($consultanombre_tabla)){
    
$nombre_tabla[$cont] = $resultado2['nombre_tabla'];
    
$cont++;
}

$cont=0// Reinicializo contador
$consultaidt mysql_query("SELECT idt FROM tablasprofes");
while(
$resultado3 mysql_fetch_array($consultaidt)){
    
$idt[$cont] = $resultado3['idt'];
    
$cont++;
}
?>
Y por otra parte, al mostrar tendrías que saber primero cuántos elementos tiene el array y recorrértelo:

Código PHP:
Mostra els usuaris: <br />
<?php 
    
for($i=0;$i<count($idu);$i++){
        echo 
"<li>$idu[$i]</li>";
    }
?>
<br/><br/>
Mostra els profes: <br />
<?php 
    
for($i=0;$i<count($nombre_tabla);$i++){
        echo 
"<li>$nombre_tabla[$i]</li>";
    }
?>
<br/><br/>
Mostra els profes filtrant nom de taula: <br />
<?php 
    
for($i=0;$i<count($idt);$i++){
        echo 
"<li>$idt[$i]</li>";
    }
?>
Ten en cuenta que te he quitado los WHERE porque usabas las variables array mal, si lo que quieres es incluirlo, deberías meter bucles dentro de bucles (while dentro de otro while)

Ejemplo:
Código PHP:
$cont=0// Reinicializo contador
$consultaidu mysql_query("SELECT idu FROM usuarios WHERE email='$mail'");
while(
$resultado mysql_fetch_array($consultaidu)){
    
$idu[$cont] = $resultado['idu'];
    
$cont2=0// Reinicializo un contador 2
    
$consultaidt mysql_query("SELECT idt FROM tablasprofes WHERE idu=".$resultado['idu']);
    while(
$resultado2 mysql_fetch_array($consultaidt)){
        
$idt[$cont][$cont2] = $resultado2['idt'];
        
$cont2++;
    }
    
$cont++;
}

echo 
$idt[0][0]; // Devuelve del user X, la primera tabla que encontró
echo $idt[0][1]; // Devuelve del user X, la segunda tabla que encontró
echo $idt[0][2]; // Devuelve del user X, la tercera tabla que encontró

echo $idt[1][0]; // Devuelve del user Y, la primera tabla que encontró
echo $idt[1][1]; // Devuelve del user Y, la segunda tabla que encontró
// (etc etc etc) 
Está hecho un poco a ciegas, igual no va a la perfección pero teniendo claro el funcionamiento de variable y array debería ser suficiente para que sepas arreglarlo. Espero que te sirva!

Salutacions!
  #3 (permalink)  
Antiguo 11/03/2011, 07:08
 
Fecha de Ingreso: diciembre-2010
Ubicación: Gavà
Mensajes: 74
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: Hacer que me aparezcan todos los valores de un array

Moltes gracies!, He adaptado el código para que funcionara y solo le veo un error que no sé como arreglarlo, en la parte de
Código PHP:
Ver original
  1. <?php  
  2.     for($i=0;$i<count($nombre_tabla);$i++){
  3.         echo "<li>$nombre_tabla[$i]</li>";
  4.     }
  5. ?>
Me muestra todas las tablas correspondientes a el "idu" 0 no al "idu" del usuario.
  #4 (permalink)  
Antiguo 11/03/2011, 07:21
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Hacer que me aparezcan todos los valores de un array

reemplaza eso : $i<count($nombre_tabla) por esto :$i<=count($nombre_tabla) debido que si $nombre_tabla es "1" nunca llegara , ya que la condicion que tu le das es que cuente a que sea menor a la variable
  #5 (permalink)  
Antiguo 11/03/2011, 07:26
 
Fecha de Ingreso: diciembre-2010
Ubicación: Gavà
Mensajes: 74
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: Hacer que me aparezcan todos los valores de un array

Me explico mejor que no he explicado ni el contexto ni nada:
Lo que estoy haciendo es un sistema para que los profesores administren las notas (vamos, como in libro de calificaciones pero online), esto lo hago como "Treball de recerca".
Tengo ya hecho el sistema de usuarios, el sistema para crear una nueva tabla de medias y por hacer me queda la página donde se mostrarán todas las tablas que tiene cada usuario (de donde es esta duda) y el sistema de notas.
Para este apartado me hacen falta 2 tablas; una se llama usuarios (es donde están: "idu", "emal", "password" y "fecha"), luego hay otra que se llama tablasprofes (dentro de aquí hay: "idu", "idt", "nombre_tabla", "numero_alumnos", "numero_notas" y "fecha"). Lo que quiero hacer es en una página con enlace "...into.php?simis=editar aparezcan todas las tablas que tenga un usuario y luego que cada tabla lleve un link que añada al final de la url un &idt=numeroidt, para que luego con un GET obtener el valor e ir a editar las medias.

Gracias!
  #6 (permalink)  
Antiguo 11/03/2011, 07:57
 
Fecha de Ingreso: diciembre-2010
Ubicación: Gavà
Mensajes: 74
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: Hacer que me aparezcan todos los valores de un array

He dejado el código así:
Código PHP:
Ver original
  1. <?php
  2. $mail = $_SESSION['k_email']; //defino mail
  3.  
  4. $cont=0; // Reinicializo contador
  5. $consultaidu = mysql_query("SELECT idu FROM usuarios WHERE email='$mail'");
  6. while($resultado = mysql_fetch_array($consultaidu)){
  7.     $idu[$cont] = $resultado['idu'];
  8.    
  9.     $cont2=0; // Reinicializo un contador 2
  10.     $consultanombre_tabla = mysql_query("SELECT nombre_tabla FROM tablasprofes WHERE idu=".$resultado['idu']);
  11.     while($resultado2 = mysql_fetch_array($consultanombre_tabla)){
  12.         $nombre_tabla[$cont][$cont2] = $resultado2['nombre_tabla'];
  13.          
  14.         $cont3=0; // Reinicializo un contador 3            
  15.         $consultaidt = mysql_query("SELECT idt FROM tablasprofes WHERE nombre_tabla=".$resultado2['nombre_tabla']);
  16.         while($resultado3 = mysql_fetch_array($consultaidt)){
  17.             $idt[$cont][$cont2][$cont3] = $resultado3['idt'];
  18.             $cont3++;
  19.         }
  20.         $cont2++;
  21.     }
  22.     $cont++;
  23. }
  24. ?>

Pero sigue sin ir y además me da error:
Cita:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampplite\htdocs\Simis\scripts\def_variable.php on line 16
  #7 (permalink)  
Antiguo 11/03/2011, 08:07
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Hacer que me aparezcan todos los valores de un array

si pruebas con esto:

Código PHP:
Ver original
  1. $consultaidt = mysql_query("SELECT idt FROM tablasprofes WHERE nombre_tabla='.$resultado2['nombre_tabla']'");

sino prueba realizando toda la consulta en uno
  #8 (permalink)  
Antiguo 11/03/2011, 08:31
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años
Puntos: 13
Respuesta: Hacer que me aparezcan todos los valores de un array

Tienes razón bUllan9ebrio, debería ir entre comillas si es un texto, quedaría así:

Código PHP:
$consultaidt mysql_query("SELECT idt FROM tablasprofes WHERE nombre_tabla='".$resultado2['nombre_tabla']."'"); 
(Lo he vuelto a poner porque no es exactamente como lo pusiste ya que sobraría un punto o bien debería ir como he puesto ahora, merci)

Eso elimina el Warning y debería hacer que te funcione.
A parte de eso creo que está bien, porque yo copio tu código y modifico sólo las sentencias SQL (lo pruebo en unas tablas mías y le quito algún WHERE) y funciona correctamente.

Ja diràs!
Saludos
  #9 (permalink)  
Antiguo 11/03/2011, 08:51
 
Fecha de Ingreso: diciembre-2010
Ubicación: Gavà
Mensajes: 74
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: Hacer que me aparezcan todos los valores de un array

Ahora el warning ha sido eliminado, pero ahora al crear una nueva tabla no envía el "idu" y los nombres de las tablas siguen sin verse. ¿Adjunto un .rar con todo para que podáis ver que falla?, o es muy descarado eso?
  #10 (permalink)  
Antiguo 11/03/2011, 09:03
 
Fecha de Ingreso: diciembre-2010
Ubicación: Gavà
Mensajes: 74
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: Hacer que me aparezcan todos los valores de un array

Si queréis ver el contenido: http://92.56.227.6/simis.rar , y si queréis ver la web http://92.56.227.6/simis , así lo llevo (:
  #11 (permalink)  
Antiguo 11/03/2011, 09:44
 
Fecha de Ingreso: diciembre-2010
Ubicación: Gavà
Mensajes: 74
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: Hacer que me aparezcan todos los valores de un array

He probado volver al código de antes y cambiar el orden, he conseguido que se me listen todos los nombres de las tablas, pero el problema ahora es que no consigue el valor de "idt".
Por un lado tengo
Código PHP:
Ver original
  1. <?php
  2. $mail = $_SESSION['k_email']; //defino mail
  3.  
  4. $consultaidu = mysql_query("SELECT idu FROM usuarios WHERE email='$mail'");
  5. while($resultado = mysql_fetch_array($consultaidu)){
  6. $idu = $resultado['idu']; } //Consulto el idu de la tabla "usuarios" para pañadirlo en la tabla "tablasprofes"
  7.  
  8. $consultanombre_tabla = mysql_query("SELECT nombre_tabla FROM tablasprofes WHERE idu='$idu'");
  9. while($resultado2 = mysql_fetch_array($consultanombre_tabla)){
  10. $nombre_tabla = $resultado2['nombre_tabla'] = $lol; }
  11.  
  12. $consultaidt = mysql_query("SELECT idt FROM tablasprofes WHERE nombre_tabla='$nombre_tabla'");
  13. while($resultado3 = mysql_fetch_array($consultaidt)){
  14. $idt = $resultado3['idt']; }
  15.  
  16. ?>

y por el otro:
Código PHP:
Ver original
  1. Quina taula de mitges vols editar? <br />
  2.  
  3.  
  4. <?php
  5.     $consultaname_tabla = mysql_query("SELECT nombre_tabla FROM tablasprofes WHERE idu='$idu'");
  6. while($resultadox = mysql_fetch_array($consultaname_tabla)){
  7. $name_tabla = $resultadox['nombre_tabla'];
  8. echo "<li><a href=\"into.php?simis=editar&idt=$idt\">$name_tabla</a></li>"; }
  9.  
  10. ?>
  #12 (permalink)  
Antiguo 11/03/2011, 10:05
 
Fecha de Ingreso: diciembre-2010
Ubicación: Gavà
Mensajes: 74
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: Hacer que me aparezcan todos los valores de un array

Problema resuelto, muchas gracias a todos!, al final he dejado por un lado:
Código PHP:
Ver original
  1. <?php
  2. $mail = $_SESSION['k_email']; //defino mail
  3.  
  4. $consultaidu = mysql_query("SELECT idu FROM usuarios WHERE email='$mail'");
  5. while($resultado = mysql_fetch_array($consultaidu)){
  6. $idu = $resultado['idu']; } //Consulto el idu de la tabla "usuarios" para pañadirlo en la tabla "tablasprofes"
  7.  
  8.  
  9.  
  10. ?>

y por el otro:
Código PHP:
Ver original
  1. Quina taula de mitges vols editar? <br />
  2.  
  3.  
  4. <?php
  5.     $consultanombre_tabla = mysql_query("SELECT nombre_tabla FROM tablasprofes WHERE idu='$idu'");
  6. while($resultado2 = mysql_fetch_array($consultanombre_tabla)){
  7. $nombre_tabla = $resultado2['nombre_tabla'];
  8.  
  9. $consultaidt = mysql_query("SELECT idt FROM tablasprofes WHERE nombre_tabla='$nombre_tabla'");
  10. while($resultado3 = mysql_fetch_array($consultaidt)){
  11. $idt = $resultado3['idt']; }
  12. echo "<li><a href=\"into.php?simis=editar&idt=$idt\">$nombre_tabla</a></li>";
  13. }
  14.  
  15.  
  16. ?>
  #13 (permalink)  
Antiguo 11/03/2011, 10:40
Avatar de Kamae  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años
Puntos: 13
Respuesta: Hacer que me aparezcan todos los valores de un array

Perfecto! Me alegro por ti tío ;)

Aunque acabo de ver una cosilla que ya me sonaba mal desde el principio pero no caía. Las "mitges" son "medias de vestir"; las "mitjanes" son "medias matemáticas"; aunque es cierto q la mayoría hacemos una mala traducción del castellano y decimos "la mitja" en vez de "la mitjana".. me incluyo jajaj Lo comprobarás si buscas en google "mitja aritmètica" :P

(Sé q no tiene nada q ver pero como has dicho que es "Treball de Recerca"... por si acaso te bajan por faltas xD)

Saludos y que vagi bé!
  #14 (permalink)  
Antiguo 11/03/2011, 17:35
 
Fecha de Ingreso: diciembre-2010
Ubicación: Gavà
Mensajes: 74
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: Hacer que me aparezcan todos los valores de un array

Jajajaja, muchas gracias, ni me había fijado en ese error! jaja (:

Etiquetas: arrays
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 09:51.