> Tous les forums > Forum des Webmasters
 encore un souci checkbox+mysqlSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
ogd
  Posté le 03/06/2010 @ 13:45 
Aller en bas de la page 
Astucien

Hello!

Dans un formulaire de création de ligne dans ma bdd

J4ai entre autres 2 checkboxes, qui doivent avoir la valeur true si c'est coché, et false si pas.

Si je coche, pas de souci, je retrouve bien true dans ma bdd dans le champs voulu

Par contre, si l'un des deux checkboxes ou les 2 ne sont pas cochés (alors ils devraient ecrire false dans le champs) et bien le insert ne se fait pas du tout dans la base de données:

<table cellpadding="2" cellspacing="2" border="1" style="text-align: center; width: 80%; margin-left: auto; margin-right: auto; border-collapse:collapse" bordercolor="#111111"> <tbody>

[...]

<tr> <td style="vertical-align: top; text-align: left; width: 55%;"> <p><b><font color="#FFFFFF">Lien sur l'image</font><br></b></p> <b><input type="text" name="imglink" maxlength="100" size="60"></b></td><td style="width: 5%;"></td><td style="width: 40%;"><input type="checkbox" name="activeimglink" value="TRUE"></td></tr>

[...]

<tr>
<td style="vertical-align: top; text-align: left; width: 55%;">
<p><b><font color="#FFFFFF">Lien texte</font><br></b></p>
<b><input type="text" name="link" maxlength="100" size="60"></b></td>
<td style="width: 5%;"></td>
<td style="width: 40%;"><input type="checkbox" name="activelink" value="TRUE"></td>
</tr>

[...]

</tbody>
</table>
</center>
</div>

<br>
<br>
</center>

<br>
<center>
<p><b><input type="submit" name="submit" value="Envoyer"> <input
type="reset" name="submit2" value="Effacer">
</b></p>
</form>
</center>
<?
$activeimglink = $_POST['activeimglink'];
if($activeimglink=="")$activeimglink="FALSE";
$activelink = $_POST['activelink'];
if($activelink=="")$activelink="FALSE";


if (isset($_POST['nom']) AND isset($_POST['img']) AND isset($_POST['imglink']) AND isset($_POST['activeimglink']) AND isset($_POST['titre']) AND isset($_POST['accroche']) AND isset($_POST['p1']) AND isset($_POST['p2']) AND isset($_POST['p3']) AND isset($_POST['p4']) AND isset($_POST['link']) AND isset($_POST['activelink']) AND isset($_POST['start']) AND isset($_POST['end']))
{
if ($_POST['nom'] != NULL AND $_POST['img'] != NULL AND $_POST['imglink'] != NULL AND $_POST['activeimglink'] != NULL AND $_POST['titre'] != NULL AND $_POST['accroche'] != NULL AND $_POST['p1'] != NULL AND $_POST['p2'] != NULL AND $_POST['p3'] != NULL AND $_POST['p4'] != NULL AND $_POST['link'] != NULL AND $_POST['activelink'] != NULL AND $_POST['start'] != NULL AND $_POST['end'] != NULL)


include("../***.inc");
mysql_connect($host, $user, $pass);
mysql_select_db("$bdd")
or die("Ouverture base impossible");


{
$req_create ="INSERT INTO jeux (nom,img,imglink,activeimglink,titre,accroche,p1,p2,p3,p4,link,activelink,start,end)
VALUES ('$nom','$img','$imglink','$activeimglink','$titre','$accroche','$p1','$p2','$p3','$p4','$link','$activelink','$start','$end')";

echo $req_create;
mysql_query($req_create) or die($req_create. mysql_error());
}
mysql_close;
}
?>
</div>

Si je ne coche pas les 2 checkboxes, le print_r ne me renvoie aucune instruction délivrée à la bdd....

Gloups dinky toubifreudibingbing?

Publicité
Cedders
 Posté le 03/06/2010 à 16:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Le problème c'est le contrôle car une checkbox envoie la valeur que si elle est sélectionnée donc $_POST['activelink'] n'existera que si tu as coché la case.

Donc :

if(isset($_POST['activelink'])) // Case cochée, vaudra TRUE

// Tu passe true dans ta requête SQL

else

// Tu passes un champ vide '' dans ta requête SQL

Après tu peux définir dans ta base de donnée que la valeur par défaut de ton champ activelink c'est FALSE.

ogd
 Posté le 04/06/2010 à 09:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Hello!

