Foros del Web » Programando para Internet » PHP »

Muy Urgente, ayuda please

Estas en el tema de Muy Urgente, ayuda please en el foro de PHP en Foros del Web. Hola soy novato en PHP y tengo q crear un programilla q m lea un fichero con este formato: 196.200.131.174 wn4.cnrst.magrid.ma 196.200.131.175 wn5.cnrst.magrid.ma 194.204.230.241 ws2.maghrebsteel.ma ...
  #1 (permalink)  
Antiguo 29/06/2009, 00:09
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 14 años, 10 meses
Puntos: 0
Muy Urgente, ayuda please

Hola soy novato en PHP y tengo q crear un programilla q m lea un fichero con este formato:
196.200.131.174 wn4.cnrst.magrid.ma
196.200.131.175 wn5.cnrst.magrid.ma
194.204.230.241 ws2.maghrebsteel.ma
194.250.170.168 w_w_w.cetelem.ma
194.204.202.4 w_w_w.directsky.ma
84.16.84.246 w_w_w.e-access.ma
84.16.95.115 w_w_w.e-access.ma
84.16.94.127 w_w_w.e-taiba.ma
193.49.31.115 w_w_w.eigsica.ma
194.204.209.6 w_w_w.eleves.inpt.ac.ma
quedandose solo con estos datos:
magrid.ma
maghrebsteel.ma
cetelem.ma
directsky.ma
e-access.ma
e-taiba.ma
eigsica.ma
inpt.ac.ma

La lectura y aislamiento de los datos me loas hace bien pq los inserto todos en un fichero auxiliar para hacer pruebas y ver q me sta leyendo y el resltado es correcto. Pero el objetivo no es almacenar estas capturas en un txt auxiliar sino en una BD; y ahi es donde aparecen mis problemas y keria saber si alguien me puede exar una mano q estoy muy perdido, el codigo es el siguiente:

<?php
ini_set('display_errors', E_ALL ^ E_NOTICE);
error_reporting(E_ALL ^ E_NOTICE);

mysql_connect('localhost', 'root', '') or die("Could not connect: " . mysql_error());
mysql_select_db('dominios');

$domain_aux= array(0 => "co", 1 => "net", 2=> "ac", 3=> "org", 4=> "gov", 5=> "press");

$file=fopen("C://wamp//www//ma", "r") or exit ("Unable to open file!!");
$auxiliar = fopen("C://wamp//www//prueba.txt","w");

$k=0;
$misdominios=array();

function tableExists($table_name)
{
$Table = mysql_query("show tables like '" . $table_name . "'");

if(mysql_fetch_row($Table) === false)
return(false);

return(true);
}

//echo "apertura correcta"."<br/>";

while (!feof($file)) {

$bufer = fgets($file);
if($bufer===null)
{
echo "linea vacia";
break;
}
$resultado=sscanf($bufer, "%s %s");
//unset($result[0]);
$linea=$resultado[1];
$lin=explode(".", $linea);

if($lin[count($lin)-2]===$domain_aux[0]|| $lin[count($lin)-2]===$domain_aux[1] || $lin[count($lin)-2]===$domain_aux[2] || $lin[count($lin)-2]===$domain_aux[3] || $lin[count($lin)-2]===$domain_aux[4] || $lin[count($lin)-2]===$domain_aux[5]){
$guardo = lin[count($lin)-3].".".$lin[count($lin)-2].".".$lin[count($lin)-1];
}
else{
$guardo = $lin[count($lin)-2].".".$lin[count($lin)-1];
}

$tabla= $lin[count($lin)-1];

if(tableExists($tabla)){//La tabla existe
$sql="SELECT Direccion from ".$tabla." where Direccion ='".$guardo."'";
$result=mysql_query($sql);

$num_rows = mysql_num_rows($result);
if ($num_rows>0){}
else{//Insertamos guardo en tabla $tabla
echo "tu padre";
$sql2 = "INSERT INTO ".$tabla." (Direccion) VALUES ('".$guardo."')";
mysql_query($sql2);
}
}
else{
$sql="CREATE TABLE ".$tabla." ('Direccion' varchar(30));";
mysql_query($sql);
$sql2 = "INSERT INTO ".$tabla." (Direccion) VALUES ('".$guardo."')";
mysql_query($sql2);
}
/*if (in_array($guardo, $misdominios)||($guardo==".")){}
else{
$misdominios[$k]=$guardo;
$k++;
echo $misdominios[$k];
fputs($auxiliar, $guardo. "\n");
} */
}
fclose($file);
fclose($auxiliar);
?>
De momento en mi BD dominios solo tengo estas tablas com, net y org, asi q m deberia de crear otra q fuese ma y me inserte ahi todas las direcciones sin repetir, pero no me lo hace ya q me salta un warning despues de $num_rows = mysql_num_rows($result); ya q no se pq el result no sta bien.
Por favor a ver si alguien me puede exar una mano q es muy urgente.
Muchas gracias de antemano
  #2 (permalink)  
