Foros del Web » Programando para Internet » PHP »

Problema con funcion

Estas en el tema de Problema con funcion en el foro de PHP en Foros del Web. Hola que tal , Tengo una pequeña duda. Quiero crear esta función y luego retornar el array para poder trabajar con el. Pero por mas ...
  #1 (permalink)  
Antiguo 04/07/2012, 13:34
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Problema con funcion

Hola que tal , Tengo una pequeña duda. Quiero crear esta función y luego retornar el array para poder trabajar con el. Pero por mas que lo intento no me funciona. Ya e probado a poner un bucle y meter los datos en otro array pero eso no me es práctico ya que luego no puedo reutilizar la función.
Código PHP:
function mostrar_localizaciones($columnas,$tabla,$parametro,$movimiento){
       
       
$sql "select\n".$columnas."\nfrom\n".$tabla."\nORDER BY\n".$parametro."\n".$movimiento;
       
$sql mysql_query($sql) or die("No se pudo realizar la consulta");
       
$mostrar mysql_fetch_array($sql));
       return 
$mostrar ;

Código PHP:
Para luego mostrarlo 
$columnas 
="*";
$tabla="localidad";
$parametro="id";
$movimiento="DESC";
while (
$ordenarlo mostrar_localizaciones($columnas,$tabla,$parametro,$movimiento)){
    
    echo 
$ordenarlo[id];
    echo 
$ordenarlo[localidad];
    echo 
$ordenarlo[zona];
    
    
    } 

MUCHAS GRACIAS
  #2 (permalink)  
Antiguo 04/07/2012, 14:09
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con funcion

La verdad, esa función no es necesaria o está mal planeada, porque:

En cada iteración del while() llamas a la función, ejecutando la consulta nuevamente, por lo que siempre te estará devolviendo el mismo resultado y el ciclo nunca finalizará, a menos que la consulta no devuelva registros

Opción 1: Ejecuta la consulta directamente, sin usar esa función

Opción 2: En la función crea un array donde guardarás y devolverás todos los registros encontrados, para recorrerlos posteriormente con foreach()
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 04/07/2012, 14:20
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Problema con funcion

como dice triby para mi al menos la siguiente forma seria mejor..

Código PHP:
Ver original
  1. //Para luego mostrarlo  
  2. $columnas ="*";
  3. $tabla="localidad";
  4. $parametro="id";
  5. $movimiento="DESC";
  6. $resultado = mostrar_localizaciones($columnas,$tabla,$parametro,$movimiento);
  7. foreach ($resultado as $ordenarlo)
  8. {
  9.      
  10.     echo $ordenarlo['id'];
  11.     echo $ordenarlo['localidad'];
  12.     echo $ordenarlo['zona'];
  13. }
  #4 (permalink)  
Antiguo 04/07/2012, 14:21
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con funcion

$ordenarlo = mostrar_localizaciones($columnas,$tabla,$parametro ,$movimiento

while ($ordenarlo)){

echo $ordenarlo[id];
echo $ordenarlo[localidad];
echo $ordenarlo[zona];


}
Tienes razón no caí en eso, de todas maneras de esta forma retornado el array en la función tampoco me funciona.


ok acabo de ver tu post mientras escribía este Muchas gracias a los dos. Lo pruebo y cometo muchas gracias
  #5 (permalink)  
Antiguo 04/07/2012, 15:58
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con funcion

Como dice Triby mejor poner en otro array por que al retornar $mostrar no me retorna el array entero no se por que solo ultima fina repetida.
  #6 (permalink)  
Antiguo 04/07/2012, 17:07
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con funcion

Hola que tal ,sigo sin la solución el archivo donde los muestro es diferente de donde tengo la función. He probado con list a la salida y damas por nada.


