Foros del Web » Programando para Internet » PHP »

Duda con valores while

Estas en el tema de Duda con valores while en el foro de PHP en Foros del Web. Buenas Resulta que tengo que hacer una cosa parecida a esta: Código PHP: < ul id = "click-cambio" >     < li  class= "primero" >< img src = ...
  #1 (permalink)  
Antiguo 17/02/2012, 03:26
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Duda con valores while

Buenas
Resulta que tengo que hacer una cosa parecida a esta:
Código PHP:
<ul id="click-cambio">
    <
li class="primero"><img src="img/01.jpg" alt="Img 01" /></li>
    <
li><img src="img/02.jpg" alt="Img 02" /></li>
    <
li><img src="img/03.jpg" alt="Img 03" /></li>
    <
li><img src="img/04.jpg" alt="Img 04" /></li>
</
ul
Pero con los valores de una base de datos.
Problemas que tengo si lo hago asi:
Código PHP:
<ul id="click-cambio"><?php 
include("privados/config.php");
$id=$_GET['id'];

$resultados=mysql_query("select * from imagenes where id_logueado='$id_usuario'",$conexion) or
  die(
"Problemas en el select:".mysql_error());
  while(
$fot=mysql_fetch_assoc($resultados))
{
$foto_nombre=$fot['nombre'];

?><li class="primero"><img src="<?php echo "$foto_nombre"?>" class="sexylightbox" rel="galeria"></li>
<?php
}
?> </ul>
No hace lo mismo que el otro y me salen todas las fotos en la primera pagina, lo que quiero conseguir es una pagina que tenga unos botones para pasar para alante y atras y con unos comentarios debajo, y no puede ser por id porque en el momento que borren un articulo, foto o lo que sea ya no funcionaria como puedo solucionar el problema, como puedo hacer esto de arriba???necesito una idea gracias. un saludo.
  #2 (permalink)  
Antiguo 17/02/2012, 03:33
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Duda con valores while

El código de arriba en principio es correcto, con algunas pegas, pero es imposible saber qué quieres hacer con la explicación que das. Propuesta:


Código PHP:
Ver original
  1. <?php
  2. include("privados/config.php");
  3. $resultados = mysql_query("select * from imagenes where id_logueado='$id_usuario'",$conexion) or die("Problemas en el select:".mysql_error());
  4.  
  5. $output = '<ul id="click-cambio">';
  6.  
  7. while($fot=mysql_fetch_assoc($resultados))
  8. {
  9.     $output .='<li class="primero"><img src="'.$fot['nombre'].'" class="sexylightbox" rel="galeria"></li>';
  10. }
  11. $output .='</ul>';
  12.  
  13. echo $output;
  14. ?>
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 17/02/2012, 03:47
Avatar de alvidales  
Fecha de Ingreso: febrero-2012
Mensajes: 108
Antigüedad: 12 años, 2 meses
Puntos: 11
Respuesta: Duda con valores while

Lo que necesitas es unicamente mandarle al primer elemento la clase primero (class="primero"), esto te deberia de funcionar. Si tienes alguna duda hazmelo saber.

Código PHP:
<ul id="click-cambio"><?php  
include("privados/config.php"); 
$id=$_GET['id']; 

$resultados=mysql_query("select * from imagenes where id_logueado='$id_usuario'",$conexion) or 
  die(
"Problemas en el select:".mysql_error());
$i 0;
  while(
$fot=mysql_fetch_assoc($resultados)) 

     
$clase = (isset($i))? "class='primero'""";
$foto_nombre=$fot['nombre']; 

?><li <?php echo $clase ?>><img src="<?php echo "$foto_nombre"?>" class="sexylightbox" rel="galeria"></li>
<?php 
unset($i);

?> </ul>

Última edición por alvidales; 17/02/2012 a las 04:06
  #4 (permalink)  
Antiguo 17/02/2012, 04:32
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Duda con valores while

No se para que usas $output y me da un error tu codigo repara2 y el de alvidales me sale como me salia a mi con mi codigo todas los articulos, fotos y demas. en el misma pagina, nose como puedo hacer para que funcione. gracias.
  #5 (permalink)  
Antiguo 17/02/2012, 04:52
Avatar de alvidales  
Fecha de Ingreso: febrero-2012
Mensajes: 108
Antigüedad: 12 años, 2 meses
Puntos: 11
Respuesta: Duda con valores while

