Foros del Web » Programando para Internet » PHP »

"Error" Abusurdo

Estas en el tema de "Error" Abusurdo en el foro de PHP en Foros del Web. Hola, acabo de volver con PHP y recuerdo que yo para validar si existia algun dato en la db y en el caso de existir ...
  #1 (permalink)  
Antiguo 21/12/2014, 20:37
 
Fecha de Ingreso: febrero-2014
Mensajes: 46
Antigüedad: 10 años, 2 meses
Puntos: 1
"Error" Abusurdo

Hola, acabo de volver con PHP y recuerdo que yo para validar si existia algun dato en la db y en el caso de existir crear un while, he probado muchas formas y no me funcionan(Solo de 1 forma)

Código PHP:
<?php
                    
//Buscador de categoria
                    
$category mysqli_query($db"SELECT id,title,imagen,message,category,date FROM news WHERE category = '".mysqli_real_escape_string($dburldecode($_GET['category']))."'");
                    if(
$category1 mysqli_fetch_assoc($category)):
                    
                         while(
$category1 mysqli_fetch_assoc($category)):
                    
?>
                    <article>
                        .....
                    </article>
                    <?php
                        
endwhile;
                    else:
                        
header('Location: /404.html');
                    endif;
Código PHP:
<?php
                    
//Buscador de categoria
                    
$category mysqli_query($db"SELECT id,title,imagen,message,category,date FROM news WHERE category = '".mysqli_real_escape_string($dburldecode($_GET['category']))."'");
                         while(
$category1 mysqli_fetch_assoc($category)):
                    
?>
                    <article>
                        .....
                    </article>
                    <?php
                        
endwhile;
                                 if(!
$category1 mysqli_fetch_assoc($category)):
                        
header('Location: /404.html');
                    endif;

La unica manera que me funciona es haciendo 2 veces la sentencia:
Código PHP:
<?php
                    
//Buscador de categoria
                    
$category mysqli_query($db"SELECT id,title,imagen,message,category,date FROM news WHERE category = '".mysqli_real_escape_string($dburldecode($_GET['category']))."'");
                    if(
$category3 mysqli_fetch_assoc($category)):
                    
                        
$category2 mysqli_query($db"SELECT id,title,imagen,message,category,date FROM news WHERE category = '".mysqli_real_escape_string($dburldecode($_GET['category']))."'");
                         while(
$category1 mysqli_fetch_assoc($category2)):
                    
?>
                    <article>
                        .....
                    </article>
                    <?php
                        
endwhile;
                    else:
                        
header('Location: /404.html');
                    endif;
¿Porque tengo que hacer 2 consultas para que me funcione?
  #2 (permalink)  
Antiguo 22/12/2014, 00:11
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: "Error" Abusurdo

Cita:
¿Porque tengo que hacer 2 consultas para que me funcione?
Porque necesitas volver a leer el manual de la función mysqli_fetch_assoc, conocer a mysqli_num_rows y al iterador do-while.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 22/12/2014, 02:00
 
Fecha de Ingreso: febrero-2014
Mensajes: 46
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: "Error" Abusurdo

Cita:
Iniciado por NSD Ver Mensaje
Porque necesitas volver a leer el manual de la función mysqli_fetch_assoc, conocer a mysqli_num_rows y al iterador do-while.
Sii, es lo primero que hize.

Tambien probe
Código PHP:
<?php
                    
//Buscador de categoria
                    
$category mysqli_query($db"SELECT id,title,imagen,message,category,date FROM news WHERE category = '".mysqli_real_escape_string($dburldecode($_GET['category']))."'");
                    if(
$category):
                    
                         while(
$category1 mysqli_fetch_assoc($category)):
                    
?>
                    <article>
                        .....
                    </article>
                    <?php
                        
endwhile;
                    else:
                        
header('Location: /404.html');
                    endif;
Pero esque no lo hago funcionar. Me podrias decir donde esta el problema?

POSDATA:

Puedes hacerlo asin

Código PHP:
Ver original
  1. if(mysqli_num_rows(...)){
  2.     while(...){
  3.     }
  4. }else{
  5.    //No existe
  6. }

Pero no recuerdo haberlo echo asin nunca
  #4 (permalink)  
Antiguo 22/12/2014, 06:44
 
