Foros del Web » Programando para Internet » PHP »

Problema estupido con mysqli_fetch_array - No me muestra resultados.

Estas en el tema de Problema estupido con mysqli_fetch_array - No me muestra resultados. en el foro de PHP en Foros del Web. Buenos dias/noches/tardes (depende de donde os encontreis). Tengo un problemilla bastante tonto con el mysqli_fetch_array. Tengo por un lado el php con la conexion a ...
  #1 (permalink)  
Antiguo 12/03/2015, 03:15
Avatar de vladisfc  
Fecha de Ingreso: marzo-2015
Ubicación: Sevilla
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Pregunta Problema estupido con mysqli_fetch_array - No me muestra resultados.

Buenos dias/noches/tardes (depende de donde os encontreis).

Tengo un problemilla bastante tonto con el mysqli_fetch_array.

Tengo por un lado el php con la conexion a la BBDD.

mysqli.php
Código PHP:
<?php
    $host_name  
"db556915620.db.1and1.com";
    
$database   "db556915620";
    
$user_name  "dbo556915620";
    
$password   "****";

    
$conexion mysqli_connect($host_name$user_name$password$database);
    if (
mysqli_connect_errno())
    {
    echo 
"Error al conectar con servidor MySQL: " mysqli_connect_error();
        exit();
    
    }
    else{
    
mysqli_query ("SET NAMES 'utf8'");
    }
?>
Y por el otro tengo el php de lo que seria el index.
Que para simplificar pondré solo el trozo de php y evitaré el html para ocupar menos espacio(aparte de que no tengo mas codigo php en la pagina.)

Para poneros en situacion lo que quiero hacer con el codigo php / mysqli_fetch_array es que me muestre articulos, con su titulo y parte del comienzo del articulo(se que seria con un substr y previamente un if con un strlen > 100 por ejemplo).

php del index.php en el cual logicamente tengo en la 1ª linea un include al mysqli.php
Código PHP:
<?php
                $consulta
=("select * from articulos order by fecha_articulo DESC");
                
                
$res=mysqli_query($conexion,$consulta);
                
                
var_dump($res);    
                
            while(
$fila=mysqli_fetch_array($res)){
                    echo 
$fila['titulo_articulo'],$fila['texto_articulo'];
                    
                }
                    
mysqli_free_result($res);

            
?>
El var_dump me muestra null, no se porque :-/

Muchas gracias por adelantado y un saludo.
  #2 (permalink)  
Antiguo 12/03/2015, 03:19
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Respuesta: Problema estupido con mysqli_fetch_array - No me muestra resultados.

Hola.

