Foros del Web » Programando para Internet » PHP »

Ingresar datos a la DB

Estas en el tema de Ingresar datos a la DB en el foro de PHP en Foros del Web. Hola amig@s tengo el siguiente problema, tengo que ingresar unos datos de un texto que cada semana me entregan, el txt tiene la siguiente forma ...
  #1 (permalink)  
Antiguo 07/06/2009, 07:42
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 2 meses
Puntos: 3
Ingresar datos a la DB

Hola amig@s tengo el siguiente problema, tengo que ingresar unos datos de un texto que cada semana me entregan, el txt tiene la siguiente forma (nombre, 1_columna):

Net-Worm 20.5645%
HEUR:Trojan 10.4839%
Trojan-Win32.UBar.e 7.2581%

y lo que necesito es ingresar en la base de datos de forma digital estos contenidos; otra pregunta es como hacer para que en la segunda semana que se creara otra columna (nombre, 1_columna, 2_columna) identifique si existe ya algun nombre repetido y automaticamente ponga en ese nombre la cantidad que le coresponde y si no asoma que coloque cero?
de antemano muchas gracias
  #2 (permalink)  
Antiguo 07/06/2009, 09:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Ingresar datos a la DB

¿Cual es el problema?, leer el archivo fopen/fclose o file. Comparar, un if(), insertar / actualizar en la bdd, depende del motor de tu BDD, pero puedes usar mysql_query si es MySQL.

Saludos.
  #3 (permalink)  
Antiguo 07/06/2009, 11:18
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Ingresar datos a la DB

Hola GatorV, lo que e conseguido es lo siguiente y si, uso mysql:
Código PHP:
$text trim($text);        
$text preg_replace("/\s\s+/"' '$text);
$regExp1="/([a-zA-Z][^ ]*)/i";
preg_match_all($regExp1$text$patron1);
$regExp2="/(\w+\.\w+[%][$ ]*)/";
preg_match_all($regExp2$text$patron2);
$count count($patron1[1]);
for (
$row 0$row $count $row++) {
        
//echo $patron1[1][$row]."<br>";
        
echo $patron2[1][$row];        

1) como hacer para ingresar en la base de datos los dos resultados, pero tomando en cuenta lo siguiente: la primera vez que ingrese los datos en la DB, tendra que cargar todos los 20 nombres y los 20 numeros (en nombre y 1_columna, respectivamente), dentro de 1 semana que decee ingresar nuevos datos, tendria que hacer la comparacion primero de ver si en la tabla existe ya los nombres o no, de no existir, los cargaria al final de la tabla, y de existir ya los nombres, solo escribiria el valor numerico en el nuevo campo (2_campo de la misma tabla, pero que lo creare despues con algunna funcion adicional de la pagina); osea mas claro en la primera semana la tabla debe mostarse asi:

nombre 1_campo
Net-Worm 20.5645%
HEUR:Trojan 10.4839%
Trojan-Win32.UBar.e 7.2581%

y en la segunda:

nombre 1_campo 2_campo
Net-Worm 20.5645% 11.4839%
HEUR:Trojan 10.4839% 0
Trojan-Win32.UBar.e 7.2581% 0
Win32.U 0 9.2581%

tomando en cuenta que en la sehgunda semana se ingreso un nuevo nombre y se repitio el resultado de un nombre, como podria hacer esa comparacion, si alguien tiene alguna idea

Última edición por diego007007; 07/06/2009 a las 11:40
  #4 (permalink)  
Antiguo 07/06/2009, 12:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Ingresar datos a la DB

Pues haz un SELECT y compruebas si existe el nombre, si existe, entonces haces un UPDATE y si no existe haces un INSERT.

Saludos.
  #5 (permalink)  
Antiguo 07/06/2009, 16:34
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Ingresar datos a la DB

Hola GatorV, ya hice lo que me dijiste, pero me da un error y no se como corregir, este es mi codigo:
Código PHP:
<html>
<body>
<FORM ACTION="index.php" METHOD="POST">
<TEXTAREA COLS=70 ROWS=20 NAME="Texto">
</TEXTAREA>
<BR><BR>
<INPUT TYPE="submit"><INPUT TYPE="Reset">
</FORM> 
<?php
include "coneccion.php";
$text = @$_POST['Texto'];
$text trim($text);        
$text preg_replace("/\s\s+/"' '$text);
$regExp1="/([a-zA-Z][^ ]*)/i";
preg_match_all($regExp1$text$patron1);
$regExp2="/(\w+\.\w+[%][$ ]*)/";
preg_match_all($regExp2$text$patron2);
$count count($patron1[1]);
for (
$row 0$row $count $row++) {
        
$x1 $patron1[1][$row];
        
$x2 $patron2[1][$row];
        
$result mysql_query("SELECT nombre FROM 'pais' ") or die ("Problema con query");//error aqui
        
if(!(mysql_num_rows($result)>0)) {
            
$query = ("INSERT INTO pais SET nombre='$x1', primera='$x2'") or die ("Problema con query1");
            
mysql_query($query);
        } else {
            
$query = ("UPDATE pais SET primera='$x2'") or die ("Problema con query2");
            
mysql_query($query);
        }        

mysql_close($con);
?>
</body>
</html>
Mi base de datos al momento tiene la siguiente estructura:
Código PHP:
-- Base de datos: `estadistica`
-- 
Estructura de tabla para la tabla `pais`
CREATE TABLE IF NOT EXISTS `pais` (
  `
nombrevarchar(1000NOT NULL,
  `
primeraint(100NOT NULL DEFAULT '0'
ENGINE=MyISAM DEFAULT CHARSET=latin1
  #6 (permalink)  
Antiguo 07/06/2009, 16:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Ingresar datos a la DB

¿Que error?

Saludos.
  #7 (permalink)  
Antiguo 07/06/2009, 16:54
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Ingresar datos a la DB

es error de "Problema con query" es algo con la sentencia de SQL, creo que no esta bien escrita ya que en ningun lado hago conparacion del campo NOMBRE con $X1
  #8 (permalink)  
Antiguo 07/06/2009, 16:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Ingresar datos a la DB

Pues de entrada al tu hacer FROM 'pais' MySQL lo toma como literal, no como el nombre de una tabla y eso es un problema.

Por otro lado imprime el valor de mysql_error() para que veas cual es el error exacto.

Saludos.
  #9 (permalink)  
Antiguo 07/06/2009, 16:58
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 2 meses
Puntos: 3
Muchas gracias GatorV, escribo aqui para no crear un nuevo campo, te contare que de la BD tienes razon es de usar DOUBLE, pero tambien esta mal el codigo de arriba:
Código PHP:
$query = ("UPDATE pais SET primera='$x2'") or die ("Problema con query2"); 
hay que poner
Código PHP:
$query = (" UPDATE pais SET primera ='$x2' WHERE nombre = '$x1' ") or die ("Problema con query 2"); 
y en el campo
Código PHP:
$result mysql_query("SELECT nombre FROM 'pais' ") or die ("Problema con query");//error aqui 
hay que poner
Código PHP:
$result mysql_query("SELECT * FROM pais WHERE nombre = '$x1' ") ; 
Gracias por tu ayuda :)

Última edición por diego007007; 07/06/2009 a las 20:23
  #10 (permalink)  
Antiguo 07/06/2009, 20:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Ingresar datos a la DB

El tipo de datos debe de ser DOUBLE para permitir numeros flotantes, el tipo INT solo es para numeros enteros.

Saludos.
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 17:55.