[RESOLU] Error php non mentionée

Eléphanteau du PHP | 34 Messages

30 sept. 2019, 21:46

Bonjour à toutes et à tous,

J'ai juste Error sans rien de plus dès que je charge la page. Autant dire que le bouton Ajouter ne fonctionne pas non plus.

J'ai fait un test très basique sans les $var et sans formulaire et ma base enregistre bien les informations mais dès que je passe à un formulaire et à des variables, ça ne fonctionne plus.

Où est mon erreur svp ?

<?php session_start();
require_once('add_operation_2.php');


if(isset($_POST['Ajouter']))
{
    $id_membre=$POST['id_membre'];
    $date_entree=$_POST['date_entree'];
	$heure_entree=$_POST['heure_entree'];
	$montant_achat=$_POST['montant_achat'];

$sql = "INSERT INTO operations (id_operation, id_membre, date_entree, heure_entree, montant_achat)
VALUES (0, '$id_membre', '$date_entree', '$heure_entree', '$montant_achat')";}

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?> 


<html>
    
    
    <form name="registration" method="post" action="add_operation_2.php" enctype="multipart/form-data">
		<p>Id membre </p>
        <input type="text" class="text" value=""  name="id_membre" required >
       
       <p>Date d'entrée </p>
        <input type="text" class="text" value=""  name="date_entree" required >
		
        <p>Heure d'entrée </p>
		<input type="text" class="text" value="" name="heure_entree"  required >
		
		<p>Montant de l'achat </p>
        <input type="text" class="text" value="" name="montant_achat"  >
		
    	
		
        <div class="sign-up">
		<input type="reset" value="Reset">
		<input type="submit" name="Ajouter"  value="Ajouter" >
		<div class="clear"> </div>
		</div>
		</form>
</html>
Le code de connexion
<?php
$servername = "localhost";
$username = "root";
$password = "pass";
$dbname = "user-reg";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
?>
Merci d'avance pour votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

30 sept. 2019, 22:47

id_operation est toujours égale à 0 ? ça me semble bizarre.

Sinon utilise var_dump() plutôt que echo pour afficher le contenu de tes variables, c'est plus fiable
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 34 Messages

01 oct. 2019, 09:31

Bonjour @rthur,

Heu non en effet, c'est le id auto incrementé.

Je dois mettre quoi à la place du 0 du coup ?
('', '$id_membre', '$date_entree', '$heure_entree', '$montant_achat')";}
?

Merci pour var dump()
Je modifie

Bonne journée

Avatar du membre
Mammouth du PHP | 1609 Messages

01 oct. 2019, 12:09

Bonjour wags, je suppose que la colonne id_operation est la clé primaire de la table operations ? dans ce cas généralement on met la clé primaire en auto increment et on ne la met pas dans la requête d'insert.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 34 Messages

01 oct. 2019, 12:18

Bonjour Saian,

Merci pour ta réponse précise et claire.

Ok donc je l'oublie celle là ;)

Merci

PS : J'ai donc testé. Je dois vraiment pas voir un truc évident (je suis sur ce problème depuis hier soir : oui oui j'ai dormi rassurez vous ;) ;) )

Voici le message d'erreur.

Error: INSERT INTO operations (id_membre, date_entree, heure_entree, montant_achat) VALUES ('', '2019-06-25', '15:15', '464')
Incorrect integer value: '' for column 'id_membre' at row 1

Je suppose qu'il ne prend pas en compte l'Id_membre que j'indique dans le formulaire.

Voici mon code modifié
<?php session_start();
/*require_once('add_operation_2.php');*/


$servername = "localhost";
$username = "root";
$password = "pass";
$dbname = "user-reg";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}


if(isset($_POST['Ajouter']))
{
$id_membre=$POST['id_membre'];
$date_entree=$_POST['date_entree'];
$heure_entree=$_POST['heure_entree'];
$montant_achat=$_POST['montant_achat'];

$sql = "INSERT INTO operations (id_membre, date_entree, heure_entree, montant_achat)
VALUES ('$id_membre', '$date_entree', '$heure_entree', '$montant_achat')";


if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
}
?> 


<html>
    
    
    <form name="registration" method="post" action="" enctype="multipart/form-data">
		
        <p>Id membre </p>
        <input type="text" class="text" value=""  name="id_membre" required >
       
       <p>Date d'entrée </p>
        <input type="date" class="text" value=""  name="date_entree" required >
		
        <p>Heure d'entrée </p>
	<input type="text" class="text" value="" name="heure_entree"  required >
		
	<p>Montant de l'achat </p>
        <input type="text" class="text" value="" name="montant_achat"  >
		
    	
		
        <div class="sign-up">
		<input type="reset" value="Reset">
		<input type="submit" name="Ajouter"  value="Ajouter" >
		<div class="clear"> </div>
	</div>
	</form>
</html>
J'en perds la tête et les yeux.

Merci d'avance pour vos lumières et vos aides.

Bonne journée

Avatar du membre
Mammouth du PHP | 1609 Messages

01 oct. 2019, 13:17

Oui le problème vient bien de id_membre qui est vide alors que la colonne est de type integer not null je présume.
Tu as mis $POST['id_membre']; qui n'est pas bon, si tu avais bien tous les messages d'erreur qui s'affichent tu aurais probablement une notice sur cette ligne.
C'est juste une toute petite erreur sur le nom du tableau...
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 34 Messages

01 oct. 2019, 16:32

Re,

Merci pour ton message.

Donc j'ai changé dans la base, les not null en null

Image


Maintenant, ça fonctionne mais l'id_membre n'est pas enregistré.

1 - J'aimerais comprendre mon erreur même si .....
2 - ..... dans l'idée, l'utilisateur sera connecté quand il validera le formulaire avec les données donc je voudrais lui attribuer son id_user dans id_membre de façon à ce qu'il puisse voir et modifier tous ces enregistrements plus tard.

Donc : pourquoi ce fichu id_membre ne s'enregistre pas dans la base de données (même si pour le futur c'est pas grave, je voudrais comprendre.

Merci

Avatar du membre
Mammouth du PHP | 1609 Messages

01 oct. 2019, 16:36

Le tableau des données en POST c'est $_POST pas $POST.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 34 Messages

01 oct. 2019, 17:00

Maintenant que tu le dis, ça me fait mal aux yeux tellement c'est évident.

Bon ben merci ;)

Allez étape suivante ;)

Un grand merci pour ton aide et ta patience ;)