Fecha de Ingreso: julio-2010
Mensajes: 7
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: "Error" Abusurdo

Mira, como yo siempre lo hago es asi:


Código MySQL:
Ver original
  1. $sql_query = sprintf("select * from tabla");
  2. $sql = mysqli_query($conexion ,$sql_query) or die(mysql_error());
  3. $row_sql = mysqli_fetch_assoc($sql);
  4. $totalRows_sql = mysqli_num_rows($sql);
  5.  
  6. if($totalRows_sql>0){
  7. "Lo que quieras hacer"
  8. }while($row_sql = mysqli_fetch_assoc($sql));
  9. }
  #5 (permalink)  
Antiguo 22/12/2014, 08:17
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: "Error" Abusurdo

A ver, o usas mysqli_num_rows o usas do-while, son dos formas diferentes de hacer lo mismo.

Código PHP:
Ver original
  1. if ($resultado = mysqli_query($link, "SELECT ... FROM ..."))
  2. {
  3.   if(mysqli_num_rows($resultado))
  4.   {
  5.     while($row = mysqli_fetch_assoc($resultado))
  6.     {
  7.       // Lo que quieras
  8.     }
  9.   }
  10.   else
  11.   {
  12.     // No hay resultados
  13.   }
  14. }
  15. else
  16. {
  17. // Error.
  18. }


Código PHP:
Ver original
  1. if ($resultado = mysqli_query($link, "SELECT ... FROM ..."))
  2. {
  3.   if($row = mysqli_fetch_assoc($resultado))
  4.   {
  5.     do
  6.     {
  7.       // Lo que quieras
  8.     } while($row = mysqli_fetch_assoc($resultado));
  9.   }
  10.   else
  11.   {
  12.     // No hay resultados
  13.   }
  14. }
  15. else
  16. {
  17. // Error.
  18. }
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #6 (permalink)  
Antiguo 23/12/2014, 11:40
 
Fecha de Ingreso: febrero-2014
Mensajes: 46
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: "Error" Abusurdo

Pero si utilizo mysqli_num_rows() no puedo imprimir algun dato de la DB

Ejemplo:
Código PHP:
Ver original
  1. if ($resultado = mysqli_query($link, "SELECT ... FROM ...")){
  2.     if($resultado1 = mysqli_num_rows($resultado)){
  3.         echo 'Hola: '.$resultado1['nombre']; //Aqui no mostraria el nombre
  4.         while($row = mysqli_fetch_assoc($resultado)){
  5.             echo 'Hobbit: '.$row['hobbit'];
  6.             // Lo que quieras
  7.         }
  8.     }else{
  9.         echo 'No existe';
  10.         // No hay resultados
  11.     }
  12. }else{
  13.     echo 'Error en la consulta, intentelo de nuevo';
  14.     // Error.
  15. }

Por eso yo utilize mysqli_fetch_assoc();
  #7 (permalink)  
Antiguo 23/12/2014, 12:21
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: "Error" Abusurdo

Cita:
echo 'Hola: '.$resultado1['nombre']; //Aqui no mostraria el nombre
¿Leíste el manual ? No, no mostraría ningún nombre... es un numero no un array lo que retorna.

Y si, ese codigo funciona asi como esta, lo acabo de probar.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #8 (permalink)  
Antiguo 24/12/2014, 12:20
 
Fecha de Ingreso: julio-2010
Mensajes: 7
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: "Error" Abusurdo

Como yo lo escribi, siempre lo utilizo y funciona perfectamente.
  #9 (permalink)  
Antiguo 24/12/2014, 14:42
Avatar de jose_php  
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 9 años, 11 meses
Puntos: 2
Respuesta: "Error" Abusurdo

Espero te sirva...

Código PHP:
Ver original
  1. <?php
  2.     if ($resultado = mysqli_query($link, "SELECT ... FROM ...")){
  3.         $items = mysqli_fetch_array($resultado, MYSQLI_ASSOC);
  4.         if(count($items) <= 0){
  5.             for($i=0; $i<count($items); $i++):
  6.                 echo 'Hobbit: '.$items['hobbit']."<br />";
  7.             endfor;
  8.         } else{
  9.             echo 'No existe';
  10.         }
  11.     }

Etiquetas: html, mysql, select
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 12:51.