Foros del Web » Programando para Internet » PHP »

Como usar el foreach en condiciones

Estas en el tema de Como usar el foreach en condiciones en el foro de PHP en Foros del Web. Mi situacion es la siguiente : yo hago una consulta a mysql desde php en la que busco unos datos @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver ...
  #1 (permalink)  
Antiguo 13/12/2012, 10:36
 
Fecha de Ingreso: septiembre-2012
Ubicación: Sevilla
Mensajes: 144
Antigüedad: 11 años, 6 meses
Puntos: 0
Como usar el foreach en condiciones

Mi situacion es la siguiente :
yo hago una consulta a mysql desde php en la que busco unos datos

Código PHP:
Ver original
  1. $variable = $conexion->seguridad($_POST['campo']); //CoJO LA INFO DEL CAMPO
  2.     $consulta = "SELECT eOrigen, eDestino FROM desvios WHERE eOrigen='$variable' or eDestino='$variable'";

y ahora quiero recoger los datos que me den como resultado en una tabla.
Hasta aqui bien, yo utilizo una clase creada pr mi pero me da un error en el momento en el que no encuentro un resultado valido en mi consulta por tanto me voy a pasar a la forma original de hacer estas cosas :
Código PHP:
Ver original
  1. $variable =$_POST['campo'];
  2.     $consulta = "SELECT eOrigen, eDestino FROM desvios WHERE eOrigen='$variable' or eDestino='$variable'";
  3. $totalFilas=mysql_query($consulta,$conexion);
Pues bien el freach que utilizo hasta ahora es el siguiente :
Código PHP:
Ver original
  1. if ($totalFilas > 0) {
  2.         echo" <table id='tabla1'>
  3.            <tr>
  4.                <td id='td1'>Extensión Origen</td><td id='td1'>Extensión Destino</td>
  5.            </tr>";
  6.         foreach ($totalFilas as $row) {
  7.             echo "<tr>";
  8.             echo "<td>";
  9.             echo $row['eOrigen'];
  10.             echo"</td>";
  11.             echo "<td>";
  12.             echo $row['eDestino'];
  13.             echo"</td>";
  14.             echo " </tr>";
  15.         }
  16.         echo " </table>";
  17.     } else {
  18.         echo "<p>Lo sentimos pero el dato que está buscando no se ha encontrado.</p>";
  19.     }
esto sale utilizando la clase de la que os hablo per al darme el fallo si no encuentro un dato valido pues lo hago con mysql_query y quiero saber como modificar el foreach para que me muestre la tabla más menos como la anterior . En el caso de que no encuentre ningun dato valido pues que me salga el mensaje que ahi muestro . el código completo es el siguiente ;
Código PHP:
Ver original
  1. <?php
  2.  
  3. include_once 'clases/Class_Bd.php';
  4. echo " <link rel='stylesheet' type='text/css' media='screen' href='css/cssPageGrid.css' />";
  5. $conexion = new Conecta_DB();
  6. $conexion->conectar();
  7. if (empty($_POST['campo'])) {
  8.     echo '<p>Debe intrducir algún dato a buscar.</p>';
  9. } else {
  10.     $variable = $conexion->seguridad($_POST['campo']); //CoJO LA INFO DEL CAMPO
  11.     $consulta = "SELECT eOrigen, eDestino FROM desvios WHERE eOrigen='$variable' or eDestino='$variable'"; //CONSULTO EN LA CASE DE DATOS SI HAY ALGUN ORIGEN O DESTINO CON ESE VALR
  12. //echo $consulta;
  13.     $totalFilas = $conexion->consultar($consulta); //guardo la consulta y en el foreach la recorro
  14.     //echo $totalFilas;
  15.     if ($totalFilas > 0) {
  16.         echo" <table id='tabla1'>
  17.            <tr>
  18.                <td id='td1'>Extensión Origen</td><td id='td1'>Extensión Destino</td>
  19.            </tr>";
  20.         foreach ($totalFilas as $row) {
  21.             echo "<tr>";
  22.             echo "<td>";
  23.             echo $row['eOrigen'];
  24.             echo"</td>";
  25.             echo "<td>";
  26.             echo $row['eDestino'];
  27.             echo"</td>";
  28.             echo " </tr>";
  29.         }
  30.         echo " </table>";
  31.     } else {
  32.         echo "<p>Lo sentimos pero el dato que está buscando no se ha encontrado.</p>";
  33.     }
  34. }
  35. ?>
  #2 (permalink)  
