Erreur ! SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect [Résolu]

Signaler
Messages postés
214
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
30 mars 2021
-
Messages postés
214
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
30 mars 2021
-
Bonjour à tous, j'ai un programme qui envoie une requête pour supprimer des donnée dans la BDD, ce code je l'ai copier à partir d'une autre page qui fonctionne sans problème et j'ai juste changé de paramêtre mais depuis il me renvoit cette erreur

Erreur ! SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect DOUBLE value: '2; 'Array ( [0] => 2; [1] => août )

voici mon code suppression


if ( $choix == 'supprimenote') {
	
	echo $mois; echo $ideleve;
	
	
$sql = 'DELETE FROM note WHERE ideleve = ? AND mois = ?';
$datas = array($ideleve, $mois);
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }	
	try
    {		
 $req12 = $bdd->prepare('SELECT moyene FROM general WHERE id = ?  AND mois = ? AND an = ?');
	
	$req12->execute(array($id,  $mois, $annee ));	
	 }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }		  
$moyene =  $req12->fetch();		
	
if ( !empty($moyene['moyene'])) {
	
	
$sql = 'DELETE FROM general WHERE id = ? AND mois = ?';
$datas = array($id $mois);
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }		

  }	



Je comprend pas, quelqu'un peut-il me dire ce qui m'échappe dans ce code SVP?

2 réponses

Messages postés
32169
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2021
3 426
Bonjour,

Encore une fois.. tu copies/colles du code sans le comprendre !

Encore une fois.. tu postes ta question dans le forum mysql ... alors que je pense que le souci se situe au niveau du code PHP....

Encore une fois ... tu poses ta question sur le forum sans avoir essayé de comprendre le message d'erreur...

Encore une fois... tu poses ta question sur le forum sans avoir essayé de débuguer ton code à l'aide de var_dump / echo de tes variables...

Bref....

Commence par faire des var_dump de tes variables $mois, $annee et montre nous ce que ça te retourne.

Ajoute également des echos dans ton code (dans chaque catch ) ( echo "requete 1 ";... echo "requete 2 "; ... etc.... ) histoire de savoir sur quelle requête il bloque... et en fonction, montre nous la structure (via un DUMP par exemple ) de la table concernée. ( note ? moyenne ou général ?? )

Après.... je suppose, vu le message d'erreur... que ta table utilise un champ DATE ou DATETIME... et que toi, tu essaies de lui envoyer un array contenant les valeurs 2 et août...

Messages postés
214
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
30 mars 2021

Le
 var_dump($annee); var_dump($mois);
m'affiche ceci:

string(4) "2020" string(5) "août" Erreur ! SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect DOUBLE value: '2; 'Array ( [0] => 2; [1] => août ).

c'est vraiment insensé car le mois et l'année s'affiche normalement et il n'ya pas de de souci, logiquement il devrait pas avoir d'erreur, et c'est la 1ère fois que je rencontre ce type d'erreur

Ma requête est sensé supprimé toute les donnée la personne choisi





voici le code intégrale:

if (( $choix == 'supprimenote') && (($trim == $trimed)||($trim == $trime)||($trim == $coll))) {
	
	 var_dump($annee); var_dump($mois);
	
	
$sql = 'DELETE FROM note WHERE ideleve = ? AND mois = ?';
$datas = array($ideleve, $mois);
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }	
	
 	

	try
    {		
 $req12 = $bdd->prepare('SELECT moyene FROM moyengeneral WHERE ideleve = ?  AND mois = ? AND an = ?');
	
	$req12->execute(array($ideleve,  $mois, $annee ));	
	 }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }		  
$moyene =  $req12->fetch();		
	
if ( !empty($moyene['moyene'])) {
	
	
$sql = 'DELETE FROM moyengeneral WHERE ideleve = ? AND mois = ?';
$datas = array($ideleve, $mois);
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }		

  }		

header('Location: notesup.php?class='.$class. '&serie='.$serie. '&cycle='.$cycle);
 exit();
		
	

	
	}
Messages postés
32169
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2021
3 426
Je t'"ai demandé de placer des echo à chacune de tes requêtes pour savoir laquelle pose problème....
Et également un dump de tes tables...
où en es-tu de ces demandes ??
Messages postés
214
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
30 mars 2021
>
Messages postés
32169
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2021

Hourra!! j'ai réglé le problème, merci pour ton aide cher Jordan45
Messages postés
32169
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2021
3 426 >
Messages postés
214
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
30 mars 2021

Et donc (juste au cas où...ça pourrait servir à d'autres... c'est le principe du forum...) quelle était le souci ??
Messages postés
214
Date d'inscription
vendredi 15 novembre 2019
Statut
Membre
Dernière intervention
30 mars 2021
>
Messages postés
32169
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2021

Je crois que s'etait avec la manière d'écrire la requête, lorsque j'ai changé la méthode, ça marché sans problème, dommage j'ai pas compris pourquoi il me parlait de DATETIME, ça n'avait pas de sens