Intenta con este código:

Código PHP:

<?php  
include("privados/config.php"); 
$id=$_GET['id']; 

$resultados=mysql_query("select * from imagenes where id_logueado='$id_usuario'",$conexion) or 
  die(
"Problemas en el select:".mysql_error());
$i 0;
?>
<div id="click-cambio">
<?php
$i 
1;
  while(
$fot=mysql_fetch_assoc($resultados)) 

$foto_nombre=$fot['nombre']; 

?><img src="<?php echo "$foto_nombre"?>" alt="Imagen N" rel="<?php echo $i?>" />
<?php
++$i 

?> </div>
  #6 (permalink)  
Antiguo 17/02/2012, 06:42
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Duda con valores while

he hecho estas modificaciones pero tampoco me funciona mira este es el codigo completo:
Código PHP:
<?php 
session_start
();
include(
'header.php');
if (!isset(
$_SESSION['logueado_usuario'])) { 
    include (
"login.php");  
echo 
"<a href='registro.php'>Registrarse</a>" ;} 
    else {  
    
$nombre =$_SESSION['logueado_nombre']; 
    
$id_usuario=$_SESSION['logueado_id']; 
$obejeto=$_REQUEST['objeto'];

}
?>
<link rel="stylesheet" type="text/css" href="css/style.css"/>
<script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
    {
    $("li").click(function ()
         {
        if(!$(this).next("li").length)
            {
            $(this).css("display", "none");
            $("ul li:first-child").css("display", "inline");
            return false;    
            }
        $(this).css("display", "none");
        $(this).next().css("display", "inline");
        });
    });
</script>
<?php   
include("privados/config.php");  
$id=$_GET['id'];  

$resultados=mysql_query("select * from imagenes where id_logueado='$id_usuario'",$conexion) or  
  die(
"Problemas en el select:".mysql_error()); 
$i 0
?> 
<ul id="click-cambio"> 
<?php 
$i 
1
  while(
$fot=mysql_fetch_assoc($resultados))  
{  
$foto_nombre=$fot['nombre'];  

?><?php if($i=1)
{
?><li class="primero"><?php }else{?> <li> <? ?><img src="<?php echo "$foto_nombre"?>" alt="Imagen N" rel="<?php echo $i?>" /> </li>
<?php 
++$i;  
}  
?> </ul>
Nose como puedo hacer, hay alguna manera mas facil de hacer una paginacion de resultados pero es que en el link lo tengo asi: http://localhost/articulos.php?id=1 para que recoja ese articulo foto lo que sea y me lo muestre yo solo quiero añadir botones para pasar dichos articulos, pero nose como hacerlo. gracias.
  #7 (permalink)  
Antiguo 17/02/2012, 08:54
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Duda con valores while

He conseguido que salga solo una imagen,articulo o lo que sea y al pulsar sobre ella la otra ahora le quiero poner comentarios pero el problema es que me salen los comentarios de las dos articulos en el mismo articulo y al pulsar se cambia el articulo pero me sige dando los dos comentarios la consulta la ago asi:
Código PHP:
<?php 
$comentarios
=mysql_query("select * from comentario where id_foto='$foto_id'",$conexion)or 
  die(
"Problemas en el select:".mysql_error());
  while(
$fcom=mysql_fetch_assoc($comentarios))
  {
      echo 
$fcom['comentario'];
  }
Y este es el codigo entero
Código PHP:
<?php 
session_start
();
include(
'header.php');
if (!isset(
$_SESSION['logueado_usuario'])) { 
    include (
"login.php");  
echo 
"<a href='registro.php'>Registrarse</a>" ;} 
    else {  
    
$nombre =$_SESSION['logueado_nombre']; 
    
$id_usuario=$_SESSION['logueado_id']; 
$obejeto=$_REQUEST['objeto'];

}
?>
<link rel="stylesheet" type="text/css" href="css/style.css"/>
<script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
    {
    $("li").click(function ()
         {
        if(!$(this).next("li").length)
            {
            $(this).css("display", "none");
            $("ul li:first-child").css("display", "inline");
            return false;    
            }
        $(this).css("display", "none");
        $(this).next().css("display", "inline");
        });
    });
</script>
<ul id="click-cambio"><?php  
include("privados/config.php"); 
$id=$_GET['id']; 

