Foros del Web » Programando para Internet » PHP »

comparar y eliminar datos de un fichero

Estas en el tema de comparar y eliminar datos de un fichero en el foro de PHP en Foros del Web. Hola. Tengo una especie de formulario que guarda datos en un fichero txt y despues muestra los datos en otra pagina. Tengo 2 problemillas: por ...
  #1 (permalink)  
Antiguo 12/12/2009, 21:47
 
Fecha de Ingreso: diciembre-2009
Mensajes: 1
Antigüedad: 14 años, 4 meses
Puntos: 0
comparar y eliminar datos de un fichero

Hola.
Tengo una especie de formulario que guarda datos en un fichero txt y despues muestra los datos en otra pagina.
Tengo 2 problemillas:
por ejemplo tras escribir varios datos en el fichero me gustaria por ejemplo comparar uno de ellos con los que ya esten guardados y si coinciden que me muestre el mensaje de que ya esta dicho dato introducido. Lo he intentado con la funcio strcmp pero no lo consigo.

Tambien quisiera que de los datos que introduzco pudiera decir "quiero borrar tal dato del archivo", lo unico que se me ocurre es emplear w en modo escritura pero esto me borraria todo lo que tengo en el fichero, me sobreescribe.

Esta es la primera parte del formulario que me permite introducir los datos:


<div id="form">
<form method="post" action="problema_beta_2_3.php" target="principal">
<div><label for="n">Numero:</label> <input type="text" id="n" name="n" /></div>
<div><label for="nombre">Nombre:</label> <input type="text" id="nombre" name="nombre" /></div>
<div><label for="ide">ide:</label> <input type="text" id="ide" name="ide" /></div>
<div><input type="submit" value="Enviar" /></div>
</form>

Y esto es el codigo php que me escribe los datos en el fichero:

<?php

$nombre = $_POST['nombre'];
$ide = $_POST['ide'];
$n = $_POST['n'];
if ($n<0 or $n>32){
echo "Introduzca un numero entre 1 y 32";
} else {
if ($nombre == "" or $ide == "" or $n== "" ) {
echo "One or more required fields were not completed. Intentalo de nuevo. <br /><br />";
} else {
$oldinfo = file_get_contents("data.txt");
$guestbookdata = fopen("data.txt", "w+");
fwrite($guestbookdata, "<br><br><strong>Problema Nº</strong> $n </div><br>\n \n");
fwrite($guestbookdata, "<strong>Problema ocupado por:</strong> $nombre </div><br>\n \n");
fwrite($guestbookdata, "<strong>Ide alumno:</strong> $ide </div><br><BR>\n \n");
fwrite($guestbookdata, "$oldinfo");
fclose($guestbookdata);
readfile("data.txt");
}
}
?>

De las 3 variables importantes, me interesa comparar y borrar las 3 , pero supongo que con comparar una de ellas basta para saltar el mensaje de que " ya esta escrita" (comparando) o de borrar, por ejemplo "n" que es un numero


¿alguien me puede dar una ayudita?
  #2 (permalink)  
Antiguo 12/12/2009, 22:18
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: comparar y eliminar datos de un fichero

A ver si esto sirve:

esta te devuelve true si hay datos repetidos

Código PHP:
#tenes que pasarle la ruta del archivo y la cadena a buscar

function getCoincidence($ruta,$string){

    if(isset(
$ruta)){
        
$file=file($ruta);
        for(
$i=0;$i<count($file);$i++){
            if(
preg_match('\b'.$string.'\b/i',$file[$i]){
                return 
true;
            }else{
                return 
false;
            }
        }
    }else{
        return 
false;

Bien, esta funcion te devuelve true si la cadena ya esta dentro del archivo. Lo que deberias hacer para cumplir tu 2da meta, es anidar un if mas dentro del for de tal manera de que se reemplace esa cadena repetida, por lo que vos quieras.
Te conviene hacerte otra funcion para ello, que sea casi copia de esta.
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 12:43.