Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: tecasoft en 7 Octubre 2015, 04:25 am



Título: [Resuelto] consulta sql para while en php
Publicado por: tecasoft en 7 Octubre 2015, 04:25 am
buenas amigos otra vez estamos por aqui, tengo el siguiente problema, tengo una serie de bases de datos y y un codigo en php, me gustaria que atraves de 1 sola consulta SQL pudiera recojer 2 while, es decir, necesito listar el cod_cliente en un
Código
  1. <select><option>$fila2['cod_cliente']</option></select>
  2.  

y luego otro while con:
Código
  1. <select><option>$fila2['fecha']</option></select>
  2.  

Código
  1. <form>
  2.  
  3. Cod_cliente:
  4.  
  5.  
  6. <?php
  7.  
  8. echo "<select name='cod_cliente'>";
  9.  
  10. $result2=mysqli_query($conexion,"select cod_cliente,fecha,contacto,tipo,poblacion,provincia,pais,revisado,nombre_empresa,web,clientes_telefonos,nombre,apellidos from clientes,clientes_telefonos,clientes_tratamiento");
  11.  
  12. mysqli_set_charset($result2,"utf8");
  13.  
  14. while($fila2=mysqli_fetch_array($result2))
  15. {
  16. echo "<option>".$fila2['cod_cliente']."<option>";
  17. $fila2['fecha'];
  18. }
  19.  
  20. echo "</select>";
  21. echo "<select name='fecha'>";
  22.  
  23. foreach(($fila2['fecha']) as $value)
  24. {
  25. echo "<option>".$value."<option>";
  26. }
  27.  
  28. echo "</select>";
  29. ?>
  30.  
  31. </form>
  32.  
  33.  

por lo que llevo me funciona el primer while pero el segundo se me atasca y no rula, podria hacerlo con una sql solo?, ya que si utilizo mas sql me consumira muchos recursos, que opinais al respecto?

Mod: Temas sobre PHP van al subforo de PHP.


Título: Re: consulta sql para while en php
Publicado por: engel lex en 7 Octubre 2015, 07:36 am
el problema es de alcance (scope) cuando usas

Código
  1. while($fila2=mysqli_fetch_array($result2))
  2. {
  3. echo "<option>".$fila2['cod_cliente']."<option>";
  4. $fila2['fecha'];
  5. }

$fila2 solo varía dentro de esos corchetes

en tal caso sería volcar todo a $fila2 y usar esa variable... es decir...

Código
  1. while($salida=mysqli_fetch_array($result2))
  2. {
  3. $fila2[]=$salida;
  4. }


por otro lado usas foreach mal debes usarlo así

Código
  1. foreach($fila2 as $value)
  2. {
  3. echo "<option>".$value["fecha"]."<option>";
  4. }

ya que si haces como lo tenías, el intentará iterar dentro de el array que contenga $fila2 en el valor "fecha", cosa que no existe para este caso...


Título: Re: consulta sql para while en php
Publicado por: tecasoft en 7 Octubre 2015, 19:12 pm
perdona por mi torpeza lo estoy probando y no me funciona, haber como quedaria en realidad:

Código
  1. while($fila2=mysqli_fetch_array($result2))
  2. {
  3. /*echo "<option>".$fila2['cod_cliente']."<option>";*/
  4. $fila2[]=$fila2;
  5. echo "<option>".$fila2['cod_cliente']."<option>";
  6. }
  7.  
  8. echo "</select>";
  9. echo "<select name='fecha'>";
  10.  
  11. while($fila3=mysqli_fetch_array($result2))
  12. {
  13.  
  14. $fila3[]=$fila3;
  15. echo "<option>".$fila3['fecha']."<option>";
  16. }
  17.  
  18. echo "</select>";
  19.  

asi no funciona


Título: Re: consulta sql para while en php
Publicado por: engel lex en 7 Octubre 2015, 19:28 pm
Código:
$fila3[]=$fila3;

se crea un agujero negro y destruye el mundo XD

si haces en un while
Código:
mysqli_fetch_array($result2)

cuando lo vuelvas a hacer dará false, porque ya se recorrió completo...

debes hacer algo como

Código
  1. while($fila2[]=mysqli_fetch_array($result2)){}// esto vacío porque lo importante pasa allá atrás
  2.  
  3.  
  4. foreach($fila2 as $value){
  5. echo "<option>".$value['cod_cliente']."<option>";
  6. }
  7.  
  8. echo "</select>";
  9. echo "<select name='fecha'>";
  10.  
  11. foreach($fila2 as $value){
  12. echo "<option>".$value['fecha']."<option>";
  13. }
  14.  
  15. echo "</select>";


Título: Re: consulta sql para while en php
Publicado por: tecasoft en 7 Octubre 2015, 19:40 pm
Gracias tio ya me funciona, gracias al codigo que has dejado tu se podria dar como resuelto, como se pone para que el comentario este resuelto(hablo el del foro), porque a mucha gente le servira este ejemplo XD