$resultados=mysql_query("select * from imagenes where id_logueado='$id_usuario'",$conexion) or 
  die(
"Problemas en el select:".mysql_error());
$i 0;
  while(
$fot=mysql_fetch_assoc($resultados)) 

     
$clase = (isset($i))? "class='primero'""";
$foto_nombre=$fot['nombre']; 
$foto_id=$fot['id'];
?><li <?php echo $clase ?>><img src="<?php echo "$foto_nombre"?>" class="sexylightbox" rel="galeria" id="<?php echo $fot['id'];?>"></li><?php 
$comentarios
=mysql_query("select * from comentario where id_foto='$foto_id'",$conexion)or 
  die(
"Problemas en el select:".mysql_error());
  while(
$fcom=mysql_fetch_assoc($comentarios))
  {
      echo 
$fcom['comentario'];
  } 
unset(
$i);

?> </ul>
Que tengo que hacer para que me salga el comentario en su debida foto,articulo o lo que mueste, y cuando se pase la este salga los comentarios de la otra??? es que me salen de los dos. gracias un saludo.
  #8 (permalink)  
Antiguo 18/02/2012, 05:44
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Duda con valores while

e encontrao otra forma de hacer esto resulta que e encontrao una similar pero que usa array para sacar las imagenes si saco tambien lo array por otro lado de cada comentario creo que ya estaria hecho. cual es el problema nunka e trabajado con array desde base de datos y quiero modificar esto:
Código PHP:
<?php
$arr 
= array(=> '<img src="img/01.jpg" alt="Img 01" rel="1" />',
            
=> '<img src="img/02.jpg" alt="Img 02" rel="2" />',
            
=> '<img src="img/03.jpg" alt="Img 03" rel="3" />',
            
=> '<img src="img/04.jpg" alt="Img 04" rel="4" />',);


if(
$_POST["img"] == 4)
    echo 
$arr[1];
else
    echo 
$arr[$_POST["img"]+1];
?>
sacando datos de una base de datos hacer lo mismo es decir si tengo estas fotos en la base de datos como hago tal cosa??? gracias.
  #9 (permalink)  
Antiguo 18/02/2012, 12:06
 
Fecha de Ingreso: febrero-2012
Mensajes: 66
Antigüedad: 12 años, 2 meses
Puntos: 10
Respuesta: Duda con valores while

Sería más o menos así
Código PHP:
Ver original
  1. $arr=array();
  2. while($fot=mysql_fetch_assoc($resultados)){
  3.     $clase = (isset($i))? "class='primero'": "";
  4.     $foto_nombre=$fot['nombre'];
  5.     $foto_id=$fot['id'];
  6. $arr[]=$foto_nombre;
  7. }
Si necesitas más información de la imagen puedes añadirlo al array para despues usarlo:
Código PHP:
Ver original
  1. $arr['nombre']=array();
  2. $arr['id']=array();
y despues ir asignando como antes
$arr['nombre'][]=$foto_nombre;
$arra['id'][]=$foto_id;
  #10 (permalink)  
Antiguo 18/02/2012, 12:14
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Duda con valores while

lo que le falta a tu primer código es que tengas una bandera y una condición para indicar que solo al primer <li> le agregaras el class="primero", creo que eso era todo.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #11 (permalink)  
Antiguo 19/02/2012, 04:32
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Duda con valores while

estoy probando lo que me dijiste Hachikora pero necesito que el id de la imagen vaya dentro del $arr[id]; para que asi segun sea el numero de dentro cambie solo es que la verdad no tengo mucha idea, como podria hacer que funcionase con todas las imagenes?? y otra cosa como hago esto en otra pagina con los $arr como la de antes <?
$arr = array(1 => '<img src="img/01.jpg" alt="Img 01" rel="1" />');
echo $arr[1];
?>
lo he intentado asi:
<?php
include('../../red/config.php');
$resultados=mysql_query("select * from imagenes",$conexion) or
die("Problemas en el select:".mysql_error());
$i = 0;
$arr=array();
while($fot=mysql_fetch_assoc($resultados))
{
$foto_nombre=$fot['nombre'];
$arr=array (1 => '<img scr="$foto_nombre" alt="Img $i" rel="$i" />');
}
echo $arr[1];
?>
Pero no me funciona nose si hago algo mal o porque pero no va, gracias.