J'ai donc fait ceci :

if (isset($_POST['nom']) AND isset($_POST['img']) AND isset($_POST['imglink']) AND isset($_POST['activeimglink']) AND isset($_POST['titre']) AND isset($_POST['accroche']) AND isset($_POST['p1']) AND isset($_POST['p2']) AND isset($_POST['p3']) AND isset($_POST['p4']) AND isset($_POST['link']) AND isset($_POST['activelink']) AND isset($_POST['start']) AND isset($_POST['end'])) {if ($_POST['nom'] != NULL AND $_POST['img'] != NULL AND $_POST['imglink'] != NULL AND $_POST['activeimglink'] != NULL AND $_POST['titre'] != NULL AND $_POST['accroche'] != NULL AND $_POST['p1'] != NULL AND $_POST['p2'] != NULL AND $_POST['p3'] != NULL AND $_POST['p4'] != NULL AND $_POST['link'] != NULL AND $_POST['activelink'] != NULL AND $_POST['start'] != NULL AND $_POST['end'] != NULL)

if(isset($_POST['activeimglink'])) $activeimglink=$_POST['activeimglink'];else $activeimglink="";

if(isset($_POST['activelink'])) $activeimglink=$_POST['activelink'];else $activelink="";

include("../sql1.inc"); mysql_connect($host, $user, $pass); mysql_select_db("$bdd") or die("Ouverture base impossible");

{ $req_create ="INSERT INTO jeux (nom,img,imglink,activeimglink,titre,accroche,p1,p2,p3,p4,link,activelink,start,end) VALUES ('$nom','$img','$imglink','$activeimglink','$titre','$accroche','$p1','$p2','$p3','$p4','$link','$activelink','$start','$end')"; echo $req_create; mysql_query($req_create) or die($req_create. mysql_error());} mysql_close; }?>

et dans ma bdd:

id int(5) --> Non auto_increment --> id nom varchar(255) --> Non --> Nom du jeu img varchar(255) --> Non --> Chemin image imglink varchar(255) --> Oui NULL --> Lien sur image activeimglink set('true', 'false') --> Non false --> Lien sur image actif titre varchar(255) --> Non --> Titre accroche varchar(255) --> Non --> Phrase d'accroche p1 varchar(255) --> Non --> Phrase 1 p2 varchar(255) --> Oui NULL --> Phrase 2 p3 varchar(255) --> Oui NULL --> Phrase 3 p4 varchar(255) --> Oui NULL --> Phrase 4 link varchar(255) --> Oui NULL --> Lien texte activelink set('true', 'false') --> Non false --> Lien texte actif start date --> Non --> Date départ end date --> Non

Et pourtant...

Le résultat reste le même : si les 2 checkboxes sont cochées, la bdd est bien incrémentée, si l'une des 2 ou les 2 checkbox sont décochées, l'action INSERT ne se produit pas à la validation du formulaire

Mais c'est sûrement encore une erreur de syntaxe ou autre?

Merci



Modifié par ogd le 04/06/2010 09:14
ogd
 Posté le 04/06/2010 à 09:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

[hors sujet]

C'est franchement gonflant, sur un forum technique, d'avoir depuis si longtemps des problèmes de mise en forme des textes...

Tous mes retours à la ligne ont dégagés...

Cedders
 Posté le 04/06/2010 à 10:05 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Oui là c'est assez dur de pas avoir les yeux qui croisent.

A mon avis tu dois retirer de ton premier if les controlles sur les checkbox car comme je te le disait, si une check box n'est pas cochée la valeur $_POST correspondante ne sera pas définie donc isset($_POST[...]) retournera FALSE. Donc ton premier if ne vaudra pas TRUE et ton insertion dans la bdd ne sera pas effectuée.

Alors essaye en retirant les contrôles sur tes 2 checkbox de ton premier if. Ensuite ton test pour la valeur a passé en paramètre me semble ok, je peux à la limite te suggèrer d'utiliser l'opérateur ternaire pour te simplifier la vie.

$activelink = (isset($_POST['activelink'])) ? TRUE : FALSE; // (condition) ? valeur si vrai : valeur si faux



Modifié par Cedders le 04/06/2010 10:05
ogd
 Posté le 04/06/2010 à 11:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Hello!

Ta solution fonctionne à merveille, si ce n'est que si je ne checke pas, le chemps de la box reste vide aulieu d'être en false, mais ça ne me dérange pas puisque ma condition portera uniquement sur le true