Antiguo 13/12/2012, 10:43
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Como usar el foreach en condiciones

Por lo que entendí, el método consultar no devuelve un array cuando no hay resultados en la consulta. Puedes usar is_array() para verificarlo antes de intentar usar el foreach:
http://php.net/is_array
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 13/12/2012, 10:47
 
Fecha de Ingreso: septiembre-2012
Ubicación: Sevilla
Mensajes: 144
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Como usar el foreach en condiciones

no te entendido bien yo l que quiero es que al hacer la consulta guardarla en $totalFilas y hacer el foreah me muestre la tabla si ha encntrado resultados sino que me muestre un mensaje diciendo que no ha encontrado nada. basicamente lo que intento hacer es un buscador sencillo
  #4 (permalink)  
Antiguo 13/12/2012, 10:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Como usar el foreach en condiciones

¿Qué devuelve el método consultar() cuando no encuentra resultados? Si no devuelve un array, esta verificación:
Código PHP:
Ver original
  1. if ($totalFilas > 0)
Debería ser:
Código PHP:
Ver original
  1. if (is_array($totalFilas))
A eso me refería.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 13/12/2012, 10:56
 
Fecha de Ingreso: septiembre-2012
Ubicación: Sevilla
Mensajes: 144
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Como usar el foreach en condiciones

vale he probado la lo que me has dicho :
Código PHP:
Ver original
  1. $totalFilas = mysql_query($consulta); //guardo la consulta y en el foreach la recorro
  2.     echo is_array($totalFilas) ? 'Array' : 'No es un array';
y sale que no es un array , ahora quiero saber si hay alguna forma para conevrtir $totalFilas en un array que me pueda recorrer el foreah o de que otra manera puedo hacer para mstrar la tabla en el caso de que SI haya resultados y el mensaje en el caso de que NO haya resultados
  #6 (permalink)  
Antiguo 13/12/2012, 10:58
 
Fecha de Ingreso: septiembre-2012
Ubicación: Sevilla
Mensajes: 144
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Como usar el foreach en condiciones

en vez de consultar quiero utilizar el mysql_query de toda la vida y nose como utilizarlo con el foreach
  #7 (permalink)  
Antiguo 13/12/2012, 11:19
 
Fecha de Ingreso: septiembre-2012
Ubicación: Sevilla
Mensajes: 144
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Como usar el foreach en condiciones

SOLUCIONADO !!
lo de la cadena era parte de la clave , mira como no encontraba nada que me convirtiera directamente tda la caden a un array lo he echo por cada fila y en vez de un foreach he utilizado un while que me va recorriendo el resultado
Código PHP:
Ver original
  1. $totalFilas = mysql_query($consulta); //guardo la consulta y en el foreach la recorro
  2.     // echo is_array($totalFilas) ? 'Array' : 'No es un array';
  3.     if ($totalFilas > 0) {
  4.         echo" <table id='tabla1'>
  5.            <tr>
  6.                <td id='td1'>Extensión Origen</td><td id='td1'>Extensión Destino</td>
  7.            </tr>";
  8.  
  9.         while ($fila = mysql_fetch_array($totalFilas)) {
  10.             echo "<tr>";
  11.             echo "<td>";
  12.             echo $fila['eOrigen'];
  13.             echo"</td>";
  14.             echo "<td>";
  15.             echo $fila['eDestino'];
  16.             echo"</td>";
  17.             echo " </tr>";
  18.         }
  19.         echo " </table>";
  20.     } else {
  21.         echo "<p>Lo sentimos pero el dato que está buscando no se ha encontrado.</p>";
  22.     }

ESPERO QUE QUIEN TUVIESE MI MISMA DUDA LA PUEDA SOLUCIONAR TAMBIEN UN SALUDO A TODOS Y GRACIAS

Etiquetas: foreach
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 08:35.