Última edición por edie8; 19/02/2012 a las 04:41
  #12 (permalink)  
Antiguo 19/02/2012, 06:39
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Duda con valores while

Ya lo he medio arreglao me muestra 2 fotos ya que tengo esto en la siguiente pagina:
Código PHP:
<?php
include('../config.php');
$resultados=mysql_query("select * from imagenes",$conexion) or 
  die(
"Problemas en el select:".mysql_error());
$i 0;
$arr=array();
  while(
$fot=mysql_fetch_assoc($resultados)) 

$clase = (isset($i))? "class='primero'""";
$foto_nombre=$fot['nombre'];
$foto_id=$fot['id'];
$arr[]=$foto_nombre;

}
echo 
$arr[1];
?>
<img src="<?php echo $arr[1]; ?>" />
y yo quiero meter todas las imagenes como <img src="<?php echo $arr[1]; ?>" /> creo q solo hay que cambiarle el numero $arr[2]; pero como puedo hacer esto de forma automatica??? gracias

Última edición por edie8; 19/02/2012 a las 16:26
  #13 (permalink)  
Antiguo 20/02/2012, 09:45
 
Fecha de Ingreso: febrero-2012
Mensajes: 66
Antigüedad: 12 años, 2 meses
Puntos: 10
Respuesta: Duda con valores while

Si no puedes imprimir la imagen dentro de ese while, tendrías que recorrer el array
Código PHP:
Ver original
  1. foreach($arr as $value){
  2.    echo "<img src='$value'/>";
  3. }
  #14 (permalink)  
Antiguo 21/02/2012, 05:27
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Duda con valores while

Como debo de usar el foreach es decir donde lo pongo y eso es que mira asi solo me sale la ultima foto, el valor $value que es? tiene que estar dntro el while o fuera?? asi lo intente yo:
Código PHP:
<?php
include('../config.php');
$resultados=mysql_query("select * from imagenes where id_logueado='$id_usuario'",$conexion) or 
  die(
"Problemas en el select:".mysql_error());
$i 0;
$arr=array();
  while(
$fot=mysql_fetch_assoc($resultados)) 

$foto_nombre=$fot['nombre'];
$foto_id=$fot['id'];
$arr[]=$foto_nombre;
$i++;
$arr = array(=> $foto_nombre);
foreach(
$arr as $value)
{
echo 
'<img scr="'.$value.'">';
}
}

/*echo $arr[1];*/
$registros=mysql_query("select count(*) as cantidad  from imagenes where id_logueado='$id_usuario'",$conexion) or
  die(
"Problemas en el select:".mysql_error());
  
$reg=mysql_fetch_array($registros);
  
$cantidad=$reg['cantidad'];
  if(
$_POST["img"] == $cantidad)
  { 
    
?><img src="<?php echo $value?>" /><?php 
    
}
else
    {
    
?><img src="<?php echo $value;?>" /><?php 
    
}
?>
Nunca e usado el foreach ni sabia de su existencia y en el manual php no me entero bien, me podeis explicar un poco como va?? gracias.
  #15 (permalink)  
Antiguo 21/02/2012, 07:04
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Duda con valores while

consigo q se vean hasta un maximo de tres fotos como puedo hacer para que se vean mass fotos este es el codigo que pongo:
Código PHP:
<?php
include('../config.php');
$resultados=mysql_query("select * from imagenes where id_logueado='$id_usuario'",$conexion) or 
  die(
"Problemas en el select:".mysql_error());
$i 1;
$arr=array();
  while(
$fot=mysql_fetch_assoc($resultados)) 

$foto_nombre=$fot['nombre'];
$foto_id=$fot['id'];
$arr[]=$foto_nombre;

/*$arr = array($i => '<img src="'.$foto_nombre.'" alt="Img '.$i.'" rel="'.$i.'" />',);*/
$arr1= array($i=> $foto_nombre);


/*?><img src="<?php echo $arr[$i]; ?>" /><?php */
}

/*echo '<img src="'.$arr1[$i].'" alt="Img '.$i.'" rel="'.$i.'">';*/
$i++;
/*echo $arr[$i];*/
$registros=mysql_query("select count(*) as cantidad  from imagenes where id_logueado='$id_usuario'",$conexion) or
  die(
"Problemas en el select:".mysql_error());
  
$reg=mysql_fetch_array($registros);
  
