Foros del Web » Programando para Internet » PHP »

problemas al escribir en archivo

Estas en el tema de problemas al escribir en archivo en el foro de PHP en Foros del Web. Saludos, tengo un problema a la hora de escribir en un archivo, el caso es el siguiente: Código PHP:    $sql = "SELECT * FROM j_pedidos WHERE idpedido='" . $cotiza . ...
  #1 (permalink)  
Antiguo 08/06/2003, 16:09
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 20 años, 11 meses
Puntos: 8
problemas al escribir en archivo

Saludos,

tengo un problema a la hora de escribir en un archivo, el caso es el siguiente:

Código PHP:
   $sql="SELECT * FROM j_pedidos WHERE idpedido='".$cotiza."'";
   
$consul=mysql_query($sql,$conex);
   
$object=mysql_fetch_object($consul);
   
//Crear la cabezera
   
$cadena=$object->idcliente;
   
$cadena .="|";
   
$cadena .=$object->idvendedor;
   
$cadena .="|";
   
$cadena .=$object->idfpago;
   
$cadena .="|";
   
$cadena .="\n";
   
fwrite($fp,$cadena);
   while (
$object2=mysql_fetch_object($consul)) {
    
$cadena2=$object2->idprod;
    
$cadena2 .="|";
    
$cadena2 .=$object2->cantidad;
    
$cadena2 .="|";
    
$cadena2 .="\n";
    
fwrite($fp,$cadena2);
   }
   
fclose($fp); 
La primera parte (antes del bucle) crea la primera línea del archivo de texto, eso esta bien.

La segunda parte (el bucle) debería comenzar a escribir los datos a partir de la segunda línea, pero no lo hace.
Lo que hace es que se come la primera línea del bucle y comienza a escribir desde la segund línea.

mas o menos asi:

la primera parte forma la cabezera:

10801794373|703|25| (estos datos son extraidos de una tabla)

Luego viene la parte del bucle:

50|6|
40|10|
1000|5|
80|4|

estos datos son los pedidos del cliente, que se deberían escribir a partir de la segunda línea, pero lo que hace es obviar la primera línea (50|6|) y comenzar desde la segunda (40|10|).

Como puedo hacer para corregir ese problema.

Gracias
__________________
El aprendiz.
  #2 (permalink)  
Antiguo 08/06/2003, 17:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Una ejecución de una función mysql_fetch_xxx() obtiene el registro (en un objeto, array, row o como lo uses) y "MUEVE" el puntero una posición adelante en el resultado de tu consulta (record-set) ...

Por lo tanto .. lo que debes (si quieres usar la estructura que estas usando en tu código) es Mover el puntero una posición atras en tu "record-set" ...

Para eso usa la función:
mysql_data_seek()

(usalo antes de tu while() ...)

Más info .. Donde siempre: www.php.net/manual/es

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 08/06/2003, 18:15
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 20 años, 11 meses
Puntos: 8
Por favor desearía si no fuera molestia un ejemplo de como usar el mysql_data_seek en el scrip anterior para lograr lo que quiero.

gracias.
__________________
El aprendiz.
  #4 (permalink)  
Antiguo 08/06/2003, 18:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. leistes el manual oficial de PHP sobre esa función? .. lo has intentado? .. comprendes porqué sucede lo que te pasa (con la explicación que te dí? ..

Lamentablemente soy así .. me gusta que se aprenda las cosas y no darlo hecho todo ..

Pruebalo . .intentalo y con algo de código en la mano y tus experiencias vemos como seguir orientandote ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 08/06/2003, 18:58
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 20 años, 11 meses
Puntos: 8
Ya vi el manual,, pero no entiendo para que voy a usar esa función (mysql_data_seek()) en mi código

lo que yo deseo es que la parte del bucle se comienze a escribir desde la segunda línea del archivo
__________________
El aprendiz.
  #6 (permalink)  
Antiguo 08/06/2003, 19:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Te lo he explicado:

Cita:
Una ejecución de una función mysql_fetch_xxx() obtiene el registro (en un objeto, array, row o como lo uses) y "MUEVE" el puntero una posición adelante en el resultado de tu consulta (record-set) ...

Por lo tanto .. lo que debes (si quieres usar la estructura que estas usando en tu código) es Mover el puntero una posición atras en tu "record-set" ...
Ahí te explico como funciona mysql_fetch_xxx() Lo que hace .. Por eso ya te he dicho que tu solución es usar mysql_data_seek() ...

En fin .. prueba a usar la función donde te dije (antes de tu while() .. ) .. Si te fijas en el manual de PHP .. veras que parámetro acepta .. así q si no entiendes la teoría .. prueba y observa.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 08/06/2003 a las 19:04
  #7 (permalink)  
Antiguo 08/06/2003, 19:27
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 20 años, 11 meses
Puntos: 8
Gracias por la ayuda, ya me salió.

Gracias.

dime, podras darme algunos consejos o algunos link, para trabajar con combos

__________________
El aprendiz.
  #8 (permalink)  
Antiguo 08/06/2003, 19:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Me alegro ...

(para el proximo que venga sería ideal que explicases como lo solucionastes ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 08/06/2003, 19:33
 
Fecha de Ingreso: mayo-2003
Ubicación: Lima
Mensajes: 967
Antigüedad: 20 años, 11 meses
Puntos: 8
Lo que hice fue colocar el puntero al inicio

Código PHP:
mysql_data_seek($consul,0); 
antes del bucle.
__________________
El aprendiz.
  #10 (permalink)  
Antiguo 08/06/2003, 19:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ok, ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 22:17.