Merci beaucoup pour ton aide, et en plus, je comprends un peu mieux le fonctionnement du système

ogd
 Posté le 04/06/2010 à 13:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Au fait, je ne t'avais jamais vu(e) sur le forum alors bienvenue !

Cedders
 Posté le 04/06/2010 à 13:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Oui effectivement, sans check tu n'auras aucune valeur. D'où l'importance de définir la valeur par défaut ou comme dans l'exemple que je t'ai mis de faire un contrôle.

ogd a écrit :

Au fait, je ne t'avais jamais vu(e) sur le forum alors bienvenue !

Merci :) heureux d'avoir pû t'aider ;)

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
24,99 €Clé HDMI Fire TV Stick 2021 (Prime Video, Netflix, Disney+, Molotov, MyCanal sur votre TV) à 24,99 €
Valable jusqu'au 25 Septembre

Amazon fait une promotion sur sa nouvelle clé HDMI Amazon Fire TV Stick qui passe à 24,99 € au lieu de 39,99 €. Cette clé HDMI à brancher sur votre TV possède un processeur quadricoeur, 1 Go de RAM et 8 Go d'espace de stockage, le WiFi et le bluetooth. Avec elle, vous allez pouvoir voir facilement Prime Video, Netflix, Disney+, YouTube, Molovov, MyCanal, Spotify sur votre TV Full HD. Cette nouvelle version 2021 est compatible Alexa. Une télécommande avec des boutons pour contrôler également la TV est fournie. Elle possède des boutons pour un accès direct à Netflix, Prime Video, Disney Plus et Amazon Music.

Notez qu'il est possible de coupler un casque bluetooth avec le Fire TV Stick afin de regarder tranquillement la TV sans déranger vos proches.


> Voir l'offre
GratuitJeu PC Jagged Alliance Gold Edition gratuit
Valable jusqu'au 23 Septembre

Pour fête le 10ème anniversairee de THQ Nordic, Steam offre actuellement le jeu PC Jagged Alliance Gold Edition. Jagged Alliance est une véritable légende de la stratégie tactique au tour par tour. Jagged Alliance a eu un impact et a changé le genre de stratégie pour toujours. Vous pouvez maintenant découvrir cette légende sous sa forme originale glorieuse. Un appel à l'aide désespéré de l'île Metavira: le scientifique Jack Richards et sa charmante fille Brenda vous contactent. Les arbres en jachère et donc la précieuse sève médicale dont dépendent de nombreuses vies sont sous le contrôle du méchant et traître Santino. C'est pourquoi Jack et Brenda vous ont engagé, le commandant d'une force mercenaire, pour mettre un terme aux projets insensés de Santino.


> Voir l'offre
675,86 €Mini PC Beelink GTR (Ryzen 7 3750H, 16 Go RAM, SSD 512Go) à 675,86 € avec le code WCK87SPZ
Valable jusqu'au 24 Septembre

Amazon fait une promotion sur l'excellent mini PC Beelink GTR qui passe à 675,86 € avec le code WCK87SPZ. Ce mini PC intègre un processeur AMD Ryzen 7 3750H (4 coeurs), 16 Go de RAM DDR4 et un SSD NVMe de 512 Go au format M.2 (un second emplacement libre vous permettra d'en rajouter un autre si besoin). Il intègre un chip graphique RX Vega 10 qui fera tourner tous vos jeux. Il intègre le WiFi 6, le bluetooth 5.0, deux ports Ethernet Gigabit, 6 ports USB 3.0, un port USBC, un connecteur HDMI et un DisplayPort. Un lecteur d'empreintes digitales vous permettra également de sécuriser l'accès à votre ordinateur. Le tout tourne sous Windows 10 Pro.

Une excellente affaire pour un PC très performant, silencieux et qui ne prendra pas de place ! 


> Voir l'offre

Sujets relatifs
[RESOLU]Souci création de table sur MYSQL avec err
Peut-on encore installer Joomla sur Free ?
Échec connection base mysql
Souci appellation photo sur google images
encore un pb de mot de passe
une personne s'y connaissant en PHP et MySQL ??
Trier plusieurs colonnes mysql
quelle version MySQL pour Free ?
tester un champs mysql
Considérer un champs vide mysql non null
Plus de sujets relatifs à encore un souci checkbox+mysql
 > Tous les forums > Forum Forum des Webmasters