Foros del Web » Programando para Internet » PHP »

Problemas con un contador

Estas en el tema de Problemas con un contador en el foro de PHP en Foros del Web. Hola: En este código: Cita: For ($contador=15; $contador<=100; $contador++) { $game=$game.$datos[$contador]; if (($datos[$contador]=" ")) {$q = "INSERT INTO chesstemporal (event, site, game) values ('$event', '$site', ...
  #1 (permalink)  
Antiguo 11/09/2010, 09:03
Avatar de principiantedelphp  
Fecha de Ingreso: febrero-2010
Mensajes: 160
Antigüedad: 14 años, 1 mes
Puntos: 1
Problemas con un contador

Hola: En este código:

Cita:
For ($contador=15; $contador<=100; $contador++)
{
$game=$game.$datos[$contador];
if (($datos[$contador]=" "))
{$q = "INSERT INTO chesstemporal (event, site, game) values ('$event', '$site', '$game')"; $datos[$contador]=NULL;}
}
QUiero que simplemente me concatene cierto numero de filas de un archivo. Y que, cuando encuentre una fila vacía (no se como decirlo, sería una linea en blanco), deje de concatenar e inserte todas las filas concatenadas en un campo de una base de datos.
El tema es que no deja nunca de concatenar, concatena todas las filas de un archivo y las pone en la base de datos.
¿Como tendría que hacer para que deje de unir filas? Gracias
  #2 (permalink)  
Antiguo 11/09/2010, 09:06
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Problemas con un contador

Cita:
$game=$game.$datos[$contador];
si esto esta fuera de la condicion no hay nada que restrinja que concatene deberia de ser la condicion
Código PHP:
Ver original
  1. if (($datos[$contador]=" "))
  2. {$q = "INSERT INTO chesstemporal (event, site, game) values ('$event', '$site', '$game')"; $datos[$contador]=NULL;}}
  3. else{
  4. $game=$game.$datos[$contador];
  5. #y haces la insercion
  6. }
espero te sirva saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 11/09/2010, 09:18
Avatar de principiantedelphp  
Fecha de Ingreso: febrero-2010
Mensajes: 160
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Problemas con un contador

Puse el código que me dijiste:
Cita:
For ($contador=15; $contador<=100; $contador++)
{
if (($datos[$contador]!=" "))
{$game=$game.$datos[$contador];}
else
{$q = "INSERT INTO chesstemporal (event, site, game) values ('$event', '$site', '$game')"; }}
Y $game no tiene valor. La linea 15 es "1. b3 d5 2. Bb2 Nf6 3. e3 g6 4. c4 dxc4 5. Bxc4 Bg7 6. Nf3 c5 7. a3 O-O 8. b4"
  #4 (permalink)  
Antiguo 11/09/2010, 09:24
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Problemas con un contador

a ok siempre kieres concatenar pero cuando llege nulo inserte habia entendido mal pero como lo tenias tiene logica colocalo asi
Código PHP:
Ver original
  1. For ($contador=15; $contador<=100; $contador++)
  2. {
  3. $game=$game.$datos[$contador];
  4. if (empty(($datos[$contador]))
  5. if(!empty($game)){//sto xq si hay dos datos vacios seguidos no creo que kieras insertar de una vez un dato vacio o si
  6. {$q = "INSERT INTO chesstemporal (event, site, game) values ('$event', '$site', '$game')"; $datos[$contador]=NULL;}
  7. $game="";#esto lo pongo xq imagino que los datos que insertaste ya no los kieres cuando tengas que volver a insertar ya que estas haciendo un ciclo ampplio
  8. }
  9. }
bueno ahi te puse algo aunq noc si entendi bien y sea lo que buscas saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 11/09/2010, 09:34
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problemas con un contador

Hola
bueno, por un lado, en el if estas asignando, no comparando (sería ==)
y porque no usas un insert grupal y descriminas que si es distinto de vacio?
algo así

Código PHP:
Ver original
  1. $q = "INSERT INTO chesstemporal (event, site, game) values ";
  2. for ($contador=15; $contador<=100; $contador++)
  3. {
  4. $game=$game.$datos[$contador];
  5. if (($datos[$contador]!=" "))
  6. { $q.="('$event', '$site', '$game'),";}
  7. }
  8. //recortar última coma para evitar error de sintaxis sql
  9. $q = substr($q,0,strlen($q)-1);

prueba y comentas
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #6 (permalink)  
Antiguo 11/09/2010, 09:34
Avatar de principiantedelphp  
Fecha de Ingreso: febrero-2010
Mensajes: 160
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Problemas con un contador

No, siguen los problemas. Bueno, no importa, gracias por la ayuda, ya veré como lo hago.
  #7 (permalink)  
Antiguo 11/09/2010, 12:25
Avatar de principiantedelphp  
Fecha de Ingreso: febrero-2010
Mensajes: 160
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Problemas con un contador

Hola mortiprogramador, he colocado tu codigo, con pequeñas modificaciones: Imprime en pantalla todo el archivo, pero nada en la base de datos. El código completo es este (falta la conexion a la base de datos, que siempre esta ok)

Cita:
$lines = file('kramnik2.txt');
foreach ($lines as $line_num)
$datos[] = $line_num;}

foreach ($datos as $line_num)
$event = $datos[0];
$site=$datos[1];
$date=$datos[2];
$round=$datos[3];
$whiteplayer=$datos[4];
$blackplayer=$datos[5];
$result=$datos[6];
$eco=$datos[7];
$whiteelo=$datos[8];
$blackelo=$datos[9];
$plycount=$datos[10];
$eventdate=$datos[11];
$source=$datos[12];
$sourcedate=$datos[13];
$empty1=$datos[14];
$q = "INSERT INTO chesstemporal (event, site, game) values ";
for ($contador=15; $contador<=100; $contador++)
{
$game=$game.$datos[$contador];
if (($datos[$contador]!=" "))
{$q ="('$event', '$site', '$game'),";}
else
{$game=NULL;}
$q = substr($q,0,strlen($q)-1);}
echo $game;
mysql_query($q, $link);
mysql_close($link);
Cuando imprime en pantalla, la variable "$game" tendrían que ser todas las lineas antes de la linea sea NULL, inserte en la base de datos y luego siga imprimiendo en la linea 2.
  #8 (permalink)  
Antiguo 11/09/2010, 12:46
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problemas con un contador

Hola
bueno, pues mira, yo hice esta prueba

Código PHP:
Ver original
  1. <?php
  2. $link=mysql_connect("localhost","user","password");
  3. mysql_select_db('prueba');
  4. $q = "INSERT INTO chesstemporal (event, site, game) values ";
  5.  
  6. for ($contador=15; $contador<=100; $contador++)
  7. {
  8. $event = "event ".$contador;
  9. $site = "site ".$contador;
  10. $datos[$contador]=$contador;
  11. $game=$game.$datos[$contador];
  12. if (($datos[$contador]!=" "))
  13. { $q.="('$event', '$site', '$game'),";}
  14. }
  15. //recortar última coma para evitar error de sintaxis sql
  16. $q = substr($q,0,strlen($q)-1);
  17.  
  18. echo $q;
  19. mysql_query($q, $link);
  20. mysql_close($link);
  21. ?>

en cuyo caso para la prueba voy creando el array en el mismo for,
y resultado de esto inserta 86 registros (pues en mi caso no tengo vacios)

y al imprimir $q se ve algo así

Código:
INSERT INTO chesstemporal (event, site, game) values ('event 15', 'site  15', '15'),('event 16', 'site 16', '1516'),('event 17', 'site 17',  '151617'),('event 18', 'site 18', '15161718'),('event 19', 'site 19',  '1516171819'),('event 20', 'site 20', '151617181920'),('event 21', 'site  21', '15161718192021'),('event 22', 'site 22',  '1516171819202122'),('event 23', 'site 23',  '151617181920212223'),('event 24', 'site 24',  '15161718192021222324'),('event 25', 'site 25',  '1516171819202122232425'),('event 26', 'site 26',  '151617181920212223242526'),('event 27', 'site 27',  '15161718192021222324252627'),('event 28', 'site 28',  '1516171819202122232425262728'),('event 29', 'site 29',  '151617181920212223242526272829'),('event 30', 'site 30',  '15161718192021222324252627282930'),('event 31', 'site 31',  '1516171819202122232425262728293031'),('event 32', 'site 32',  '151617181920212223242526272829303132'),('event 33', 'site 33',  '15161718192021222324252627282930313233'),('event 34', 'site 34',  '1516171819202122232425262728293031323334'),('event 35', 'site 35',  '151617181920212223242526272829303132333435'),('event 36', 'site 36',  '15161718192021222324252627282930313233343536'),('event 37', 'site 37',  '1516171819202122232425262728293031323334353637'),('event 38', 'site  38', '151617181920212223242526272829303132333435363738'),('event 39',  'site 39', '15161718192021222324252627282930313233343536373839'),('event  40', 'site 40',  '1516171819202122232425262728293031323334353637383940'),('event 41',  'site 41',  '151617181920212223242526272829303132333435363738394041'),('event 42',  'site 42',  '15161718192021222324252627282930313233343536373839404142'),('event 43',  'site 43',  '1516171819202122232425262728293031323334353637383940414243'),('event  44', 'site 44',  '151617181920212223242526272829303132333435363738394041424344'),('event  45', 'site 45',  '15161718192021222324252627282930313233343536373839404142434445'),('event  46', 'site 46',  '1516171819202122232425262728293031323334353637383940414243444546'),('event  47', 'site 47',  '151617181920212223242526272829303132333435363738394041424344454647'),('event  48', 'site 48',  '15161718192021222324252627282930313233343536373839404142434445464748'),
.......... hasta el 100.....
('event 100', 'site 100',  '15161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100')
siendo insertados 86 registros

eso es lo que yo obtengo, tu quieres obtener algo distinto entonces?
nos comentas
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #9 (permalink)  
Antiguo 11/09/2010, 13:01
Avatar de principiantedelphp  
Fecha de Ingreso: febrero-2010
Mensajes: 160
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Problemas con un contador

Muy interesante ahora lo pruebo. Pero no veo en el código donde abris el archivo de texto para leer las lineas
  #10 (permalink)  
Antiguo 11/09/2010, 13:21
Avatar de principiantedelphp  
Fecha de Ingreso: febrero-2010
Mensajes: 160
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Problemas con un contador

Salio muy bien, excelente: El problema es que en $game iba agregando de a 2 cifras, no era un valor único. Muchas gracias

Etiquetas: contador
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 06:05.