Foros del Web » Programando para Internet » PHP »

Result set que solo muestra un registro

Estas en el tema de Result set que solo muestra un registro en el foro de PHP en Foros del Web. Saludos, tengo una funcion que recoge los campos de texto y los muestra como comentarios, pero resulta que solo me nuestra uno solo. Supongo que ...
  #1 (permalink)  
Antiguo 08/10/2011, 10:44
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 5 meses
Puntos: 4
Result set que solo muestra un registro

Saludos, tengo una funcion que recoge los campos de texto y los muestra como comentarios, pero resulta que solo me nuestra uno solo. Supongo que es por el parametro que se paso, porque tengo una funcion casi identica (sin parametros) que funciona correctamente.

Código PHP:
<div id="Panel_Comentarios" align="center" >
<h1>Comentarios de la pagina</h1>
        <?php 
        $id_amigo 
$_GET["id"]; 
        
mostrarComentarios($id_amigo); //la funcion que recibe el codigo 
        
?>
</div>
Código PHP:
function mostrarComentarios($publicante){
    
$sql "select * from facebook.opiniones where Publicante = $publicante";

//Aqui traigo todos los comentarios que se hicieron en el perfil del usuario. (Cuando se le da click a la foto de ese usuario en una pagina anterior, se redirige al perfil de ese usuario, y cuando los comentarios se graban, se guarda el codigo del perfil en el cual se comenta. Asi que traigo todos los comentarios guardados en ese perfil, y abajo los recorro.  

    
$resultados mysql_query($sql);
    
    while(
$fila mysql_fetch_array($resultados)){
        echo 
"
    
            <div id='Comentario' align='center'>
                <img class='img_margin' width='70' height=70 align='left' src='files/{$fila['0']}' />
                {$fila['1']} dice: </br>
                <span class='texto_comentario'>{$fila['2']} </span></br>
                <small class='fecha'> Publicado {$fila['3']}</small>
            </div>

        "
;
    }

Entonces selecciono los datos que quiero de esa fila, pero solo me entrega una fila, y el proposito es que salgan todos los comentarios hechos en ese perfil. Cuando reviso la base de datos, los comentarios se guardan bien, pero cuando los recorro paramostrarlo, solo muestra uno. ¿Alguien identifica el problema?
  #2 (permalink)  
Antiguo 08/10/2011, 15:21
 
Fecha de Ingreso: octubre-2011
Ubicación: USA
Mensajes: 166
Antigüedad: 13 años, 2 meses
Puntos: 19
Respuesta: Result set que solo muestra un registro

Comparar con texto es muy complicado porque nunca sabes como las personas escribiran por ejemplo esta palabra es distinta a estapalabra ya el espacio enblanco hace las cadenas diferentes trata de cambiar tu consulta por esta

Código PHP:
Ver original
  1. $sql = "select * from facebook.opiniones where Publicante like '%$publicante%'";

otra cosa que note es que deberias poner el parametro entre ' ' simples.

Saludos
  #3 (permalink)  
Antiguo 08/10/2011, 20:39
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Result set que solo muestra un registro

Gracias por responder. El publicante es realmente un mal nombre de variable, porque no se refiere a quien publica, sino al perfil de la persona en la que se escribira el comentario. Es simplemente el id del perfil, asi puedo llamar todos los comentarios que se hicieron en ese perfil. Como es un integer, no hay que usar like, la sentencia sql funciona bien cuando la pruebo en la base de datos, el problema esta en que solo me muestra 1 solo comentario.
  #4 (permalink)  
Antiguo 09/10/2011, 10:23
 
Fecha de Ingreso: octubre-2011
Ubicación: USA
Mensajes: 166
Antigüedad: 13 años, 2 meses
Puntos: 19
Respuesta: Result set que solo muestra un registro

Si disculpa yo entendi mal la pregunta, la consulta parece estar bien eh estado mirando y no encuentro nada, dime una cosa cuando prueba la consulta directo en el server, te devuelve varios resultados?
  #5 (permalink)  
Antiguo 10/10/2011, 09:03
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Result set que solo muestra un registro

Si, me devuelve todos los resultados de los comentarios que he realizado en el perfil de ese usuario. Pero solo me muestra el ultimo comentario.
  #6 (permalink)  
Antiguo 10/10/2011, 09:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Result set que solo muestra un registro

Si haces un mysql_num_rows() de tu variable $resultados, ¿que valor obtienes?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 10/10/2011, 10:30
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Result set que solo muestra un registro

Cada vez que agrego un comentario, el valor aumenta. Eso funciona bien.


Código PHP:
Ver original
  1. function mostrarComentarios($publicante){
  2.     $sql = "select * from facebook.opiniones where Publicante = $publicante";
  3.     $resultados = mysql_query($sql);
  4.     $row = mysql_num_rows($resultados);
  5.     echo "$row";
  #8 (permalink)  
Antiguo 10/10/2011, 10:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Result set que solo muestra un registro

Pues entonces el error viene de otro lado, pues si el número siempre aumenta el bucle no debería fallar.

En el código HTML generado, ¿de verdad que no se muestra todo como lo esperas?

No tiene sentido tu asunto, de verdad, si mysql_num_rows() sirve no veo porque debería fallar el bucle.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 10/10/2011, 11:18
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Result set que solo muestra un registro

Si, me muestra el comentario como deberia hacerlo, pero solo uno.

Acabo de ver donde podria estar el problema. En el codigo php que puse arriba, le aplico un estilo al div donde estara el comentario.

Código PHP:
Ver original
  1. function mostrarComentarios($publicante){
  2.     $sql = "select * from facebook.opiniones where Publicante = $publicante";
  3.  
  4.     $resultados = mysql_query($sql);
  5.    
  6.     while($fila = mysql_fetch_array($resultados)){
  7.         echo "
  8.    
  9.            <div[U][B][I] id='Comentario'[/I][/B][/U] align='center'>
  10.                <img class='img_margin' width='70' height=70 align='left' src='files/{$fila['0']}' />
  11.                {$fila['1']} dice: </br>
  12.                <span class='texto_comentario'>{$fila['2']} </span></br>
  13.                <small class='fecha'> Publicado {$fila['3']}</small>
  14.            </div>
  15.  
  16.        ";
  17.     }
  18. }

Cuando quite el estilo, entonces me mostro todos los comentarios que habia hecho en esa tabla, si lo pongo de nuevo, me muestra el estilo que le aplique, pero nuevamente un comentario. Sin embargo, es necesario aplicar el estilo porque se muestra todo de una manera inentendible. Alguna sugerencia? Tendre que ir al foro de css o esto corresponde al codigo php.

Última edición por sterlingdiazd; 10/10/2011 a las 11:36
  #10 (permalink)  
Antiguo 10/10/2011, 11:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Result set que solo muestra un registro

Necesito que pruebes esto y nos muestres los resultados:
Código PHP:
$sql "select * from facebook.opiniones where Publicante = $publicante";
$resultados mysql_query($sql);

echo 
'Resultados: 'mysql_num_rows($resultados);

 while(
$fila mysql_fetch_array($resultados)){
  echo 
"<p>$fila[1]</p>";

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 10/10/2011, 11:39
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Result set que solo muestra un registro

Si, me muestra el comentario como deberia hacerlo, pero solo uno.

Acabo de ver donde podria estar el problema. En el codigo php que puse arriba, le aplico un estilo al div donde estara el comentario.


Cita:
function mostrarComentarios($publicante){
$sql = "select * from facebook.opiniones where Publicante = $publicante";

$resultados = mysql_query($sql);

while($fila = mysql_fetch_array($resultados)){
echo "

<div id='Comentario' align='center'>
<img class='img_margin' width='70' height=70 align='left' src='files/{$fila['0']}' />
{$fila['1']} dice: </br>
<span class='texto_comentario'>{$fila['2']} </span></br>
<small class='fecha'> Publicado {$fila['3']}</small>
</div>

";
}
}
Cuando quite el estilo, entonces me mostro todos los comentarios que habia hecho en esa tabla, si lo pongo de nuevo, me muestra el estilo que le aplique, pero nuevamente un comentario. Sin embargo, es necesario aplicar el estilo porque se muestra todo de una manera inentendible. Alguna sugerencia? Tendre que ir al foro de css o esto corresponde al codigo php.
  #12 (permalink)  
Antiguo 10/10/2011, 11:52
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Result set que solo muestra un registro

Cita:
Iniciado por pateketrueke Ver Mensaje
Necesito que pruebes esto y nos muestres los resultados:
Código PHP:
$sql "select * from facebook.opiniones where Publicante = $publicante";
$resultados mysql_query($sql);

echo 
'Resultados: 'mysql_num_rows($resultados);

 while(
$fila mysql_fetch_array($resultados)){
  echo 
"<p>$fila[1]</p>";

Aqui puedes ver lo que me arroja.
  #13 (permalink)  
Antiguo 10/10/2011, 11:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Result set que solo muestra un registro

Pues ya lo haz dicho, si eliminas el id (no son estilos) del tag de tus comentarios entonces muestra todos, pero no es problema de PHP sino de tus hojas de CSS.

Recuerda que los ids deben ser únicos, y por ende, al repetir todo en un bucle dichos ids no son únicos.

Lo mejor es que aprendas a notar la diferencia, llevas todo un tema echando la culpa a PHP y finalmente resulto que era problema de los CSS.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 10/10/2011, 12:02
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Result set que solo muestra un registro

Sorry, y gracias por la ayuda. Espero no eliminen este tima ya que puede servir a otros. He intentado poniendo el estilo comouna clase, pero ocurre lo mismo. En php, como puedo hacer para aplicarle el estilo?
  #15 (permalink)  
Antiguo 10/10/2011, 12:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Result set que solo muestra un registro

Cita:
Iniciado por sterlingdiazd Ver Mensaje
Sorry, y gracias por la ayuda. Espero no eliminen este tima ya que puede servir a otros. He intentado poniendo el estilo comouna clase, pero ocurre lo mismo. En php, como puedo hacer para aplicarle el estilo?
Sigues confundiendo conceptos, a PHP no le interesa si usas clases o ids, simplemente va a imprimir lo que tu le indiques.

Así pues, el problema es de tus reglas de CSS y con PHP no puedes corregirlas.

Sería bueno entonces conocer como son tus reglas de estilo, y así poder ver lo que no sabemos a ciencia cierta de cuales reglas de CSS estás empleando.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #16 (permalink)  
Antiguo 10/10/2011, 12:29
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Result set que solo muestra un registro

Este es el codigo HTML debajo del formulario para introducir el comentario

Código HTML:
Ver original
  1. <div id="Panel_Comentarios" align="center" >
  2. <h1>Comentarios de la pagina</h1>
  3.         <div id="Comentario" align="center">
  4.         <?php
  5.         $id_amigo = $_GET["id"];
  6.         mostrarComentarios($id_amigo);
  7.        ?>
  8.         </
  9. </div>

Este es el estilo css del panel donde se ejecuta la funcion mostrarComentarios() visto arriba

Código CSS:
Ver original
  1. #Panel_Comentarios{
  2.     width:67%;
  3.     overflow:auto;
  4.     position: relative;
  5.     left: 331px;
  6.     top: -530px;
  7.     height: 350px;
  8.     background-image: url(../images/hubble-eagle-nebula-wide-field-04086y.jpg);
  9.  
  10. }

Y este es el estilo que se aplica dentro de la funcion php (Debajo muestro donde es que la llamo)

Código CSS:
Ver original
  1. #Comentario{
  2.     position: absolute;
  3.     width:95%;
  4.     text-align:left;
  5.     font-weight:bold;
  6.     background-color: #111;
  7.     /*  background: url(../images/fondo.jpg);*/
  8.     padding-top:10px;
  9.     margin-right:10px;
  10.     padding-left:10px;
  11.     padding-bottom:10px;
  12.     margin:10px;
  13.     height: 120px;
  14.     overflow: auto;
  15.     border: solid 1px #333;
  16.     top: 30px;
  17. }

Aqui esta la funcion:

Cita:
function mostrarComentarios($publicante){
$sql = "select * from facebook.opiniones where Publicante = $publicante";
$resultados = mysql_query($sql);
$filas = mysql_num_rows($resultados);


while($fila = mysql_fetch_array($resultados)){
echo " <div class='Comentario' align='center'>";

echo "<img class='img_margin' width='70' height=70 align='left' src='files/{$fila['0']}' />
{$fila['1']} dice: </br>
<span class='texto_comentario'>{$fila['2']} </span></br>
<small class='fecha'> Publicado {$fila['3']}</small>

";

echo "</div>";
}

}
  #17 (permalink)  
Antiguo 10/10/2011, 12:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Result set que solo muestra un registro

Está claro cual es el problema:
Cita:
position: absolute;
Si hay varios contenedores nombrados igual, con el mismo estilo, solo se muestra el último, pues lo demás quedan debajo.

Deberías tomar un curso extra de CSS.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #18 (permalink)  
Antiguo 10/10/2011, 12:37
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Result set que solo muestra un registro

Gracias. Voy a volver a estudiar eso. Puse absolute para poder ubicarlo bien y rapido, pero lo volvere a poner relativo. Una pregunta, si lo pongo relativo, ¿puedo utilizar el estilo?
Estaba revisando una practica anterior que habia hecho, y use de la misma manera el id en una funcion (me base en esa practica para esta), y muestra todos los comentarios bien con el id.
  #19 (permalink)  
Antiguo 10/10/2011, 12:39
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Result set que solo muestra un registro

¡¡¡GRACIAS funciono perfectamente! Tenia varios dias en esto, y creo que jamas hubiera descubierto la causa, y finalmente lo hubiera dejado asi de no ser por tu ayuda. GRACIAS!!
  #20 (permalink)  
Antiguo 10/10/2011, 12:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Result set que solo muestra un registro

Mas bien debes entender la diferencia entre ambos valores, en cierto punto no considero que sea necesario que especifiques la posición de los contenedores pues se irán acomodando de forma "natural".

En casos bastante específicos es cuando debes usar dichas reglas, que a mi parecer, se consideran de nivel medio o avanzado.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #21 (permalink)  
Antiguo 10/10/2011, 13:05
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Result set que solo muestra un registro

Bueno el tema se corrigio eso creo pero voy a dar mi opinion (corriganme si me equivoco)
Código PHP:
function mostrarComentarios($publicante){
    
$sql "select * from facebook.opiniones where Publicante = $publicante";

//Aqui traigo todos los comentarios que se hicieron en el perfil del usuario. (Cuando se le da click a la foto de ese usuario en una pagina anterior, se redirige al perfil de ese usuario, y cuando los comentarios se graban, se guarda el codigo del perfil en el cual se comenta. Asi que traigo todos los comentarios guardados en ese perfil, y abajo los recorro.  

    
$resultados mysql_query($sql);
    
    while(
$fila mysql_fetch_array($resultados)){
        echo 
"
    
            <div id='Comentario' align='center'>
                <img class='img_margin' width='70' height=70 align='left' src='files/{$fila['0']}' />
                {$fila['1']} dice: </br>
                <span class='texto_comentario'>{$fila['2']} </span></br>
                <small class='fecha'> Publicado {$fila['3']}</small>
            </div>

        "
;
    }

en tu WHILE mandas a mostrar una capa que tiene ID="comentario" ahora bien en programacion hasta donde se mas de 1 objeto no puede tener el mismo ID, cierto??? o no para tu while que se crearan varias capas no deberia ser algo asi:

Código PHP:
function mostrarComentarios($publicante){
    
$sql "select * from facebook.opiniones where Publicante = $publicante";

//Aqui traigo todos los comentarios que se hicieron en el perfil del usuario. (Cuando se le da click a la foto de ese usuario en una pagina anterior, se redirige al perfil de ese usuario, y cuando los comentarios se graban, se guarda el codigo del perfil en el cual se comenta. Asi que traigo todos los comentarios guardados en ese perfil, y abajo los recorro.  

    
$resultados mysql_query($sql);
    
    while(
$fila mysql_fetch_array($resultados)){
        echo 
"
    
            <div class='Comentario' align='center'>
                <img class='img_margin' width='70' height=70 align='left' src='files/{$fila['0']}' />
                {$fila['1']} dice: </br>
                <span class='texto_comentario'>{$fila['2']} </span></br>
                <small class='fecha'> Publicado {$fila['3']}</small>
            </div>

        "
;
    }

cambiando ID por CLASS? nose pero una vez me paso lo mismo y fue porq llame varias veces un objeto con el mismo nombre, Bueno si me equivoco haganmelo saber...
  #22 (permalink)  
Antiguo 10/10/2011, 13:26
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Result set que solo muestra un registro

Asi es, segun aprendi de pateketrueke, uno de mis errores era ese , gracias JuJoGuAl!

Etiquetas: muestra, mysql, registro, result, set, 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 20:13.