Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Graphixx en 16 Noviembre 2012, 15:48 pm



Título: Emular while($col=mysql_fetch_array($resp)) con FOR
Publicado por: Graphixx en 16 Noviembre 2012, 15:48 pm
alguna idea de como recorrer un resultado mysql en vez de con:
while($col=mysql_fetch_array($resp))

algo asi:
Código
  1. $resf = mysql_num_rows($resp);
  2. $resc = mysql_num_rows($resp_cr);
  3.  
  4. //optenemos el limite mas grande de entre las dos consultas
  5. if($resf > $resc){
  6.  
  7. $limite=$resf
  8. $ban = "f";
  9. }else{
  10. $ban = "c";
  11. $limite=$resc
  12. }
  13.  
  14. $col=mysql_fetch_array($resp)
  15. $col_cr=mysql_fetch_array($resp_cr)
  16. //recorremos el maximo de resultados
  17. for ($i = 0; $i <= $limite; $i++) {
  18.  
  19. if($ban=="f"){
  20. //limitar cr
  21. if($i<=$resc){
  22. //dibujamos fila cr
  23.  
  24. }
  25. }
  26.  
  27. if($ban=="c"){
  28. //limitar fr
  29. if($i<=$resf){
  30. //dibujamos fila fr
  31. }
  32. }
  33.  
  34. }//fin for

es que quiero unir dos consultas mysql en una sola.
algo asi como supongamos tengo un vector de 5 resultados y otro de 3
quiero que recorriendo el mayor, ir mostrando tambien el menor, controlando que el menor no se salga de rango.


Título: Re: Emular while($col=mysql_fetch_array($resp)) con FOR
Publicado por: dimitrix en 16 Noviembre 2012, 17:12 pm
mysql_fetch_array te crea dos arrays, puedes sacar con el mysql_num_rows la cantidad de elementos que tienes y luego con el for los recorres... Ahora estoy muy distraido pero si nadie te ayuda esta noche me intentaré ayudarte ;-)

Sólo recuerdamelo.


Título: Re: Emular while($col=mysql_fetch_array($resp)) con FOR
Publicado por: dimitrix en 16 Noviembre 2012, 17:19 pm
Vale, tardé 6 minutos que me cambié de PC pero funciona sin problemas, comprobado.

Código
  1. <?php
  2. $res=mysql_query("SELECT * FROM tabla");
  3. $count=mysql_num_rows($res);
  4.  
  5. for($i=0;$count!=$i;$i++){
  6. $valores=mysql_fetch_array($res);
  7. };
  8. ?>

Espero que sea lo que buscas^^


Título: Re: Emular while($col=mysql_fetch_array($resp)) con FOR
Publicado por: Graphixx en 16 Noviembre 2012, 18:14 pm
lo que llevo es algo asi:

Código
  1. //optenemos el limite mas grande de entre las dos consultas
  2. if($resultados_totales > $resultados_totales_cr){
  3. $ban = "f";
  4. }elseif($resultados_totales < $resultados_totales_cr){
  5. $ban = "c";
  6. }else{$ban = "c";}
  7.  
  8. if($ban=="f"){
  9. //limitar cr
  10.  
  11.    for($s=0;@$col=mysql_fetch_array($resp);$s++){
  12.  
  13. //dibuja f
  14. echo "<br />fr";
  15.  
  16. if($sent<$resultados_totales_cr){
  17. //dibuja c
  18. @$col_cr=mysql_fetch_array($resp_cr);
  19. echo "<br />";
  20. }
  21.  
  22. }
  23.  
  24. }elseif($ban=="c"){
  25. //limitar fr  
  26.    for($s=0;@$col_cr=mysql_fetch_array($resp_cr);$s++){
  27.  
  28. //dibuja c
  29. echo "<br />";
  30.  
  31. if($sent<$resultados_totales-1){
  32. //dibuja f
  33. @$col = mysql_fetch_array($resp);
  34.    echo "<br />";
  35.    }
  36. }
  37.  
  38. }

Me autorespondi tambien:
http://foro.elhacker.net/php/paginacion_salteada_entre_dos_tablas-t376054.0.html