$cantidad=$reg['cantidad'];
  if(
$_POST["img"] > $cantidad)
  { 
    
?><img src="<?php echo $arr[1]; ?>" /><?php 
    
}
else
    {
    
?><img src="<?php echo $arr[$_POST["img"]+1];?>" /><?php 
    
}
?>
y este es el codigo que hace q se pasen las fotos al click
Código PHP:
<script type="text/javascript">
$(document).ready(function()
    {
    $("#click-cambio > img").livequery('click', function ()
         {
        $.post("lib/procesa.php", { img: $(this).attr("rel") }, function(data)
            {
            $("#click-cambio").html(data);
            });
        });
    });
</script>
</head>
<body>

<div id="click-cambio">
    <?php
    $id
=$_GET['id'];
    include(
'config.php');
$resultados=mysql_query("select * from imagenes where id='$id'",$conexion) or 
  die(
"Problemas en el select:".mysql_error());
$i 1;
$arr=array();
  while(
$fot=mysql_fetch_assoc($resultados)) 

$foto_nombre=$fot['nombre'];
$arr=array (=> '<img src="' .$foto_nombre.'" alt="Img ' .$i.'" rel="'.$i.'" />');
}
    echo 
$arr[1];
    unset(
$i);
    
?>
</div>
Nose que mas cambios hacer para que me funcione como funcionaba antes sin base de datos, como lo tengo q acer? gracias.
  #16 (permalink)  
Antiguo 21/02/2012, 09:44
 
Fecha de Ingreso: febrero-2012
Mensajes: 66
Antigüedad: 12 años, 2 meses
Puntos: 10
Respuesta: Duda con valores while

La función livequery que estás utilizando utiliza la propieda rel de las imagenes, por lo que en el archivo procesa.php, cuando imprimes la imagen, debes de poner este atributo.
Código PHP:
Ver original
  1. if($_POST["img"] > $cantidad)
  2.   {
  3.     ?><img src="<?php echo $arr[1]; ?>" rel="1" /><?php
  4.     }
  5. else
  6.     {
  7.     ?><img src="<?php echo $arr[$_POST["img"]+1];?>" rel="<?php echo $arr[$_POST["img"]+1];?>"/><?php
  8.     }


¿Por qué haces esto si solo utilizas la primera imagen?
while($fot=mysql_fetch_assoc($resultados))
{
$foto_nombre=$fot['nombre'];
$arr=array (1 => '<img src="' .$foto_nombre.'" alt="Img ' .$i.'" rel="'.$i.'" />');
}
echo $arr[1];

Sobreescribes la variable $arr en cada ciclo de while, si solo quieres la primera, debeías hacer:
Código PHP:
Ver original
  1. $fot=mysql_fetch_assoc($resultados)) ;
  2. $foto_nombre=$fot['nombre'];
  3. echo $foto;
  #17 (permalink)  
Antiguo 21/02/2012, 15:15
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: Duda con valores while

Lo he hecho tal como digiste pero sige sin funcionar mira este es el codigo:
Código PHP:
<?php
include('../config.php');
$resultados=mysql_query("select * from imagenes where id_logueado='$id_usuario'",$conexion) or 
  die(
"Problemas en el select:".mysql_error());
$i 0;
$arr=array();
$fot=mysql_fetch_assoc($resultados);
$foto_nombre=$fot['nombre'];

$arr= array($i=> $foto_nombre);
echo 
'<img scr="'.$foto_nombre.'">';




$registros=mysql_query("select count(*) as cantidad  from imagenes where id_logueado='$id_usuario'",$conexion) or
  die(
"Problemas en el select:".mysql_error());
  
$reg=mysql_fetch_array($registros);
  
$cantidad=$reg['cantidad'];
  if(
$_POST["img"] == $cantidad)
  { 
    
?><img src="<?php echo $arr[$i]; ?>" rel="$i" /><?php 
    
}
else
    {
     
?><img src="<?php echo $arr[$_POST["img"]+1];?>" rel="<?php echo $arr[$_POST["img"]+1];?>"/><?php 
    
}
echo    
$_POST['img'];
    
$i++;
?>
Ahora no me muestra ninguna imagen de las que antes me mostraba, que es lo que tengo mal??? gracias por la ayuda.

Última edición por edie8; 22/02/2012 a las 04:13

Etiquetas: imagenes, sql, usuarios
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 19:11.