Duda con PHP

hola, quería saber si alguien ve el error en el siguiente codigo:


<?
   $archivo = "./acces/acces.log";
   $gestor = fopen($archivo, "r");
   mysql_connect ("localhost","root","");
   mysql_select_db("ies");
   while (!feof){
      $contenido = fgets($gestor);
      mysql_query('insert into lloc_internet(lloc,comprovat,prohibit) values($contenido,false,false)');      
   }
   fclose ($gestor);
?>


Lo que quiero que haga, es que abra el archivo "acces.log", y que a cada linea, lo guarde en la base de datos "ies".

pD: No me da ningun error, pero tampoco funciona, haber si alguien sabe que he echo mal [burla3]
pD2: Por si sirve de algo tanto la base de datos como el servidor web es xampp
while (!feof){

Ahí te falta un parámetro, ¿no?
Tengo otra duda, lo que he añadido es que, lea los datos que he añadido a la base de datos, i lo muestre por pantalla en una trabla, en la que convierte la url en un link, y pone dos checkbox, uno para poner que la pagina ya esta comprobada (así en la base de datos se actualiza, en vez de un 0 tiene un 1, i ya no la muestra por pantalla) y otro que es para que los que marque, me guarde las url en un archivo que se llamara "prohibits.txt".

Codigo:
<script language="JavaScript" type="text/javascript">
function ficaCheck(chk){

   if (chk.checked){
      chk.checked=false;
   }
   else chk.checked=true;
}

function ficaclick(chk0){
   chk0.checked=true;
      }
</script>
<?php
   extract($_GET);
   extract($_POST);
   
   if (isset($Desa)){
      echo "longitud de lloc ".count($lloc);
      $archivoProv = "./acces/prohibits.txt";
      $gestorProhb = fopen($archivoProv, "w");
      mysql_connect("localhost","root","");
      mysql_select_db("ies");
      for ($i=0;$i<count($lloc);$i++){
         $varComprovat="comprovat".$i;
         $compro=$$varComprovat;
         if (isset($compro)){
            $update="update lloc_internet set comprovat=true";
            $varProhibit="prohibit".$i;
            $prohi=$$varProhibit;
            if (isset ($prohi)){
               $update=$update.", prohibit=true";
            }
            $update=$update. " where lloc='".$lloc[$i]."'";
            mysql_query($update);
            $denegat= "SELECT lloc FROM lloc_internet WHERE prohibit=true";
            $NAdmit=mysql_query($denegat);
            while ($denegades = mysql_fetch_assoc($NAdmit)) {
               $cadena=$denegades["lloc"];
[b]               for ($j=0;$j<strlen($cadena);$j++){
                  if ($cadena[$j] == "."){
                     $punt[]=$j;
                  }
               }
               if (strlen($j) > 2){
                  $segon=substr($cadena,$punt[strlen($punt)-2]+1);
               }
               else{
                  $segon=$cadena;
               }
               fwrite ($gestorProhb,$segon."\n");
            }   [/b]
            echo $update."<br>";
            $update="";
         }
         echo " i ".$i;
      }
      fclose ($gestorProhb);
      mysql_close;
   }
   
?>
<?
   $archivo = "./acces/acces.log";
   $gestor = fopen($archivo, "r");
   mysql_connect("localhost","root","");
   mysql_select_db("ies");
   $contenido = fgets($gestor);
   while (!feof($gestor)){
      $ultimCar=substr($contenido,strlen($contenido)-1,1);
      $penultimCar=substr($contenido,strlen($contenido)-2,1);
      if (ord($ultimCar)==10) {
         $contenido=substr($contenido,0,strlen($contenido)-1);
         }
      if (ord($penultimCar)==13) {
         $contenido=substr($contenido,0,strlen($contenido)-1);
         }
      $insert="insert into lloc_internet(lloc,comprovat,prohibit) values ('".$contenido."',false,false)";
      mysql_query($insert);   
      $contenido = fgets($gestor);   
   }
   fclose ($gestor);

   $select="SELECT lloc, comprovat, prohibit FROM lloc_internet WHERE comprovat=false";
   $result = mysql_query($select);
   mysql_close;
?>
<style type="text/css">
<!--
.Estilo3 {font-family: "Comic Sans MS"; font-weight: bold; }
-->
</style>


<br/>
<br/>
<form action="" method="get">
  <table align="center" width="200" border="5">
    <tr>
      <td align="center" bgcolor="#3399CC"><span class="Estilo3">LLOC</span></td>
      <td align="center" bgcolor="#3399CC"><span class="Estilo3">COMPROVAT</span></td>
      <td align="center" bgcolor="#3399CC"><span class="Estilo3">PROHIBIT</span></td>
     <td align="center" bgcolor="#3399CC"><span class="Estilo3">DESAR</span></td>
    </tr>
<?php
   $linia=0;
   while ($fila = mysql_fetch_assoc($result)) {
?>
    <tr><input name="lloc[<?php echo $linia?>]" type="hidden" value="<?php echo $fila["lloc"]?>" />
     <td>
    <a href=" <?php echo $fila["lloc"];?>" onclick="ficaCheck(comprovat<?php echo $linia?>)"><?php echo $fila["lloc"]?></a>
    </td>
      <td>
        <input type="checkbox" name="comprovat<?php echo $linia?>" value="true" id="comprovat<?php echo $linia?>"/>
     </td>
      <td>
        <input type="checkbox" name="prohibit<?php echo $linia?>" value="true" onclick="ficaclick(comprovat<?php echo $linia ?>)" /></td>
       <td>
             <input name="Desa" type="submit" value="Desa" />
      </td>
    </tr>
   
<?php
      $linia++;
   }
?>
  </table>
</form>


La duda la tengo en el texto en negrita, en teoria lo que hace es quitar el "http://www." a las url, para que al guardarlo en el archivo solo tenga por ejemplo "google.es".

Aver si alguien sabe que he echo mal [+risas]
apalomares escribió:Codigo:
[...]
               for ($j=0;$j<strlen($cadena);$j++){
                  if ($cadena[$j] == "."){
                     $punt[]=$j;
                  }
               }
               if (strlen($j) > 2){
                  $segon=substr($cadena,$punt[strlen($punt)-2]+1);
               }
               else{
                  $segon=$cadena;
               }
               fwrite ($gestorProhb,$segon."\n");
            }   
[...]


Imagino que ya lo habrás resuelto, pero por si acaso, si quieres eliminar una cierta cadena fija ("http://www.", por ejemplo), y que sepas que únicamente va a estar una vez en la cadena, simplemente puedes hacer:

$segon=str_replace("http://www.","",$cadena)


Si por el contrario quieres partir antes del primer punto, puedes hacer esto:

$punto=strpos($cadena,".");
if ($punto!==FALSE) { // si se encuentra el punto
   $segon=substr($cadena,$punto+1);
}
else {
   $segon=$cadena;
}


Por cierto, si quieres pegar una buena parte de código para que te ayuden, te ayudará que el código no esté en catalán :P Yo te recomiendo que si no es política de empresa (en la mía por ejemplo obligan a poner variables y comentarios en castellano) te acostumbres a ponerlo en inglés. Así, si pides ayuda seguro que la gente lo entiende. Por lo menos las variables, los comentarios entiendo que pueden costar más :P

Espero haberte ayudado ;)

PD: Si tienes tiempo, échale un ojo a las distintas funciones de cadenas del manual, algunas pueden salvarte la vida ;) Éste es el enlace: http://es.php.net/manual/es/ref.strings.php
4 respuestas