Antiguo 29/06/2009, 00:34
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Muy Urgente, ayuda please

como creaste el campo donde guardas tus datos?
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #3 (permalink)  
Antiguo 29/06/2009, 01:41
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Muy Urgente, ayuda please

Hola Kaninox gracias por tu respuesta tan rapida. pues veras, te comento un poco en mi BD (dominios) de momento tengo las tablas es, com, net y org; por lo tanto deberia comprobar si la tabla ma (q es la q guardo en $tabla) existe, en caso de que exista introduzco el dominio en el campo Direccion de la tabla ma, (sin repetirlo) y si no existe creo la tabla e inserto el dominio en el campo Direccion de la tabla ma recien creada, el codigo d sta parte es este:

if(tableExists($tabla)){//La tabla existe
$sql="SELECT Direccion from ".$tabla." where Direccion ='".$guardo."'";
$result=mysql_query($sql);//con esto compruebo q la direccion este previamente registrada

$num_rows = mysql_num_rows($result);//El error me surje aki, ya q supuestamente result no almacena un valor permitido
if ($num_rows>0){//si esta direccion ya estaba registrada no hago nada}
else{//Insertamos $guardo en el campo Direccion de la tabla $tabla

$sql2 = "INSERT INTO ".$tabla." (Direccion) VALUES ('".$guardo."')";
mysql_query($sql2);
}
}
else{//Si aun no existia la tabla la creo
$sql="CREATE TABLE ".$tabla." ('Direccion' varchar(30));";//Creo la tabla con nombre $tabla y un campo Direccion q deberia de ser unico para q no se repita pero no sabia como indicar esto
mysql_query($sql);
$sql2 = "INSERT INTO ".$tabla." (Direccion) VALUES ('".$guardo."')";
mysql_query($sql2);
}

Pero ya t digo si intento almacenar la $guardo en un fichero de texto me lo hace correctamente con el valor que quiero capturar realmente, y eso me hace ver claramente que el error lo tengo cn mysql pero es q no se como solucionarlo. T agradeceria q m puedas exar una mano y muchas gracias d antemano
  #4 (permalink)  
Antiguo 29/06/2009, 12:36
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Muy Urgente, ayuda please

por ello te pregunte como tienes creada tu tabla y tus datos en mysql si son de tipo INT, varchar que largo le diste a los datos que tienes cuales son autoincrement, etc...
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #5 (permalink)  
Antiguo 29/06/2009, 13:49
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Muy Urgente, ayuda please

Hola Kaninox, pues la tabla la creo asi:
if(tableExists($tabla)){//La tabla existe
$sql="SELECT Direccion from ".$tabla." where Direccion ='".$guardo."'";
$result=mysql_query($sql);//con esto compruebo q la direccion este previamente registrada

$num_rows = mysql_num_rows($result);//El error me surje aki, ya q supuestamente result no almacena un valor permitido
if ($num_rows>0){//si esta direccion ya estaba registrada no hago nada}
else{//Insertamos $guardo en el campo Direccion de la tabla $tabla

$sql2 = "INSERT INTO ".$tabla." (Direccion) VALUES ('".$guardo."')";
mysql_query($sql2);
}
}
else{//Si aun no existia la tabla la creo
$sql="CREATE TABLE ".$tabla." ('Direccion' varchar(30));";//Creo la tabla con nombre $tabla y un campo Direccion q sera varchar de longitud 30 y deberia de ser unico para q no se repita pero no sabia como indicar esto
mysql_query($sql);
$sql2 = "INSERT INTO ".$tabla." (Direccion) VALUES ('".$guardo."')";//Aqui voy rellenando el campo Direccion de la tabla
mysql_query($sql2);
}

De momento en mi BD no existe ninguna tabla con el nombre ma, por lo q primero me deberia de crear una tabla con ese nombre y con un campo Direccion de tipo varchar de longitud 30, pero no hace nada solo me saca un warning en esta linea $num_rows = mysql_num_rows($result); como si $result no es un tipo de datos aceptable.
Gracias por la ayuda
  #6 (permalink)  
Antiguo 29/06/2009, 13:52
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
Respuesta: Muy Urgente, ayuda please

Como tienes el codigo actualmente
  #7 (permalink)  
Antiguo 29/06/2009, 14:00
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Muy Urgente, ayuda please

Hola acoevil, ahora mismo el codigo esta asi:
<?php
ini_set('display_errors', E_ALL ^ E_NOTICE);
error_reporting(E_ALL ^ E_NOTICE);
/*mysql_connect('localhost', 'controlm_moussa', 'moussa') or die("Could not connect: " . mysql_error());
mysql_select_db('controlm_dominios'); */

mysql_connect('localhost', 'root', '') or die("Could not connect: " . mysql_error());
mysql_select_db('dominios');

$domain_aux= array(0 => "co", 1 => "net", 2=> "ac", 3=> "org", 4=> "gov", 5=> "press");

$file=fopen("C://wamp//www//ma", "r") or exit ("Unable to open file!!");
$auxiliar = fopen("C://wamp//www//prueba.txt","w");

$k=0;
$misdominios=array();

function tableExists($table_name)
{
$Table = mysql_query("show tables like '" . $table_name . "'");

if(mysql_fetch_row($Table) === false)
return(false);

return(true);
}

echo "apertura correcta"."<br/>";
while (!feof($file)) {

$bufer = fgets($file);
if($bufer===null)
{
echo "linea vacia";
break;
}
$resultado=sscanf($bufer, "%s %s");
//unset($result[0]);
$linea=$resultado[1];
$lin=explode(".", $linea);

if($lin[count($lin)-2]===$domain_aux[0]|| $lin[count($lin)-2]===$domain_aux[1] || $lin[count($lin)-2]===$domain_aux[2] || $lin[count($lin)-2]===$domain_aux[3] || $lin[count($lin)-2]===$domain_aux[4] || $lin[count($lin)-2]===$domain_aux[5]){
$guardo = $lin[count($lin)-3].".".$lin[count($lin)-2].".".$lin[count($lin)-1];
}
else{
$guardo = $lin[count($lin)-2].".".$lin[count($lin)-1];
}
//echo $guardo;

$tabla= $lin[count($lin)-1];
//echo $tabla;
if(tableExists($tabla)){//Si la tabla existe deberia d comprobar si la entrada ya existe, por eso hago la siguiente consulta:
$sql="SELECT Direccion from ".$tabla." where Direccion ='".$guardo."'";
$result=mysql_query($sql);
//echo "yo";
$num_rows = mysql_num_rows($result);//Pero parece q sta linea es la incorrecta ya q m devuelve un "Warning: mysql_num_rows(): supplied argument is not a valid MySQL result "
if ($num_rows>0){}//Si ya existe no hago nada
else{//Si no, insertamos guardo en tabla $tabla

$sql2 = "INSERT INTO ".$tabla." (Direccion) VALUES ('".$guardo."')";
mysql_query($sql2);
}
}
else{//, PRIMARY KEY ('Direccion')//Si la tabla no existia la creo con el nombre correspondiente y con un campo Direccion de tipo varchar de longitud 30
$sql="CREATE TABLE ".$tabla." ('Direccion' varchar(30));";
mysql_query($sql);
$sql2 = "INSERT INTO ".$tabla." (Direccion) VALUES ('".$guardo."')";
mysql_query($sql2);
}
/*if (in_array($guardo, $misdominios)||($guardo==".")){}
else{
$misdominios[$k]=$guardo;
$k++;
echo $misdominios[$k];
fputs($auxiliar, $guardo. "\n");
} */
}
fclose($file);
fclose($auxiliar);

echo "fin";
?>

Gracias por tu interes
  #8 (permalink)  
Antiguo 29/06/2009, 14:11
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
Respuesta: Muy Urgente, ayuda please

Q tal depura las consultas colocandole a $result=mysql_query($sql) or die( mysql_error() );

No es que el mysql_num_rows este mal, si no que la consulta la puedes estar generando mal

consulta:
$sql="SELECT Direccion from ".$tabla." where Direccion ='".$guardo."'";

A simple vista parece bien pero tienes que revisar los valores de $tabla y $guardado para estar seguros.

Despues de colocarle el or die(mysql_error()), te devolvera el error que se esta produciendo asi como lo hace el mysql.
  #9 (permalink)  
Antiguo 05/07/2009, 04:33
 
Fecha de Ingreso: junio-2009
Mensajes: 115
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Muy Urgente, ayuda please

Hola, muchas gracias acoevil por tu ayuda, era simplemente un problema con el nombre del campo Direccion, ya que al crear la tabla lo llamaba 'Direccion' y claro a la hora de hacer los inserts los intentaba insertar en el campo Direccion que obviamente no existia (putas comillas XD).

Tenia otra duda por si alguien pudiese echarme una mano, tiene que ver con el paso de variables de una pagina php a otra. veran mi proposito es coger una variable que ya he tratado en primero.php e imprimirla en imprime.php, el codigo que utilizo es el siguiente:

en primero.php:
<a href="imprime.php?resultado=<?php echo $result ?>"> </a>

y en imprime.php:
$res = $_GET['resultado'];
echo $res;


pero nunca me lleva a la pagina donde se deberia de imprimir. Os agradeceria mucho la ayuda.
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:48.