Lo que veo es que pones en el mysqli_fetch_array el titulo del campo de la BD, con lo que no te funcionará, tendría que cambiarlo por un valor numérico, en tu caso: $fila[0] (o el 1, el 2, el 3, etc)
Si quieres usar el titulo del campo, debes de usar mysql_fetch_assoc(), asi si te funcionaría en tu ejemplo, quedando
while($fila=mysqli_fetch_assoc($res)){

Saludos.
  #3 (permalink)  
Antiguo 12/03/2015, 03:33
Avatar de vladisfc  
Fecha de Ingreso: marzo-2015
Ubicación: Sevilla
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Problema estupido con mysqli_fetch_array - No me muestra resultados.

Cita:
Iniciado por gogupe Ver Mensaje
Hola.

Lo que veo es que pones en el mysqli_fetch_array el titulo del campo de la BD, con lo que no te funcionará, tendría que cambiarlo por un valor numérico, en tu caso: $fila[0] (o el 1, el 2, el 3, etc)
Si quieres usar el titulo del campo, debes de usar mysql_fetch_assoc(), asi si te funcionaría en tu ejemplo, quedando
while($fila=mysqli_fetch_assoc($res)){

Saludos.
Buenas, primeramente gracias por tu respuesta.

Pero segun tengo entendido el fetch_array, puede utilizar tanto numerico, como asociativo, inclusivo mezclandolos en la misma sentencia.
por ejemplo
Código PHP:
 echo $fila['titulo_articulo'],$fila[1]; 
Con lo que la unica diferencia de usar los otros dos(assoc o row) seria la rapidez frente al fetch_array.

Igualmente lo he provado como tu me has dicho y sigue sin soltarme resultados y me sigue dandome null en el var_dum.

Saludos.
  #4 (permalink)  
Antiguo 12/03/2015, 04:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema estupido con mysqli_fetch_array - No me muestra resultados.

Que no haya habido un error no implica que haya devuelto datos. No es lo mismo.
Verifica si devuelve registros, y en especial si esta devolviendo algún mensaje de error. Ni siquiera le pones un or die ()
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 12/03/2015, 04:57
Avatar de vladisfc  
Fecha de Ingreso: marzo-2015
Ubicación: Sevilla
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Problema estupido con mysqli_fetch_array - No me muestra resultados.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Que no haya habido un error no implica que haya devuelto datos. No es lo mismo.
Verifica si devuelve registros, y en especial si esta devolviendo algún mensaje de error. Ni siquiera le pones un or die ()
Buenas, gracias por la ayuda, pero sigo igual =(.

Ya le añadi el or die
Código PHP:
                $res=mysqli_query($conexion,$consulta) or die (mysqli_error($conexion)); 
Y efectivamente "muere".
En phpmyadmin la consulta si me devuelve registros.

He probado poniendo esto por si acaso (para eliminar cosas) y me lanza 0 como codigo de error.
Código PHP:
                if (!mysqli_query($conexion,$consulta)) {
    
printf("Errorcode: %d\n"mysqli_errno($conexion));

saludos y gracias.

Última edición por vladisfc; 12/03/2015 a las 05:06
  #6 (permalink)  
Antiguo 12/03/2015, 05:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema estupido con mysqli_fetch_array - No me muestra resultados.

Hagamos un cambio en tu primer script, para hacer algo más ortodoxo:
Código PHP:
Ver original
  1. <?php
  2.     $host_name  = "db556915620.db.1and1.com";
  3.     $database   = "db556915620";
  4.     $user_name  = "dbo556915620";
  5.     $password   = "****";
  6.  
  7.     $conexion = mysqli_connect($host_name, $user_name, $password, $database);
  8.     if(!$conexion) // confirmamos directamente la conexión, no funciones de error aún.
  9.     {
  10.     echo "Error al conectar con servidor MySQL: " . mysqli_connect_error();
  11.     exit();
  12.     }
  13.     else{
  14.     mysqli_query ("SET NAMES 'utf8'");
  15.  
  16.     }
  17. ?>

Y en este otro, verifiquemos algo:
Código PHP:
Ver original
  1. <?php
  2.   $consulta= "select * from articulos order by fecha_articulo DESC";
  3.   $res=mysqli_query($conexion, $consulta);
  4.   if(!$res)
  5.     { echo "Error al ejecutar consulta: ". mysqli_error($conexion);
  6.        exit;
  7.     }
  8.   else{
  9.          echo "Total de filas recuperadas: ".mysqli_num_rows($res);
  10.           var_dump($res);    
  11.           while($fila=mysqli_fetch_array($res))
  12.                  {
  13.                  echo $fila['titulo_articulo'],$fila['texto_articulo'];
  14.                 }
  15.            mysqli_free_result($res);
  16.  ?>

Lo que evidentemente no tiene sentido es que devuelva nulo, pero sería interesante ver si el rpoblema se origina en que en algún punto estés "pisando" la variable $conexion. Es una rara pero no imposible posibilidad.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 12/03/2015, 10:12
Avatar de vladisfc  
Fecha de Ingreso: marzo-2015
Ubicación: Sevilla
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Problema estupido con mysqli_fetch_array - No me muestra resultados.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Hagamos un cambio en tu primer script, para hacer algo más ortodoxo:
Código PHP:
Ver original
  1. <?php
  2.     $host_name  = "db556915620.db.1and1.com";
  3.     $database   = "db556915620";
  4.     $user_name  = "dbo556915620";
  5.     $password   = "****";
  6.  
  7.     $conexion = mysqli_connect($host_name, $user_name, $password, $database);
  8.     if(!$conexion) // confirmamos directamente la conexión, no funciones de error aún.
  9.     {
  10.     echo "Error al conectar con servidor MySQL: " . mysqli_connect_error();
  11.     exit();
  12.     }
  13.     else{
  14.     mysqli_query ("SET NAMES 'utf8'");
  15.  
  16.     }
  17. ?>

Y en este otro, verifiquemos algo:
Código PHP:
Ver original
  1. <?php
  2.   $consulta= "select * from articulos order by fecha_articulo DESC";
  3.   $res=mysqli_query($conexion, $consulta);
  4.   if(!$res)
  5.     { echo "Error al ejecutar consulta: ". mysqli_error($conexion);
  6.        exit;
  7.     }
  8.   else{
  9.          echo "Total de filas recuperadas: ".mysqli_num_rows($res);
  10.           var_dump($res);    
  11.           while($fila=mysqli_fetch_array($res))
  12.                  {
  13.                  echo $fila['titulo_articulo'],$fila['texto_articulo'];
  14.                 }
  15.            mysqli_free_result($res);
  16.  ?>

Lo que evidentemente no tiene sentido es que devuelva nulo, pero sería interesante ver si el rpoblema se origina en que en algún punto estés "pisando" la variable $conexion. Es una rara pero no imposible posibilidad.
Gracias de nuevo por la ayuda prestada.

He puesto todo tal como me dijistes y me suelta "Error al ejecutar consulta:", pero no dice el error.

Yo estoy ya quedandome loco

saludos
  #8 (permalink)  
Antiguo 12/03/2015, 10:42
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema estupido con mysqli_fetch_array - No me muestra resultados.

Toma en el código de error generado por mysqli_error($conexion) y busca su significado en el manual de MySQL.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 12/03/2015, 10:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema estupido con mysqli_fetch_array - No me muestra resultados.

Cita:
Iniciado por vladisfc Ver Mensaje
Gracias de nuevo por la ayuda prestada.

He puesto todo tal como me dijistes y me suelta "Error al ejecutar consulta:", pero no dice el error.

Yo estoy ya quedandome loco

saludos
Pues probemos algo...
Código PHP:
<?php
 
if(!$conexion)
{echo 
"La conexión no está activa";
}
else{
  
$consulta"select * from articulos order by fecha_articulo DESC";
  
$res=mysqli_query($conexion$consulta);
  if(!
$res)
    { echo 
"Error al ejecutar consulta: "mysqli_error($conexion);
       exit;
    }
  else{
         echo 
"Total de filas recuperadas: ".mysqli_num_rows($res);
          
var_dump($res);    
          while(
$fila=mysqli_fetch_array($res))
                 {
                 echo 
$fila['titulo_articulo'],$fila['texto_articulo'];
                }
           
mysqli_free_result($res);
}
}
 
?>
Esto es lo que se llamaría "ir debuggeando los problemas"...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 12/03/2015, 12:26
Avatar de vladisfc  
Fecha de Ingreso: marzo-2015
Ubicación: Sevilla
Mensajes: 6
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Problema estupido con mysqli_fetch_array - No me muestra resultados.

No iba muy desencamiado con el titulo de problema estupido ... era por los include.

EDIT: Solucionado tambien.
cogi el 2º sql, y lo puse arriba cambiandole el usuarios.nombre_completo por *

Código PHP:
$consulta2=("select usuarios.nombre_completo from usuarios, articulos, articulos_usuarios where articulos.id_articulo = articulos_usuarios.id_articulo and usuarios.id_usuario = articulos_usuarios.id_usuario order by articulos.fecha_articulo desc");   

cambiado a select from usuariosarticulosarticulos_usuarios where articulos.id_articulo articulos_usuarios.id_articulo and usuarios.id_usuario articulos_usuarios.id_usuario order by articulos.fecha_articulo desc

y quitando el segundo fetch_array y poniendo en ese 3er 
echo echo $fila[nombre_completo]; 

Ahora me surge otra duda/problema, la web es esta.
http://freementos.org/alphamentos/index.php

El 1er fetch array me lo hace bien, ahora como podria hacer para que el usuario autor que ha escrito el articulo me aparezca bien, y no me aparezcan los 2 seguidos y repetidos por cada articulo.

Estoy probando formas de hacerlo pero no termino de dar con la tecla.

Os pego el PHP.

Código PHP:
<?php
                $consulta
"select * from articulos order by fecha_articulo DESC";
                
$res=mysqli_query($conexion$consulta);
                
                if(!
$res){
                     echo 
"Error al ejecutar consulta: "mysqli_error($conexion);
                      exit;
                   }
                  else{
                    
// echo "Total de filas recuperadas: ".mysqli_num_rows($res);
                      //var_dump($res);    
                      
                      
while($fila=mysqli_fetch_array($res)){
                      
            
?>
            <div class="col-md-11">
            <!-- titulo del artículo -->    
            <a href class="aa titulo-articulo">    
                <h3>
                    <?php
                        
echo $fila['titulo_articulo'];                    
                    
?>
                </h3>    
            </a>
          
            <!-- 400 primeros carácters del artículo -->
            <div class="resume">
                <p>
                    <?php
                    
                    
if (strlen(($fila['texto_articulo'])) > 400){
                            echo 
substr($fila['texto_articulo'], 0400)." ... "
                        }
                    
?>

                </h3>                       
                </p>
            </div>
        
            <!-- foto / nombre / leer más / votar-->
            <div class="row" id="describer">
                <div class="col-xs-2 col-md-1">
                    <a href="#">
                        <div id="profile-letter" class="badge center-block">P</div>
                    </a>
<!-- SI HAY FOTO DE PERFIL, ESTE ES EL CÓDIGO <img class="img-circle center-block profile-pic" src="img/profile.png">
--> 
                </div>
                <!-- 
                    Nombre completo del usuario
                    -->
                <div class="col-xs-10 col-md-11" id="name-text">
                    <a class="aa" href="#">
                        <?php
                         
                         
                            $consulta2
=("select usuarios.nombre_completo from usuarios, articulos, articulos_usuarios where articulos.id_articulo = articulos_usuarios.id_articulo and usuarios.id_usuario = articulos_usuarios.id_usuario order by articulos.fecha_articulo desc");                       
                               
$res2=mysqli_query($conexion$consulta2);                                
                            while(
$fila2=mysqli_fetch_array($res2)){
                            
                                echo 
$fila2[0];        
                                
                            }
                                            
                           
?>
                    </a>
                                        
                </div>
                
                <div class="col-xs-10 col-md-11">
                    <a href="articulo.html">Leer más</a>
                    <a class="glyphicon glyphicon-heart-empty" href="#"></a>

                </div>    
            </div>
            

        </div> 
        <hr class="entre-articulos pull-left"> 
        <?php
                
}
                       
mysqli_free_result($res);
              }
        
?>
        
        <!-- final del loop del artículo -->    
            
        </div>

Última edición por vladisfc; 12/03/2015 a las 12:46

Etiquetas: mysqli, mysql_fetch_array
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 06:49.