Foros del Web » Programando para Internet » PHP »

problema en consulta

Estas en el tema de problema en consulta en el foro de PHP en Foros del Web. buenas tardes tengo un problema con una consulta a mysql Código PHP: $fechagggggggg =  date ( "d/m/Y" ); //este query es el que me trae los datos filtrados por la fecha y ordenado por el campo de la pagina.  $sql = "select idcontrol,horallegada,hora1,hora2,hora3,hora4,hora5,hora6,hora7,hora8,hora9,hora10 from control where fecha='" . $fechagggggggg . ...
  #1 (permalink)  
Antiguo 09/02/2010, 13:38
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta problema en consulta

buenas tardes tengo un problema con una consulta a mysql

Código PHP:
$fechaggggggggdate("d/m/Y");
//este query es el que me trae los datos filtrados por la fecha y ordenado por el campo de la pagina. 
$sql="select idcontrol,horallegada,hora1,hora2,hora3,hora4,hora5,hora6,hora7,hora8,hora9,hora10 from control where fecha='".$fechagggggggg."'order by horallegada";
$sql_result=mysql_query($sql,$link);
while(
$row=mysql_fetch_array($sql_result)){
$idcontrol=$row['idcontrol'];
$horallegada=$row['horallegada'];
$hora1=$row['hora1'];
$hora2=$row['hora2'];
$hora3=$row['hora3'];
$hora4=$row['hora4'];
$hora5=$row['hora5'];
$hora6=$row['hora6'];
$hora7=$row['hora7'];
$hora8=$row['hora8'];
$hora9=$row['hora9'];
$hora10=$row['hora10']; 
mi problema radica aqui:

Código PHP:
echo "
  <tr>
    <td width='35' bgcolor='#4BACC6' class='letra'><a href='edit1.php?idcontrol="
.$idcontrol."'><strong>$horallegada</strong></a></td>
<td width='90' bgcolor='#4BACC6' class='letra'><a href='edit1.php?idcontrol="
.$idcontrol."'>???????????</a></td>
</tr> 
la idea es que si esta $hora2 reempleace la $hora1 y si esta $hora3 reemplace a $hora2...

saludos
  #2 (permalink)  
Antiguo 09/02/2010, 13:50
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: problema en consulta

Buenas,

Si lo entendí bien:

"ORDER BY horallegada DESC" te falta el desc

Saludos
  #3 (permalink)  
Antiguo 09/02/2010, 13:56
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema en consulta

nop... mira en la linea
Código PHP:
echo 
  <tr>     
<td width='90' bgcolor='#4BACC6' class='letra'><a href='edit1.php?idcontrol="
.$idcontrol."'>???????????</a></td> 
</tr> 
Lo que necesito es que a medida que vaya apareciendo $hora1 lo muestre y si es $hora2 lo muestre reemplazando a $hora1 y asi hasta $hora10
  #4 (permalink)  
Antiguo 09/02/2010, 13:58
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema en consulta

Vaya movida. Primero podías optimizar el código que ya tienes con un bucle:
Código PHP:
Ver original
  1. $fechag= date("d/m/Y");
  2. /*este query es el que me trae los datos
  3. filtrados por la fecha y ordenado por el campo de la pagina. */
  4.  
  5. $sql="SELECT * FROM control WHERE fecha='".$fechag."'ORDER BY horallegada DESC";
  6. $sql_result=mysql_query($sql,$link);
  7. while($row=mysql_fetch_array($sql_result)){
  8. $idcontrol=$row['idcontrol'];
  9. $horallegada=$row['horallegada'];
  10.  
  11. for($i=1;$i<=10; $i++) {
  12.     $hora[$i]=$row['hora'.$i];
  13. }
Con esto consigues lo mismo pero para trabajar más cómodo con arrays.
De este modo, en lugar de $hora1, $hora2, $horaN.... tendrás $hora[1],$hora[2],$hora[N]...

Ahora sólo te queda hacer unos condicionales, o una especie de bucle recursivo... que recorra hasta $hora[10] mirando si existen y asignándole los valores a $hora[$i-1]. ¿Es eso lo que quieres?
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #5 (permalink)  
Antiguo 09/02/2010, 14:07
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema en consulta

disculpen si soy muy ignorante pero quede con un tremendo signo de interrogacion :(
  #6 (permalink)  
Antiguo 09/02/2010, 14:09
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema en consulta

A mí me pasó lo mismo cuando leí tu post inicial.
Explícate un poco mejor y a ver si podemos ayudarte.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #7 (permalink)  
Antiguo 09/02/2010, 14:14
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema en consulta

lo que me explicas esta bien... lo que quiero es que si $hora1 tiene un valor que lo muestre, pero si $hora2 tiene un valor que desplace a $hora1 y si $hora3 tiene desplace a $hora2, es decir que a medida se van llenando las $hora1, $hora2, $hora3, $hora4 vaya mostrando solo el ultimo....
  #8 (permalink)  
Antiguo 09/02/2010, 14:19
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: problema en consulta

Lo que recuperas en la consulta son filas y cada fila contiene todas las horas, lo que CHuLoSoY te sugiere es un sistema para procesar los datos de cada fila.


Y tu sugieres una consulta que muestre el valor mayor de cada fila no?


O me estoy liando??
  #9 (permalink)  
Antiguo 09/02/2010, 14:22
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema en consulta

Ok, ahora olvídate de las diez variables que tienes y trabaja con una sola, como te puse arriba (un array en la variable $hora).
Deberás hacer algo así:
Código PHP:
Ver original
  1. for($i=1; $i<=10; $i++) {
  2.  
  3.        if($hora[$i]!="") {
  4.           $vasAMostrar=$hora[$i];
  5.        }
  6.  
  7. }

De esta forma, se rellenará la variable $vasAMostrar recursivamente hasta el último elemento que contenga información. Sólo tienes que haceR:
Código PHP:
Ver original
  1. echo $vasAMostrar;
y ver el resultado.

No copies y pegues, lo más seguro es que no funcione como tú quieres. Sólo intenta entenderlo. Para ello: http://es.php.net
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.

Última edición por CHuLoSoY; 09/02/2010 a las 14:44
  #10 (permalink)  
Antiguo 09/02/2010, 14:23
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema en consulta

mas que todo que si la fila $hora2 tiene algun contenido que muestre lo que tiene pero que si $hora3 igual tiene le de prioridad a $hora3
  #11 (permalink)  
Antiguo 09/02/2010, 14:26
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema en consulta

Le de prioridad dónde?
Yo no entiendo nada. Por favor, como si tienes que escribir la biblia, pero explícate tío.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #12 (permalink)  
Antiguo 09/02/2010, 14:30
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema en consulta

no importa el contenido que tenga $hora1 si aparece $hora2 y tiene contenido solo muestre $hora2..... y asi hasta $hora10
  #13 (permalink)  
Antiguo 09/02/2010, 14:33
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema en consulta

A ver, probaste el código que te di? Es precisamente para eso!!!!!
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #14 (permalink)  
Antiguo 09/02/2010, 14:38
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema en consulta

Código PHP:
for($i=1;$i<=10$i++) 
$hora[$i]=$row['hora'.$i];}

for(
$i=1$i<=10$i++)
{ if(
$hora[$i]) {$resultado=$hora[$i];} }

echo 
$resultado
no muestra nada :(
  #15 (permalink)  
Antiguo 09/02/2010, 14:43
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema en consulta

Me cito a mi mismo, y me voy a cenar, porque esto ya no tiene nombre.
Cita:
Iniciado por CHuLoSoY Ver Mensaje
No copies y pegues, lo más seguro es que no funcione como tú quieres. Sólo intenta entenderlo. Para ello: http://es.php.net
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #16 (permalink)  
Antiguo 09/02/2010, 14:48
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: problema en consulta

Prueba

Código PHP:
Ver original
  1. $fechag= date("d/m/Y");
  2. /*este query es el que me trae los datos
  3. filtrados por la fecha y ordenado por el campo de la pagina. */
  4.  
  5. $sql="SELECT * FROM control WHERE fecha='".$fechag."'ORDER BY horallegada DESC";
  6. $sql_result=mysql_query($sql,$link);
  7. while($row=mysql_fetch_array($sql_result)){
  8. $idcontrol=$row['idcontrol'];
  9. $horallegada=$row['horallegada'];
  10.  
  11. for($i=1;$i<=10; $i++) {
  12.     $hora[$i]=$row['hora'.$i];
  13. }
  14. //Esta se puede obviar por que se puede meter dentro del primer for pero bueno
  15. for($i=1; $i<=10; $i++)
  16. {
  17.      if($hora[$i])
  18.      {
  19.           $resultado=$hora[$i];
  20.           echo 'Hora['. $i .']: '. $resultado;
  21.      }
  22. }

Es de probar..

salu2
  #17 (permalink)  
Antiguo 09/02/2010, 14:53
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema en consulta

Aún mejor:
Código PHP:
Ver original
  1. $fechag= date("d/m/Y");
  2. /*este query es el que me trae los datos
  3. filtrados por la fecha y ordenado por el campo de la pagina. */
  4.  
  5. $sql="SELECT * FROM control WHERE fecha='".$fechag."'ORDER BY horallegada DESC";
  6. $sql_result=mysql_query($sql,$link);
  7. while($row=mysql_fetch_array($sql_result)){
  8. $idcontrol=$row['idcontrol'];
  9. $horallegada=$row['horallegada'];
  10.  
  11. for($i=1;$i<=10; $i++) {
  12.     if($row['hora'.$i]) {
  13.            $resultado=$row['hora'.$i];
  14.  
  15. /* Con esto te ahorras tanto el array $hora como las
  16. tropecientas variables $horaN que hiciste al principio */
  17.     }
  18. }
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #18 (permalink)  
Antiguo 09/02/2010, 15:09
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema en consulta

Código PHP:
$fechagdate("d/m/Y");
/*este query es el que me trae los datos
filtrados por la fecha y ordenado por el campo de la pagina. */
 
$sql="SELECT idcontrol, horallegada, hora1,hora2, hora3, hora4, hora5, hora6, hora7, hora8, hora9, hora10 FROM control WHERE fecha='".$fechag."'ORDER BY horallegada DESC";
$sql_result=mysql_query($sql,$link);
while(
$row=mysql_fetch_array($sql_result)){
$idcontrol=$row['idcontrol'];
$horallegada=$row['horallegada'];
for(
$i=1;$i<=10$i++) {
    
$hora[$i]=$row['hora'.$i];
}
//Esta se puede obviar por que se puede meter dentro del primer for pero bueno
for($i=1$i<=10$i++)

     if(
$hora[$i]) 
     {
          
$resultado=$hora[$i];
          echo 
'Hora['$i .']: '$resultado;
     } 
}

echo 
"  
<tr>
    <td width='35' bgcolor='#4BACC6' class='letra'><a href='edit1.php?idcontrol="
.$idcontrol."'><strong>$idcontrol</strong></a></td>
    <td width='90' bgcolor='#4BACC6' class='letra'><a href='edit1.php?idcontrol="
.$idcontrol."'>$horallegada</a></td>
    <td width='74' bgcolor='#4BACC6' class='letra'><a href='edit1.php?idcontrol="
.$idcontrol."'>$hora[$i]</a></td>
</tr>
 " 
PERDONEN MI BRUTALIDAD PERO QUIERO APRENDER.... CORRIGANME POR FAVOR
  #19 (permalink)  
Antiguo 09/02/2010, 15:13
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: problema en consulta

Prueba asi a ver si es lo que quieres

Código PHP:
$fechagdate("d/m/Y");
/*este query es el que me trae los datos
filtrados por la fecha y ordenado por el campo de la pagina. */
 
$sql="SELECT idcontrol, horallegada, hora1,hora2, hora3, hora4, hora5, hora6, hora7, hora8, hora9, hora10 FROM control WHERE fecha='".$fechag."'ORDER BY horallegada DESC";
$sql_result=mysql_query($sql,$link);
while(
$row=mysql_fetch_array($sql_result)){
$idcontrol=$row['idcontrol'];
$horallegada=$row['horallegada'];
for(
$i=1;$i<=10$i++) {
    
$hora[$i]=$row['hora'.$i];
}
//Esta se puede obviar por que se puede meter dentro del primer for pero bueno
for($i=1$i<=10$i++)

     if(
$hora[$i]) 
     {
          
$resultado=$hora[$i];
          echo 
'Hora['$i .']: '$resultado;
echo 
"  
<tr>
    <td width='35' bgcolor='#4BACC6' class='letra'><a href='edit1.php?idcontrol="
.$idcontrol."'><strong>"$idcontrol ."</strong></a></td>
    <td width='90' bgcolor='#4BACC6' class='letra'><a href='edit1.php?idcontrol="
.$idcontrol."'>"$horallegada ."</a></td>
    <td width='74' bgcolor='#4BACC6' class='letra'><a href='edit1.php?idcontrol="
.$idcontrol."'>"$resultado ."</a></td>
</tr>
 " 

     } 

  #20 (permalink)  
Antiguo 09/02/2010, 15:14
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema en consulta

Código PHP:
Ver original
  1. $fechag= date("d/m/Y");
  2. /*este query es el que me trae los datos
  3. filtrados por la fecha y ordenado por el campo de la pagina. */
  4.  
  5. $sql="SELECT * FROM control WHERE fecha='".$fechag."'ORDER BY horallegada DESC";
  6. $sql_result=mysql_query($sql,$link);
  7. while($row=mysql_fetch_array($sql_result)){
  8. $idcontrol=$row['idcontrol'];
  9. $horallegada=$row['horallegada'];
  10.  
  11. for($i=1;$i<=10; $i++) {
  12.     if($row['hora'.$i]!="") {
  13.            $resultado=$row['hora'.$i];
  14.  
  15. /* Con esto te ahorras tanto el array $hora como las
  16. tropecientas variables $horaN que hiciste al principio */
  17.     }
  18. }
  19.  
  20.  
  21. echo "<tr>";
  22. echo "<td width='35' bgcolor='#4BACC6' class='letra'><a href='edit1.php?idcontrol=".$idcontrol."'><strong>".$idcontrol."</strong></a></td>";
  23. echo "<td width='90' bgcolor='#4BACC6' class='letra'><a href='edit1.php?idcontrol=".$idcontrol."'>".$horallegada."</a></td>";
  24. echo "<td width='74' bgcolor='#4BACC6' class='letra'><a href='edit1.php?idcontrol=".$idcontrol."'>".$resultado."</a></td>";
  25. echo "</tr>";

Eso sería lo ideal.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #21 (permalink)  
Antiguo 09/02/2010, 16:07
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema en consulta

hola amigos saben hice tal cual como ustedes me dijeron, puse un dato en $hora1 y no me aparecio nada :(
  #22 (permalink)  
Antiguo 09/02/2010, 16:22
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema en consulta

No entendiste nada en las 20 respuestas.
Repito por tercera y última vez: http://es.php.net --> MANUAL!!!!
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #23 (permalink)  
Antiguo 10/02/2010, 07:30
 
Fecha de Ingreso: enero-2009
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
De acuerdo Respuesta: problema en consulta

esta fue la solucion, gracias por sus recomendaciones

Código PHP:
$hora = array();
$resultado '';
for(
$i=1;$i<=10$i++) 
    
$hora[$i]=$row['hora'.$i];
foreach (
$hora as $value) if (!empty($value)) $resultado=$value
  #24 (permalink)  
Antiguo 10/02/2010, 07:55
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema en consulta

Enhorabuena.
Ves como no se trataba de copiar/pegar sino de entenderlo?
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.

Etiquetas: Ninguno
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:08.