Código PHP:
function mostrar_localizaciones($columnas,$tabla,$parametro,$movimiento){
       
       
$sql "select\n".$columnas."\nfrom\n".$tabla."\nORDER BY\n".$parametro."\n".$movimiento;
       
$sql mysql_query($sql) or die("No se pudo realizar la consulta");
       
$mostrar mysql_fetch_array($sql);
       return  array(
$mostrar) ;




Código PHP:
$mostrar mostrar_localizaciones($columnas,$tabla,$parametro,$movimiento);
while(
$mostrar){
    
    echo 
$mostrar[id];
    echo 
$mostrar[localizacion];
    echo 
$mostrar[zona];
    
    
    } 
  #7 (permalink)  
Antiguo 04/07/2012, 17:21
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Problema con funcion

como yo te puse ya deberia de funcionar en caso que tu sentencia sql este correctamente hecho..
  #8 (permalink)  
Antiguo 04/07/2012, 17:34
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con funcion

Pues no, el sql esta bien por que lo e echo con un while dentro de la función con foreach me muestra algo sin sentido me duplica la información. Y no sale completa.

Puedes comprobarlo

Muchas gracias

funciones.php
Código PHP:

function mostrar_localizaciones($columnas,$tabla,$parametro,$movimiento){
       
       
$sql "select\n".$columnas."\nfrom\n".$tabla."\nORDER BY\n".$parametro."\n".$movimiento;
       
$sql mysql_query($sql) or die("No se pudo realizar la consulta");
       
$mostrar mysql_fetch_array($sql);
       return  
$mostrar ;











localizacion.php

Código PHP:
$columnas ="*";
$tabla="localidad";
$parametro="id";
$movimiento="DESC";
$resultado mostrar_localizaciones($columnas,$tabla,$parametro,$movimiento);
foreach (
$resultado as $ordenarlo)


    echo 
$ordenarlo['numero']; 
    echo 
$ordenarlo['localizacion']; 
    echo 
$ordenarlo['zona']; 

  #9 (permalink)  
Antiguo 04/07/2012, 17:41
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Problema con funcion

mostrame con una imagen como sale.. el resultado que tienes...

por que no lo colocas asi esta parte

Código PHP:
Ver original
  1. $sql = "select $columnas from $tabla ORDER BY $parametro  $movimiento";
  #10 (permalink)  
Antiguo 04/07/2012, 17:58
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con funcion

id numero localizacion zona
1 1 madrid A
2 2 paris B
3 22 VINOS A





no se de donde saca la I

333333222222IIIIIIAAAAAA
  #11 (permalink)  
Antiguo 04/07/2012, 18:35
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Problema con funcion

Cita:
Iniciado por luisalberti Ver Mensaje
id numero localizacion zona
1 1 madrid A
2 2 paris B
3 22 VINOS A





no se de donde saca la I

333333222222IIIIIIAAAAAA
tu tabla seria el de arriba verdad y el resultado el que pones abajo?

si haces desde el phpmyadmin el mismo select sale el resltado que quieres?
  #12 (permalink)  
Antiguo 04/07/2012, 19:19
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con funcion

A ver... tu función debe devolver un array que después puedas recorrer con foreach(), ejemplo:

Código PHP:
Ver original
  1. function devuelve_array(/* aquí las variables que necesites */) {
  2.         $ret = array(); // Inicializas el "contenedor"
  3.         $res = mysql_query(/* aquí tu consulta */) or die(mysql_error());
  4.         while($row = mysql_fetch_assoc($res)) {
  5.              $ret[] = $row; // Agregas el registro al array
  6.         }
  7.         // Finalmente, devuelves todo lo que obtuviste
  8.         return $ret;
  9. }
  10.  
  11. // Ahora para mostrarlo, primero obtienes los resultados
  12. $mostrar = devuelve_array(/* aquí las variables que necesites */);
  13.  
  14. // Luego recorres el array
  15. foreach($mostrar as $ordenados) {
  16.         // Aquí los muestras como mejor te convenga
  17. }
__________________
- León, Guanajuato
- GV-Foto
  #13 (permalink)  
Antiguo 05/07/2012, 12:44
 
Fecha de Ingreso: septiembre-2011
Mensajes: 176
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con funcion

ok era eso hay que hay que pasar el array por el bucle para que se inserten todos los datos y luego mostrar. OK Triby tenia tu post en mente desde el principio era pensé que se pidia pasar sin tener que hacer el bucle.

GRACIAS A TODOS

OK
Código PHP:
$columnas ="*";
$tabla="localidad";
$parametro="id";
$movimiento="DESC";
$resultado mostrar_localizaciones($columnas,$tabla,$parametro,$movimiento);
foreach (
$resultado as $ordenarlo)

    echo 
$ordenarlo['numero']; 
    echo 
$ordenarlo['localizacion']; 
    echo 
$ordenarlo['zona']; 
}
    

function 
mostrar_localizaciones($columnas,$tabla,$parametro,$movimiento){
       
//Array a devolver contenedo a devolver
       
$resultado = array(); 
       
//$sql = "select\n".$columnas."\nfrom\n".$tabla."\nORDER BY\n".$parametro."\n".$movimiento;
       
$sql "select $columnas from $tabla ORDER BY $parametro  $movimiento";
       
$sql mysql_query($sql) or die("No se pudo realizar la consulta");
        while(
$row mysql_fetch_assoc($sql)) {
             
$resultado[] = $row
        }
        
// Finalmente, devuelves todo lo que obtuviste
        
return $resultado;
       


Etiquetas: funcion, mysql, sql, tabla
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:16.