Mettre une condition php dans une requete sql
mont_dani
Messages postés
232
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
bonjour.
J'ai besoin de traiter les valeur NULL de mon formulaire envoyer par POST à la requete SQL.
Je l'ai fait en mettant une condition IF.
Existe-t-il une solution pour mettre la condition IF directement dans la requete.
Voici mon code
J'ai essayer de faire sans succès
Ou est mon erreur? Que dois-je faire?
J'ai besoin de traiter les valeur NULL de mon formulaire envoyer par POST à la requete SQL.
Je l'ai fait en mettant une condition IF.
Existe-t-il une solution pour mettre la condition IF directement dans la requete.
Voici mon code
try { //$db = new PDO('mysql:host=localhost;dbname=meteo;charset=utf8', 'kmorghylcdc', 'JacoyBeo2'); $sql = new PDO('mysql:host=localhost;dbname=meteo;charset=utf8', 'root', ''); $sql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "<BR>connection reussi"; } catch (Exception $e) { die('Erreur : ' .$e->getMessage()); } //si POST est vide ==> oups probleme if ( empty($_POST['DATE'] || $_POST['T_MINI'])) //|| $_POST['T_MINI'] != "" || $_POST['T_MAXI'] != "" || $_POST['SAISON'] != "" ) { // Es un SPAMbot echo "<br>oups ya un probleme"; exit(); Echo "Tu mensaje no se pudo enviar. Por favor, contacta con nostros."; } else { // Establecer las variables para los datos que queremos agregar a la base de datos $DATE=($_POST['DATE']); $T_MINI=($_POST['T_MINI']); $T_MAXI=($_POST['T_MAXI']); $LLUVIA=($_POST['LLUVIA']); $NIEVE=($_POST['NIEVE']); $SAISON=($_POST['SAISON']); if(!empty($_POST['LLUVIA'])){ // Aquí creamos una variable que llama al método prepare() del objeto de la base de datos // La consulta SQL que desea ejecutar se ingresa como parámetro y los marcadores de posición se escriben así: nombre_marcador $my_Insert_Statement = $sql-> prepare ("INSERT INTO releve ( DATE , T_MINI , T_MAXI, LLUVIA , NIEVE , SAISON) VALUES (:DATE,:T_MINI,:T_MAXI,:LLUVIA,:NIEVE,:SAISON)"); // Ahora le decimos al script a qué variable se refiere realmente cada marcador de posición usando el método bindParam() // El primer parámetro es el marcador de posición en la declaración anterior; el segundo parámetro es una variable a la que debe referirse $my_Insert_Statement-> bindParam (':DATE', $DATE ) ; $my_Insert_Statement-> bindParam (':T_MINI', $T_MINI ) ; $my_Insert_Statement-> bindParam (':T_MAXI', $T_MAXI ) ; $my_Insert_Statement-> bindParam (':LLUVIA', $LLUVIA ) ; $my_Insert_Statement-> bindParam (':NIEVE', $NIEVE ) ; $my_Insert_Statement-> bindParam (':SAISON', $SAISON ) ; }else{ // Aquí creamos una variable que llama al método prepare() del objeto de la base de datos // La consulta SQL que desea ejecutar se ingresa como parámetro y los marcadores de posición se escriben así: nombre_marcador $my_Insert_Statement = $sql-> prepare ("INSERT INTO releve ( DATE , T_MINI , T_MAXI, NIEVE , SAISON) VALUES (:DATE,:T_MINI,:T_MAXI,:NIEVE,:SAISON)"); // Ahora le decimos al script a qué variable se refiere realmente cada marcador de posición usando el método bindParam() // El primer parámetro es el marcador de posición en la declaración anterior; el segundo parámetro es una variable a la que debe referirse $my_Insert_Statement-> bindParam (':DATE', $DATE ) ; $my_Insert_Statement-> bindParam (':T_MINI', $T_MINI ) ; $my_Insert_Statement-> bindParam (':T_MAXI', $T_MAXI ) ; //$my_Insert_Statement-> bindParam (':LLUVIA', $LLUVIA ) ; $my_Insert_Statement-> bindParam (':NIEVE', $NIEVE ) ; $my_Insert_Statement-> bindParam (':SAISON', $SAISON ) ; } // Ejecutar la consulta} usando los datos que acabamos de definir // El método de ejecución () devuelve VERDADERO si tiene éxito y FALSO si no, lo que le permite escribir sus propios mensajes aquí if ( $my_Insert_Statement-> execute ()) { header('Location: datos_meteo.php'); exit(); } else { echo "No se pudo crear el registro" ; } }
J'ai essayer de faire sans succès
$my_Insert_Statement = $sql-> prepare ("INSERT INTO releve ( DATE , T_MINI , if(!empty($_POST['LLUVIA'])){echo 'LLUVIA ,'} T_MAXI, NIEVE , SAISON) VALUES (:DATE,:T_MINI,:T_MAXI, if(!empty($_POST['LLUVIA'])){echo ':LLUVIA ,'} :NIEVE,:SAISON)");
Ou est mon erreur? Que dois-je faire?
A voir également:
- Mettre une condition php dans une requete sql
- Excel cellule couleur si condition texte - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Logiciel sql - Télécharger - Bases de données
- Excel condition ou - Guide
2 réponses
Bonjour,
Deux solutions.
Soit, dans la définition des tes champs dans ta table, tu définis une valeur par défaut ( ce qui implique ensuite que tu dois gérer au niveau de ton php les champs que tu veux insérer ou non ( en enlevant donc ceux qui sont NULL dans ton $_POST )
Soit, tu le gère au moment de récupérer les valeurs de ton formulaire, via, par exemple, l'écriture ternaire.
Par exemple, au lieu d'écrire :
tu fais
Deux solutions.
Soit, dans la définition des tes champs dans ta table, tu définis une valeur par défaut ( ce qui implique ensuite que tu dois gérer au niveau de ton php les champs que tu veux insérer ou non ( en enlevant donc ceux qui sont NULL dans ton $_POST )
Soit, tu le gère au moment de récupérer les valeurs de ton formulaire, via, par exemple, l'écriture ternaire.
Par exemple, au lieu d'écrire :
$LLUVIA=($_POST['LLUVIA']);
tu fais
// je stocke dans $LLUVIA la valeur de $_POST['LLUVIA'] si il n'est pas vide ou null, sinon j'y mets le texte : 'LUVIA' $LLUVIA= !empty($_POST['LLUVIA']) ? $_POST['LLUVIA'] : 'LUVIA';
En replcant la ligne sugéré cela ne fonctionne pas.
mon champ est defini ainsi dans ma table:
LLUVIA decimal(20,0) Sí NULL
J'ai cette erreur:
( ! ) Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect decimal value: 'LUVIA' for column 'LLUVIA' at row 1 in C:\wamp64\www\lacansera\lacansera\es\noticias\guardar_datos.php on line 57
( ! ) PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect decimal value: 'LUVIA' for column 'LLUVIA' at row 1 in C:\wamp64\www\lacansera\lacansera\es\noticias\guardar_datos.php on line 57
Mais cela fonctionne si je remplace la ligne que tu as suggéré par
Merci
mon champ est defini ainsi dans ma table:
LLUVIA decimal(20,0) Sí NULL
J'ai cette erreur:
( ! ) Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect decimal value: 'LUVIA' for column 'LLUVIA' at row 1 in C:\wamp64\www\lacansera\lacansera\es\noticias\guardar_datos.php on line 57
( ! ) PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect decimal value: 'LUVIA' for column 'LLUVIA' at row 1 in C:\wamp64\www\lacansera\lacansera\es\noticias\guardar_datos.php on line 57
Mais cela fonctionne si je remplace la ligne que tu as suggéré par
if (!empty($_POST['LLUVIA'])) {$LLUVIA = $_POST['LLUVIA'];}
Merci