PHP - Error en código

 
Vista:
sin imagen de perfil

Error en código

Publicado por Julian96 (5 intervenciones) el 15/11/2017 20:55:25
Hola a todos, tengo un problema con un programa, mediante un formulario guarda dos datos en un txt y mediante otro formulario más abajo buscas si la palabra está en el txt. El programa funciona bien pero siempre salta un error al buscar en el txt. El código es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
 
if(isset($_POST['buscar'])){
 
	$file = fopen("Fichero_Prueba.txt", "r");
 
	$indice1=0;
	$indice2=0;
	while (!feof($file)) {
 
		$fila = fgets($file);
		$libro = explode(" ....... ",$fila);
		$datos[$indice1][$indice2]= $libro[0];
		$indice2++;
		$datos[$indice1][$indice2]=str_replace("\r\n",'',$libro[1]);
		$indice1++;
		$indice2--;
 
	}
	fclose($file);
	$encontrado=false;
	$busqueda= $_POST['titulo'];
	for ($i=0; $i<count($datos);$i++){
		for ($j=0; $j<count($datos);$j++){
			if($busqueda==$datos[$i][$j]){
				echo "Registro encontrado";
				$encontrado=true;
			}
		}
	}
	if(!$encontrado){
		echo "No se han encontrado registros";
	}
}
?>
<html>
	<head>
		<title>Añadir y buscar libros</title>
	</head>
 
	<body>
 
 
 
		<br />
 
		<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
 
	   		<br><br>
	   		<fieldset id="caja">
	   			<legend>Buscar libros</legend>
	   			Titulo o autor:<input type="text" name="titulo" required size="20" value="">
				<p><input type="submit" value="Buscar datos" name="buscar">
			</fieldset>
 
		</form>
 
	</body>
 
</html>

PD: No he puesto el código del formulario para añadir datos al archivo txt porque esa parte funcionaba, pero sabiendo que en el txt tengo:
casa ....... arbol
perro ....... gato
¿Por qué al rellenar el formulario de búsqueda con casa o árbol me sale este error? Undefined offset: 1 in (varias veces). Buscar, busca bien pero con ese fallo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Error en código

Publicado por gonzalo (615 intervenciones) el 16/11/2017 02:31:42
puedes anexar el error que te marca?

salu2

si sacáramos el oro que se encuentra en el nucleo de la tierra este cubriria la superficie de la tierra y tendría 3 metros de espesor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error en código

Publicado por Eddy (5 intervenciones) el 16/11/2017 16:56:28
El error que me salta es porque se necesita eliminar una línea en blanco que se crea siempre en el txt
Al introducir los datos y al hacer salto de línea después de cada frase acaba apareciendo esa línea final
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzerox
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Error en código

Publicado por abzerox (157 intervenciones) el 16/11/2017 04:05:58
Hola, si lo que quieres es buscar saber si el libro se encuentra dentro de los registros, no es necesario que recorras todo el archivo, Hice algunas mejoras en tu código, lo comparto para que puedas estudiarlo y modificarlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
 
if (isset($_POST['buscar'])) {
    $file = fopen("Fichero_Prueba.txt", "r");
    $exist = false;
    while(!feof($file)) {
        $line = fgets($file);
        $books = explode(' ....... ', $line);
        if (in_array($_POST['titulo'], $books)) {
            $exist = true;
            break;
        }
    }
 
    if ($exist) {
        echo 'Registro encontrado';
    } else  {
        echo 'No se han encontrado registros';
    }
 
    fclose($file);
}
?>
<html>
<head>
<title>Añadir y buscar libros</title>
</head>
 
<body>
    <br />
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
    <br><br>
    <fieldset id="caja">
    <legend>Buscar libros</legend>
    Titulo o autor:<input type="text" name="titulo" required size="20" value="">
    <p><input type="submit" value="Buscar datos" name="buscar">
    </fieldset>
    </form>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error en código

Publicado por Eddy (5 intervenciones) el 16/11/2017 16:59:18
Genial, muchas gracias. Aunque sirve para buscar si existe el libro a través del título, si tuviese que buscar si existe también a través del autor no sería mi forma? Es decir, buscando por la segunda columna que se crea en el txt
En este caso--> casa ....... arbol y buscar por arbol que sería el autor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzerox
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Error en código

Publicado por abzerox (157 intervenciones) el 17/11/2017 04:43:01
En parte si, pero deberias romper el bucle una vez encontrado ya que si no seguiria comparando. Ademas como te comente antes, no es necesario recorrer toda la estructura cuando quieres hacer una búsqueda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar