PHP - php y mysql inserta mal

 
Vista:
sin imagen de perfil

php y mysql inserta mal

Publicado por mario (17 intervenciones) el 12/02/2017 13:25:27
Hola buenas tengo un problema y es que quiero insertar unas operaciones en mi base de datos y el primer problema es que no me inserta bien la fecha y el segundo es que en tipo me inserta siempre "c" que c significa comprar cuando me deberia de insertar "a" de alquilar.


Captura
Esta es la base de datos los ultimos 4 registros son los que he insertado yo con mi codigo y en dos de ellos el tipo deberia de ser 'a' pero siempre me guarda "c"

Captura2
Este es el fichero de donde cojo el nombre de la tabla y si es alquilar o comprar


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
<?php
include"funciones.php";
session_start();
 
if(isset($_SESSION['usuario'])){
if(isset($_POST['aceptar'])){
 
 
$conexion=conexion();
$abrir=fopen("factura.txt","r");
 
while(!feof($abrir)){
 
$email=$_SESSION['email'];
$linea=fgets($abrir);
$array=explode(",",$linea);
$fecha=date('Y-m-d');
echo $array[1];
 
if($array[1]=='a'){
  $insertar="INSERT INTO operaciones (nombre,email,fecha,tipo) VALUES ('$array[0]','$email',$fecha,'a')";
  $ejecutar=mysqli_query($conexion,$insertar);
}
else{
  $insertar2="INSERT INTO operaciones (nombre,email,fecha,tipo) VALUES ('$array[0]','$email',$fecha,'c')";
  $ejecutar2=mysqli_query($conexion,$insertar2);
}
 
}
fclose($abrir);
 
echo "se ha introducido correctamente";
  echo "</br>";
echo $email;
  echo $fecha;
 
 
}
 
}
?>
Este es el codigo y en el while como podemos ver diferencio en que cuando sea $array[1] = a que me inserte en tipo "a"

Gracias por vuestra atencion
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

php y mysql inserta mal

Publicado por mario (17 intervenciones) el 12/02/2017 13:46:57
5
perdon, este es el fallo que me da que se me ha olvidado subir la foto con este fallo veo que es algo de que no me coje el if pero si el else pero no se porque no me coje bien ese if(en el codigo no aparece pero he hecho un print_r($array) para ver como em coje el array y me coje bien
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 kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

php y mysql inserta mal

Publicado por kip (877 intervenciones) el 12/02/2017 22:43:46
Hola, el problema del offset de la imagen que colocas se debe a la funcion feof colocada en el while, tienes dos opciones, colocar una condicion luego de tomar la linea con fgets para verificar que la funcion haya retornado la linea, de esta forma:

1
2
$linea = fgets($abrir);
if ($linea === false) break; // AGREGAMOS ESTA LINEA

He colocado un break para evitar que continue con las demas lineas de codigo dentro del while.

La otra opcion es no usar feof como condicion en el while si no mas bien usar fgets en esta, asi:

1
2
3
4
while(($linea = fgets($abrir)) !== false) {
  $email = $_SESSION['email'];
  $array = explode(",", $linea);
  $fecha = date('Y-m-d');

Ahora bien, en la condicion para saber si es 'a' o 'c' en el array de la linea dividida con la ',', creo que no lo veo necesario, porque mejor no ahorras un par de lineas y en lugar de hacer el if colocas que ingrese directamente el elemento del array, lo digo ya que este es igual a la letra que ingresaras en la tabla no?

1
$insertar="INSERT INTO operaciones (nombre,email,fecha,tipo) VALUES ('{$array[0]}','$email','$fecha','{$array[1]}')";

Le coloque a la fecha las comillas simples para que sean validas en la query, ademas los { } para que no haya problemas en la lectura de los elementos del array (Sintaxis compleja (llaves) http://php.net/manual/es/language.types.string.php).

Otra opcion para evitar usar las funciones de manejos de archivos que quizas a veces son algo tediosas, es usar la funcion file() http://php.net/manual/es/function.file.php.
Esta funcion te retorna el contenido de cada linea de un archivo como elemento de un array y almacenarlo en una variable, de esa forma puedes con un foreach leer cada elemento del array (este seria cada linea) y hacer el explode que deseas.

Nos cuentas como vas y si te salta algun error con lo que te mencione arriba.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

php y mysql inserta mal

Publicado por mario (17 intervenciones) el 13/02/2017 21:07:08
He puesto el while como tu me has dicho y enved de poner con if solo he puesto el insert para acortar codigo es mejor tambien y me ha funcionado perfectamente.

Ahora voy a mirar las dos funciones que me has comentado, muchas gracias por la ayuda :)
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