Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problema con consulta a base de datos

Estas en el tema de problema con consulta a base de datos en el foro de PHP en Foros del Web. Hice una edición posterior. Mira la linea 24 de mi código anterior.Está cambiada....

  #31 (permalink)  
Antiguo 19/01/2013, 21:57
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 11 meses
Puntos: 270
Respuesta: problema con consulta a base de datos

Hice una edición posterior.
Mira la linea 24 de mi código anterior.Está cambiada.
  #32 (permalink)  
Antiguo 19/01/2013, 22:08
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 16 años
Puntos: 6
Respuesta: problema con consulta a base de datos

Ok, ahroa parece que va, lo unico que no va, es el escribir el pie de pagina al final de cada pagina...

Código PHP:
Ver original
  1. <html>
  2. <head>
  3. <title>Problema</title>
  4. </head>
  5. <body>
  6. <?php
  7. //Obtenemos ID
  8. $id=$_GET[id];
  9. //Seleccionamos BD
  10. require("conexion.php");
  11. $result=mysql_query("select * from navi where id_navi='$id'",$connect);
  12. // Ponemos el numero de lineas por fichero , en un define, en vez de repetirla en todos lados a pelo.
  13. define("NLINES",10);
  14.  
  15.  
  16. $k=0;
  17. while(file_exists("miFichero".$k.".txt"))$k++; // Este es el bucle.
  18.  
  19.  
  20. // Al salir del bucle, k indica que fichero NO existe.Asi que, el ultimo que existe (si existe) es k-1.
  21. $k--;
  22.  
  23. // Ahora, si k > 0 , significa que hay más de un fichero.k-1 es el numero de ficheros completos.
  24. $counter=0;
  25. $currentFile=null;
  26.  
  27. // Puede ser que no exista ninguno, asi que hacemos is_file.
  28. if(is_file("./miFichero".$k.".txt"))
  29. {    
  30.      // Existe alguno, y $k es el ultimo fichero.Se abre.
  31.      $lines=file("./miFichero".$k.".txt");    
  32.      // Se cuentan las lineas que empiezan por '#'.Esas son las lineas que ya hay escritas en el fichero.
  33.      foreach($lines as $value)
  34.          $counter+=($value[0]=='#'?1:0);
  35.  
  36.      // Por ahora, pensamos que tenemos que escribir en el ultimo fichero    
  37.      $curFile=$k;
  38.  
  39.      if($counter>=NLINES) // A menos que ese fichero ya tenga NLINES.En ese caso, vamos al siguiente.
  40.          $curFile++;
  41.  
  42.      $currentFile=fopen("miFichero".$curFile.".txt","a");          
  43. }
  44.  
  45. // En counter, tenemos el numero de lineas que habia en el ultimo fichero.Le añadimos todas las que hay en los ficheros anteriores.
  46. if($k>1)
  47.     $counter+=NLINES*$k;
  48.  
  49. $text="";  
  50. $cabecera="cabecera\n\n";  
  51. $pie="Este es mi pie";
  52.  
  53. // $res es el resultado de mysql_query de tu consulta.
  54. while($row=mysql_fetch_array($result))
  55. {
  56.      if($counter%NLINES==0)
  57.      {
  58.             if($currentFile!=null)
  59.             {  
  60.                 fwrite($currentFile, $pie);            
  61.                 fclose($currentFile);
  62.              }
  63.              $currentFile=fopen("miFichero".($counter/NLINES).".txt","w");
  64.              fwrite($currentFile, $cabecera);
  65.      }
  66.     fwrite($currentFile, "# ".$row[id_navi]."
  67. type=video
  68. name=".$row[titulo]."
  69. thumb=".$row[caratula]."
  70. URL=".$row[url]."
  71. ".$row[procesador]."\n\n");
  72.     $counter++;  
  73. }
  74. if($currentFile)
  75.      fclose($currentFile);
  76.  
  77.   ?>
  78.  
  79. </body>
  80. </html>
  #33 (permalink)  
Antiguo 19/01/2013, 22:16
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 11 meses
Puntos: 270
Respuesta: problema con consulta a base de datos

Mueve las lineas 50 y 51 al principio del fichero.

Sustituye las lineas 39 y 40 :
Código PHP:
Ver original
  1. if($counter>=NLINES) // A menos que ese fichero ya tenga NLINES.En ese caso, vamos al siguiente.
  2.          $curFile++;

Por
Código PHP:
Ver original
  1. if($counter>=NLINES) // A menos que ese fichero ya tenga NLINES.En ese caso, vamos al
  2. siguiente.
  3. {
  4.       $op=fopen("miFichero".$curFile.".txt","a");
  5.        fwrite($op,$pie);
  6.       fclose($op);
  7.          $curFile++;
  8. }
  #34 (permalink)  
Antiguo 19/01/2013, 22:27
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 16 años
Puntos: 6
Respuesta: problema con consulta a base de datos

ok, ahora si que escribe bien, pero probandolo me he dado cuenta de que, cuando insertas lineas, todo funciona bien asta que en algun momento en el archivo Mi Fichero1.txt pasas de algunas lineas (no se cual exactamente) se borra todo el contenido menos la primera linea, y crea el archivo MiFichero2.txt dejando el 1 con solo la cabecera y una linea o.o

EDITO: He mirado, y es en la linea que debe escribir la cabecera, en esa linea se borra todo menos la cabecera y una linea, y pasa a crear el fichero siguiente.

Última edición por Most; 19/01/2013 a las 22:32
  #35 (permalink)  
Antiguo 19/01/2013, 22:36
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 11 meses
Puntos: 270
Respuesta: problema con consulta a base de datos

Te lo he reorganizado, y limpiado, con una mejor gestión de los casos especiales.

Código PHP:
Ver original
  1. <html>
  2. <head>
  3. <title>Problema</title>
  4. </head>
  5. <body>
  6. <?php
  7.  
  8. define("NLINES",10);
  9. $cabecera="cabecera\n\n";  
  10. $pie="Este es mi pie";
  11.  
  12. $counter=0;
  13. // Si no existe ningun fichero, estamos al principio.
  14. if(!file_exists("miFichero0.txt"))
  15. {
  16.     $index=-1;
  17.     $currentFile=null;
  18. }
  19. else
  20. {
  21.     // Existe al menos 1 fichero.
  22.    $k=0;
  23.    while(file_exists("miFichero".$k.".txt"))
  24.    {
  25.        $k++; // Este es el bucle.
  26.    }
  27.    // Al salir del bucle, k indica que fichero NO existe.Asi que, el ultimo que existe es k-1.
  28.    $k--;
  29.    // Se abre el fichero, y se cuenta el numero de líneas que contiene.
  30.    $lines=file("./miFichero".$k.".txt");    
  31.    foreach($lines as $value)
  32.       $counter+=($value[0]=='#'?1:0);
  33.    $index=$k;
  34.    $currentFile=fopen("miFichero".$index.".txt","a");                
  35. }
  36.  
  37. // $res es el resultado de mysql_query de tu consulta.
  38. for($k=0;$k<23;$k++)
  39. {
  40.      if($counter%NLINES==0)
  41.      {
  42.             if($currentFile!=null)
  43.             {  
  44.                 fwrite($currentFile, $pie);            
  45.                 fclose($currentFile);
  46.              }
  47.              $index++;
  48.              $currentFile=fopen("miFichero".$index.".txt","w");
  49.              
  50.              fwrite($currentFile, $cabecera);
  51.      }
  52.     fwrite($currentFile, "# ".$k." -- ".$counter."\n\n");
  53.     $counter++;  
  54. }
  55. if($currentFile)
  56. {
  57.     if($counter%NLINES==0)
  58.         fwrite($currentFile, $pie);
  59.      fclose($currentFile);
  60. }
  61.  
  62.   ?>
  63.  
  64. </body>
  65. </html>
  #36 (permalink)  
Antiguo 19/01/2013, 22:42
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 16 años
Puntos: 6
Respuesta: problema con consulta a base de datos

Ok, ahora todo funciona muy bien, menos una pequeña cosa...

en los archivos escribe 2 pie

Este es mi pieEste es mi pie

Última edición por Most; 19/01/2013 a las 22:53
  #37 (permalink)  
Antiguo 19/01/2013, 22:55
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 16 años
Puntos: 6
Respuesta: problema con consulta a base de datos

arreglado he borrado


if($currentFile!=null)
{
fwrite($currentFile, $pie);
fclose($currentFile);
}

ya que estaba puesto 2 veces pero de distinta manera..

if($counter%NLINES==0)
fwrite($currentFile, $pie);

ahora parece que ya funciona bien, voy a probarlo todo bien y te digo algo, aun que parece que ya funciona bien muchas gracias tio



EDITO: Funciona perfect tio muchisimas gracias.

Última edición por Most; 19/01/2013 a las 23:03

Etiquetas: html, mysql, select, sql
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 19:13.