Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Devolver valor a la vista desde una busqueda en funcion

Estas en el tema de Devolver valor a la vista desde una busqueda en funcion en el foro de PHP en Foros del Web. saludos compañeros espero me puedan ayudar con la siguiente inquietud la siguiente vista en donde mando a buscar unos datos en la bd para mostarlo ...
  #1 (permalink)  
Antiguo 05/05/2015, 07:23
 
Fecha de Ingreso: julio-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 0
Devolver valor a la vista desde una busqueda en funcion

saludos compañeros espero me puedan ayudar con la siguiente inquietud

la siguiente vista en donde mando a buscar unos datos en la bd para mostarlo en la misma vista
Código PHP:
   <fieldset data-uk-margin>
        <legend> Busqueda de Solicitudes</legend>
        <form method="POST" action="tipsolicitud.php">

        <input name="bus" type="text">
        <input type="submit" name="guardar" value="Buscar" class="uk-button uk-button-primary" >

</form>

    </fieldset>

    <?php
    
if (isset($_POST["guardar"])=="Buscar") {
        include 
'soliclass.php';
        
$ingreso=new Solicitud(); 
        
$ingreso->consultar_datos_del_usuario($_POST['bus']); 

            
?>

<?php
var_dump
($articulos); 
 foreach (
$articulos as $articulo): ?>
  <tr>
    <td><?php echo $articulo['solicitud'?></td>
    <td><?php echo $articulo['titulo'?></td>
  </tr>
<?php endforeach; ?>


            <?php
            
# code...
           
       
}
        
?>

    </div>
y en mi otro archivo de las clases de php tengo el siguiente archivo donde hago la busquedad y
reenvio la informacion a la vista pero no me mada ningun dato

Código PHP:

  
public function consultar_datos_del_usuario(){

 
$articulos = array();
                
  
$bus=mysql_query("SELECT * FROM tipsolicitud");

   

                
          
  while (
$fila mysql_fetch_array($bus))
  {
     
$articulos$fila
  }
  return 
$articulos

            
        } 
como podria hacer ese procedimiento de esa manera
me genera el siguiente error

Código HTML:
NULL 
Warning: Invalid argument supplied for foreach() in /var/www/transporte/modulos/tipsolicitud.php on line 62
  #2 (permalink)  
Antiguo 05/05/2015, 07:32
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Devolver valor a la vista desde una busqueda en funcion

Es simple, tu método consultar_datos_del_usuario no esta regresando un arreglo como supones (Revisa el while).
Además en la vista solo llamas al método, pero no asignas el resultado a nada
Código PHP:
Ver original
  1. $ingreso->consultar_datos_del_usuario($_POST['bus']);
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 05/05/2015, 07:39
 
Fecha de Ingreso: julio-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Devolver valor a la vista desde una busqueda en funcion

Si pana no me recibe ningún dato de vuelta
como se haría pana que no doy con la solución
me da este error
NULL
Warning: Invalid argument supplied for foreach() in /var/www/transporte/modulos/tipsolicitud.php on line 62
  #4 (permalink)  
Antiguo 05/05/2015, 07:53
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Devolver valor a la vista desde una busqueda en funcion

Ya te dije donde debes de buscar. Ahora te toca hacer depuración de tu código. Si no sabes como hacer te dejo un articulo que habla sobre el tema http://blog.teamtreehouse.com/how-to-debug-in-php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 05/05/2015, 08:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Devolver valor a la vista desde una busqueda en funcion

De hecho, tu error está en la siguiente linea:
Código PHP:
Ver original
  1. // MAL
  2. $articulos= $fila;
  3.  
  4. // BIEN
  5. $articulos []= $fila;

Si $articulos es un array sólo debes agregar más elementos, pero en tu caso estabas re-asignando el array.

Manual de arrays: http://php.net/manual/es/language.types.array.php

Además las variables no se crean por arte de magia, que $articulos exista dentro de tu método no implica que exista fuera.

Manual ámbito de variables: http://php.net/manual/es/language.variables.scope.php
Manual de funciones: http://php.net/manual/es/functions.user-defined.php

Es por eso que var_dump() te imprime NULL.

Código PHP:
Ver original
  1. // MAL
  2. $ingreso->consultar_datos_del_usuario($_POST['bus']);  
  3.  
  4. // BIEN
  5. $articulos = $ingreso->consultar_datos_del_usuario($_POST['bus']);

Y sí, deberías leer el manual.

Básico.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 05/05/2015, 12:42
 
Fecha de Ingreso: julio-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Devolver valor a la vista desde una busqueda en funcion

saludos muchachos lo tengo así en estos momentos la funcion me recibe los datos hace la busquedad pero no me devuelve el arrglo a la vista

lo tengo de esta manera
la funcion
Código PHP:
  public function consultar_datos_del_usuario($bus){
      
$this->bus=htmlentities($bus);

      
$articulos=array();           
      
$bus1=mysql_query("SELECT * FROM tipsolicitud WHERE solicitud='$this->bus'");


      
      
$articulos=mysql_fetch_array($bus1); 
      
var_dump($articulos['solicitud']); 
 
      return 
$articulos

  }
  } 
la vista
Código PHP:
 <?php
    
if (isset($_POST["guardar"])=="Buscar") {
        include 
'soliclass.php';
        
$ingreso=new Solicitud(); 
        
$ingreso->consultar_datos_del_usuario($_POST['bus']);



var_dump($articulos); 
 foreach (
$articulos as $articulo): ?>
  <tr>
    <td><?php echo $articulo['solicitud'?></td>
    <td><?php echo $articulo['titulo'?></td>
  </tr>
<?php endforeach; ?>


            <?php
            
# code...
           
       
}
        
?>
  #7 (permalink)  
Antiguo 05/05/2015, 12:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Devolver valor a la vista desde una busqueda en funcion

Por favor, aprende a leer a totalidad las respuesta que se te dan:

Código PHP:
Ver original
  1. // MAL
  2. $ingreso->consultar_datos_del_usuario($_POST['bus']);  
  3.  
  4. // BIEN
  5. $articulos = $ingreso->consultar_datos_del_usuario($_POST['bus']);

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

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 05/05/2015, 13:27
 
Fecha de Ingreso: julio-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Devolver valor a la vista desde una busqueda en funcion

pero es que el detalle hermano no esta en el envio de datos hacia la función el detalle esta en que la funcion no me devuelve el arreglo hacia la vista
si de esta manera la funcion esta recibiendo la informacion
$ingreso->consultar_datos_del_usuario($_POST['bus']);

yo leei lo detalles que me enviaron pero el problema esta en que la vista recibe el arreglo vacio
  #9 (permalink)  
Antiguo 05/05/2015, 13:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Devolver valor a la vista desde una busqueda en funcion

Pues definitivamente te hace falta más el manual, tu método consultar_datos_del_usuario() hace uso de return, pero fuera de él, donde lo invocas: no asignas el valor de retorno a ninguna variable.

¿O piensas que la variable interna $articulos ya existe fuera del método con sólo haber invocado dicho método?

Si el var_dump() que haces sigue arrojando NULL tu problema persiste.

Por favor, no solo leas por leer: reflexiona.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 05/05/2015, 14:06
 
Fecha de Ingreso: julio-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Devolver valor a la vista desde una busqueda en funcion

si hermano de verdad tenia toda la razón disculpe no tenia el método para recoger el return y de verdad que no lo entendía pero ya lo logre gracias y disculpe
  #11 (permalink)  
Antiguo 05/05/2015, 14:12
 
Fecha de Ingreso: julio-2007
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Devolver valor a la vista desde una busqueda en funcion

quedo de esta manera
la funcion:

Código PHP:
public function consultar_datos_del_usuario($bus){
      
$this->bus=htmlentities($bus);

       
      
$bus1=mysql_query("SELECT * FROM tipsolicitud WHERE solicitud='$this->bus'");


      while(
$row mysql_fetch_array($bus1)) {
      
$articulos[]= $row;

        }
        return 
$articulos

     

  } 

y la vista

Código PHP:
<?php
    
if (isset($_POST["guardar"])=="Buscar") {
        include 
'soliclass.php';
        
$ingreso=new Solicitud(); 
        
$ingreso->consultar_datos_del_usuario($_POST['bus']);

//se reciben los datos de la funcion
        
$articulos=$ingreso->consultar_datos_del_usuario($_POST['bus']);

        
?>

        <table>
                <tr>
                        <th>N</th>
                        <th>Solicitud</th>
                </tr>
                <?php
                $n
=0;
                foreach (
$articulos as $articulo): 
            
$n+=1;        ?>
                      <tr>
                        <td><?php echo $n;   ?></td>
                        <td><?php echo $articulo['solicitud']; ?></td>
                         </tr>
                <?php endforeach;       
       }
?>


  

        </table>

pero la verdad es que no entiendo el porq se recibe de esta manera
$articulos=$ingreso->consultar_datos_del_usuario($_POST['bus']);

si $_POST['bus'] es la variable que estoy mandando para hacer la busquedad
  #12 (permalink)  
Antiguo 05/05/2015, 17:30
 
Fecha de Ingreso: mayo-2015
Mensajes: 9
Antigüedad: 8 años, 11 meses
Puntos: 1
Sonrisa Respuesta: Devolver valor a la vista desde una busqueda en funcion

para que te quede algo mas claro, cuando tu llamas a una función puedes enviarle valores con los que trabajar , ademas de las operaciones que se realicen en esa funcion, puedes devolver algún valor con return.
Para que te hagas una idea te explico un ejemplo muy basico:
tu tienes una funcion "exprimidor_de_fruta" a la que le mandas naranjas ($_POST['bus']).
Una vez procesadas, ella te devuelve zumo.
Tal y como tu lo tenias, ese zumo se pierde para que no pase eso usamos la variable a la izquierda de la igualdad que seria como digamos el vaso donde recoger el zumo.
las variables del return y la que lo recibe no necesitan llamarse igual, para seguir con el ejemplo, la funcion tiene el zumo en una botella y tu la recibes en un vaso.

Creo que asi lo entenderas...

Código PHP:
Ver original
  1. <?php
  2.     if (isset($_POST["guardar"])=="Buscar") {
  3.         include 'soliclass.php';
  4.         $ingreso=new Solicitud();
  5. // Esta linea sobra,         $ingreso->consultar_datos_del_usuario($_POST['bus']);
  6.  
  7. //se reciben los datos de la funcion
  8.         $articulos=$ingreso->consultar_datos_del_usuario($_POST['bus']);
  9.  
  10.         ?>

Etiquetas: busqueda, devolver, funcion, mysql, select, sql, valor, vista
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 15:25.