Requète UPDATE SQL boléen [Résolu]

LaChaux78 224 Messages postés lundi 25 juillet 2016Date d'inscription 13 février 2018 Dernière intervention - 15 déc. 2017 à 00:20 - Dernière réponse : LaChaux78 224 Messages postés lundi 25 juillet 2016Date d'inscription 13 février 2018 Dernière intervention
- 15 déc. 2017 à 22:13
Bonjour,
Je souhaiterai modifier un boléen suite à une condition, je m'explique
Si une date existe et est different de null et est plus grand que la date du jour alors j'exécute ma requète UPDATE pour passer mon boléen à TRUE.
Par défault si une date existe $publier est à false. Le champ "inscrip" est de type DATE.
J'ai essayé de faire quelque chose mais je ne suis pas certains je ne voudrais pas semer le bazar dans ma BDD alors avant d'exécuter cette requète, je sollicite votre aide, merci.
$today = date("d/m/Y"); // Date du jour
$idmanif = !empty($_REQUEST['idmanif']) ? $_REQUEST['idmanif'] : NULL;
$publier = isset($_POST['publier']) ? $_POST['publier'] : '';//Case à cocher
$inscrip = isset($_POST['inscrip']) ? dw2m($_POST['inscrip']) : '';//Date d'inscription
if (isset($inscrip) AND ($inscrip != NULL) AND ($inscrip > $today)) {
$sql = "UPDATE cdc_manifestations SET publier = TRUE WHERE idmanif = '$idmanif'";
$requete = $bdd->prepare($sql);
$requete->execute();
}
Afficher la suite 

9 réponses

Répondre au sujet
jordane45 19969 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 février 2018 Dernière intervention - 15 déc. 2017 à 08:04
0
Utile
Bonjour
C'est quoi qui te pose problème... Ke code php ou juste la requête ?
Commenter la réponse de jordane45
LaChaux78 224 Messages postés lundi 25 juillet 2016Date d'inscription 13 février 2018 Dernière intervention - 15 déc. 2017 à 08:42
0
Utile
2
Bonjour,
En fait je ne suis pas certain de la requète pour modifier le boléen afin de le passer à TRUE.
Merci
jordane45 19969 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 février 2018 Dernière intervention - 15 déc. 2017 à 09:44
Donc la requête c'est UNIQUEMENT cette ligne de code
UPDATE cdc_manifestations SET publier = TRUE WHERE idmanif = '$idmanif'

Le code PHP ne sert à rien dans ce cas...... (surtout que tu es dans le forum SQL .... seul le SQL nous interesse....)

De quel "type" est ton champ "publier" ? Un Bit ? Un tinyint ? un varchar ? autre ??
De préférence, un simple Tinyint suffit.
Et dans ce cas les valeurs seront 1 ou 0 (1 pour TRUE, 0 pour False )
jordane45 19969 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 février 2018 Dernière intervention - 15 déc. 2017 à 09:49
Au passage, concernant ton code php puisque tu l'as posté ....

Où sont les blocs TRY/CATCH sensés entourés ta requête ?
Je t'invite à appliquer ceci : http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
Commenter la réponse de LaChaux78
LaChaux78 224 Messages postés lundi 25 juillet 2016Date d'inscription 13 février 2018 Dernière intervention - 15 déc. 2017 à 13:12
0
Utile
1
mon champ publier est de type "tinyint" Par contre mon bloc TRY/CATCH est dans mon fichier init.php.Pourquoi tu dis que mon code PHP ne sert à rien?
Moi je voulais simplement qu'on me donne un avis sur ma requète, mais quand je mets le maximum d'infos on me dit ça sert à rien et quand je ne met pas tout on me dit de mettre tout son code, vous êtes un peu compliqué vous trouvé pas??
jordane45 19969 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 février 2018 Dernière intervention - 15 déc. 2017 à 13:59
Reprenons dans l'ordre :
mon bloc TRY/CATCH est dans mon fichier init.php

Donc tu n'as pas lu le lien que je t'ai donné......
Il ne suffit pas d'en mettre un autour de la connexion.... il faut AUSSI en mettre AUTOUR de CHAQUE REQUETE.

Ensuite:
Pourquoi tu dis que mon code PHP ne sert à rien?

Par ce que ta question concerne UNIQUEMENT ta REQUETE SQL ... et que tu es dans le forum SQL.

mon champ publier est de type "tinyint"

Donc ... NUMERIQUE.
Tu n'y mets pas du TRUE/FALSE mais des nombres. En l'occurence ici, 1 ou 0.

De plus, lorsque tu as un doute sur une requête , tu commences par en faire un ECHO histoire de voir ce que ton code php retourne REELEMENT comme requête, puis tu la testes DIRECTEMENT dans ta BDD.

Encore un peu de lecture pour toi.
Cette fois j'espère que tu liras tout ....
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.
Commenter la réponse de LaChaux78
LaChaux78 224 Messages postés lundi 25 juillet 2016Date d'inscription 13 février 2018 Dernière intervention - 15 déc. 2017 à 15:29
0
Utile
1
A propos de mon champ publier qui est de type "tinyint" lorsque je teste ma requète dans Phpmyadmin elle me retourne bien le résultat avec TRUE c'est à dire 1, alors que tu dit comme c'est un champs numérique il faut mettre 1, je n'ai pas bien compris je suppose.
UPDATE cdc_manifestations SET publier = TRUE WHERE idmanif = '521';
jordane45 19969 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 15 février 2018 Dernière intervention - 15 déc. 2017 à 16:32
TRUE est compris comme "1"
Mais vu que tu manipule une table en INT (integer == nombre entier...) il est préférable d'utiliser des valeurs numériques.

Quoi qu'il en soit, tu as pu voir que ta requête fonctionne....

Donc la question est résolue non ?
Commenter la réponse de LaChaux78
LaChaux78 224 Messages postés lundi 25 juillet 2016Date d'inscription 13 février 2018 Dernière intervention - 15 déc. 2017 à 22:13
0
Utile
Merci oui c'est bon ca fonctionnne.
Commenter la réponse de LaChaux78