MySql: quel type de champ pour checkbox ?
Fermé
txiki
Messages postés
3939
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
27 mars 2023
-
2 févr. 2011 à 13:58
txiki Messages postés 3939 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 27 mars 2023 - 3 févr. 2011 à 19:09
txiki Messages postés 3939 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 27 mars 2023 - 3 févr. 2011 à 19:09
A voir également:
- MySql: quel type de champ pour checkbox ?
- Incompatibilité de type vba ✓ - Forum Programmation
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
- Mysql download - Télécharger - Bases de données
- Type lnb nilesat - Forum Cinéma / Télé
- Type de parenthèse ✓ - Forum Clavier
6 réponses
Melooo
Messages postés
1405
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
18 mars 2013
84
2 févr. 2011 à 14:01
2 févr. 2011 à 14:01
Bonjour
Le lien ne fonctionne pas
Le lien ne fonctionne pas
txiki
Messages postés
3939
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
27 mars 2023
507
2 févr. 2011 à 19:26
2 févr. 2011 à 19:26
Merci arthezius, je le connais mais ce que je ne savais pas c'est le type de champ à mettre dans la table.
On ne peut pas se servir de son id="" en post pour écrire (ou pas, si vide) dans la table dont le champ serait de type varchar ? Je voulais justement éviter les contrôles de $_POST.
@Meloo: il faut accepter les cookies pour accéder au site: http://soeix.free.fr/ voir le menu Renseignements.
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
On ne peut pas se servir de son id="" en post pour écrire (ou pas, si vide) dans la table dont le champ serait de type varchar ? Je voulais justement éviter les contrôles de $_POST.
@Meloo: il faut accepter les cookies pour accéder au site: http://soeix.free.fr/ voir le menu Renseignements.
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
477
2 févr. 2011 à 21:19
2 févr. 2011 à 21:19
Un champ int n'accepte que des chiffres.
Si tu gardes la valeur par défaut du checkbox s'il est coché, il te faudra passé sur varchar et attribuer une valeur dans le cas ou il n'est pas coché sous risque d'avoir un message d'erreur.
Si tu gardes la valeur par défaut du checkbox s'il est coché, il te faudra passé sur varchar et attribuer une valeur dans le cas ou il n'est pas coché sous risque d'avoir un message d'erreur.
txiki
Messages postés
3939
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
27 mars 2023
507
2 févr. 2011 à 21:25
2 févr. 2011 à 21:25
Merci arthezius !
"et attribuer une valeur dans le cas ou il n'est pas coché": et je met ça où ? Pour l'affichage uniquement ou pour écrire dans la table aussi ? Un exemple serait le bienvenue.
Merci d'avance !
"et attribuer une valeur dans le cas ou il n'est pas coché": et je met ça où ? Pour l'affichage uniquement ou pour écrire dans la table aussi ? Un exemple serait le bienvenue.
Merci d'avance !
duweb
Messages postés
352
Date d'inscription
dimanche 30 mai 2010
Statut
Membre
Dernière intervention
6 mars 2014
73
Modifié par duweb le 2/02/2011 à 23:20
Modifié par duweb le 2/02/2011 à 23:20
il y a une erreur dans la requête sql.
il faut utiliser VALUES et non pas VALUE
ensuite pour la valeur du check box il y a 3 solutions:
- soit on utilise une valeur numérique (champ sql int de préférence mais varchar fonctionnera aussi) et on utilise un script pour afficher le texte
- soit on stocke directement la valeur du checkbox dans la base (varchar, texte, ou autre selon besoin)
- soit on utilise un champ sql SET ou ENUM qui permettent surtout d'éviter d'avoir une valeur non permise (exemple : tentative d'injection de code malveillant).
il faudrait le contenu du fichier pour voir comment sont récupéreess les données du formulaire
il faut utiliser VALUES et non pas VALUE
ensuite pour la valeur du check box il y a 3 solutions:
- soit on utilise une valeur numérique (champ sql int de préférence mais varchar fonctionnera aussi) et on utilise un script pour afficher le texte
- soit on stocke directement la valeur du checkbox dans la base (varchar, texte, ou autre selon besoin)
- soit on utilise un champ sql SET ou ENUM qui permettent surtout d'éviter d'avoir une valeur non permise (exemple : tentative d'injection de code malveillant).
INSERT INTO dbdemandes (ID, Nom, Prenom, Numero, Rue, Adresse, Ville, Code, Pays, Phone, Mobilphone, Email, Rafting, Hydro_Speed, Hot_Dog, Kayak, Gite, Stage 5 jours, Week_End, Activite, Connaissance, DateDebut, DateFin, Message, Date) VALUE ("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5 jours, Week_End, Activite, Connaissance, DateDebut, DateFin, Message, Date) VA' at line 1
il faudrait le contenu du fichier pour voir comment sont récupéreess les données du formulaire
txiki
Messages postés
3939
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
27 mars 2023
507
3 févr. 2011 à 18:00
3 févr. 2011 à 18:00
Désolé duweb mais ça ne fonctionne pas (et je crois que ça s'écrit value et non pas values), non ?
J'ai tout mis en varchar, ça m'affiche la page de résumé, ça envoie le mail mais ça n'ajoute rien dans la table en dehors de l'id et du datetime mais avec des zéros (? ? ?).
J'ai tout mis en varchar, ça m'affiche la page de résumé, ça envoie le mail mais ça n'ajoute rien dans la table en dehors de l'id et du datetime mais avec des zéros (? ? ?).
duweb
Messages postés
352
Date d'inscription
dimanche 30 mai 2010
Statut
Membre
Dernière intervention
6 mars 2014
73
Modifié par duweb le 3/02/2011 à 18:38
Modifié par duweb le 3/02/2011 à 18:38
croire c'est bien mais savoir c'est mieux : -->VALUES<--
https://phpsources.net/tutoriel-insert.htm
http://dev.mysql.com/doc/refman/5.0/fr/insert.html
https://phpsources.net/tutoriel-insert.htm
http://dev.mysql.com/doc/refman/5.0/fr/insert.html
txiki
Messages postés
3939
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
27 mars 2023
507
3 févr. 2011 à 18:01
3 févr. 2011 à 18:01
Voici la requête:
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
// on ajoute le texte issu du formulaire dans la table agenda
$sql = ('INSERT INTO dbdemandes (ID, Nom, Prenom, Numero, Rue, Adresse, Ville, Code, Pays, Phone, Mobilphone, Email, Rafting, Hydro_Speed, Hot_Dog, Kayak, Gite, Stage_5_jours, Week_End, Activite, Connaissance, DateDebut, DateFin, Message, Date) VALUE ("'.$id.'", "'.$nom.'", "'.$prenom.'", "'.$numero.'", "'.$rue.'", "'.$adresse.'", "'.$ville.'", "'.$code.'", "'.$pays.'", "'.$phone.'", "'.$mobilphone.'", "'.$email.'", "'.$rafting.'", "'.$hydrospeed.'", "'.$hotdog.'", "'.$kayak.'", "'.$gite.'", "'.$stage5jours.'", "'.$weekend.'", "'.$activite.'", "'.$connaissance.'", "'.$datedebut.'", "'.$datefin.'", "'.$message.'", "'.$date.'")');
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
duweb
Messages postés
352
Date d'inscription
dimanche 30 mai 2010
Statut
Membre
Dernière intervention
6 mars 2014
73
3 févr. 2011 à 18:36
3 févr. 2011 à 18:36
il faut tout le script. la requête je l'ai déjà.
essaye déjà d'afficher les variables pour voir s'il n'y a pas un pb quand tu les récupères :
echo $id . $nom . $prenom . ....;
essaye déjà d'afficher les variables pour voir s'il n'y a pas un pb quand tu les récupères :
echo $id . $nom . $prenom . ....;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
txiki
Messages postés
3939
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
27 mars 2023
507
3 févr. 2011 à 19:09
3 févr. 2011 à 19:09
Bonjour duweb,
Voici le code complet de cette page traitement_demande.php:
Ce qui m'énerve c'est qu'une page semblable fonctionne (pour une table clients).
D'autre part, j'ai vu ici même, que les variables textes devaient entourées de " et non de '.
On arrive bien sur le résumé mais la table est toujours vide en dehors des id (auto-increment) et datetime (d'ailleurs je n'ai pas bien saisi comment on pouvait forcer l'écriture de la date avec heure, mn et s ? mais c'est une autre histoire. Voici le fichier mysql de chez free:
Ah! Bien vu pour le VALUES.... hi hi hi c'est ici que je le vois !
Au fait, si tu corrige , pourrais-tu STP, soit mettre en gras ou commenter tes corrections ? Merci infiniment d'avance.
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Voici le code complet de cette page traitement_demande.php:
<?php
// On déclare les variables (post car la méthode d'envoi du formulaire est POST
$id = ($_GET['ID']); // le champ est de type int (11).
$nom = (htmlspecialchars($_POST['Nom'])); // le champ est de type varchar.
$prenom = (htmlspecialchars($_POST['Prenom'])); // le champ est de type varchar.
$numero = ($_POST['Numero']); // le champ est de type varchar.
$rue = (htmlspecialchars($_POST['Rue'])); // le champ est de type varchar.
$adresse = (htmlspecialchars($_POST['Adresse'])); // le champ est de type varchar.
$ville = (htmlspecialchars($_POST['Ville'])); // le champ est de type varchar.
$code = ($_POST['Code']); // le champ est de type varchar.
$pays = (htmlspecialchars($_POST['Pays'])); // le champ est de type varchar.
$phone = (htmlspecialchars($_POST['Phone'])); // le champ est de type varchar.
$mobilphone = (htmlspecialchars($_POST['Mobilphone'])); // le champ est de type varchar.
$email = (htmlspecialchars($_POST['Email'])); // le champ est de type varchar.
$rafting = (htmlspecialchars($_POST['Rafting'])); // le champ est de type varchar.
$hydrospeed = (htmlspecialchars($_POST['Hydro_Speed'])); // le champ est de type varchar.
$hotdog = (htmlspecialchars($_POST['Hot_Dog'])); // le champ est de type varchar.
$kayak = (htmlspecialchars($_POST['Kayak'])); // le champ est de type varchar.
$gite = (htmlspecialchars($_POST['Gite'])); // le champ est de type varchar.
$stage5jours = (htmlspecialchars($_POST['Stage_5_jours'])); // le champ est de type varchar.
$weekend = (htmlspecialchars($_POST['Week_End'])); // le champ est de type varchar.
$activite = (htmlspecialchars($_POST['Activite'])); // le champ est de type varchar.
$connaissance = (htmlspecialchars($_POST['Connaissance'])); // le champ est de type varchar.
$datedebut = (htmlspecialchars($_POST['DateDebut'])); // le champ est de type varchar.
$datefin = (htmlspecialchars($_POST['DateFin'])); // le champ est de type varchar.
$message = (htmlspecialchars($_POST['Message'])); // le champ est de type text.
$date = ($_POST['Date now()']); // le champ est de type datetime.
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=" />
<meta name="robots" content="index, follow" />
<meta name="author" content="Jean Michel Etchecolonea" />
<meta name="Description" content="La base nautique de Soeix-Oloron vous propose des activités d'eau vive pour toute la famille. Les descentes se déroulent sur les gaves d'Aspe, d'Ossau et d'Oloron." />
<meta name="Keywords" content="raft, rafting, Pyrénées, pyrenees, loisirs, plein air, kayak, hydro-speed, luge d'eau, hot dog, nage en eaux vives, canyonning, gîte, gite, hébergement, nautisme, sport détente, famille" />
<meta name="revisit-after" content="20 days" />
<meta http-equiv="imagetoolbar" content="no" /><!-- Empeche IE de mettre une barre sur les images //-->
<link href="/Modules/Icons/favicon.ico" rel="shortcut icon" />
<link href="/Scripts/Base_Soeix.css" type="text/css" rel="stylesheet" />
<title> Demande de renseignements </title>
<!-- On supprime le menu pour cette partie (Authentification) -->
</head>
<body>
<h1 align="center"> Demande de renseignements </h1>
<?php
// Infos de connexion à la BDD et affichage des boutons Précédent et Suivant si limite par page dépassée
require 'Fonctions_Clients.php';
// on se connecte à la base grace au fichier Fonctions_Clients contenant les infos de connexion
$link = mysql_pconnect ($host,$user,$pass) or die('Erreur de connexion '.mysql_error()); // connection à la base
mysql_select_db('dbdemandes',$db) or die('Erreur de selection '.mysql_error());
// on insère les informations du formulaire dans la table
$sql = "INSERT INTO dbdemandes (ID, Nom, Prenom, Numero, Rue, Adresse, Ville, Code, Pays, Phone, Mobilphone, Email, Rafting, Hydro_Speed, Hot_Dog, Kayak, Gite, Stage_5_jours, Week_End, Activite, Connaissance, DateDebut, DateFin, Message, Date) VALUES ('$id', '$nom', '$prenom', '$numero', '$rue', '$adresse', '$ville', '$code', '$pays', '$phone', '$mobilphone', '$email', '$rafting', '$hydrospeed', '$hotdog', '$kayak', '$gite', '$stage5jours', '$weekend', '$activite', '$connaissance', '$datedebut', '$datefin', '$message', '$date')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on envoie un email au destinataire
$headers ='From: "Demande Infos"'."\n"; // les entêtes du mail a envoyer
$headers .='Reply-To: '."\n"; // on n'envoie pas de mail au demandeur, un résumé s'affichera pour lui (voir plus bas)
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; // mail au format html
$headers .='Content-Transfer-Encoding: 8bit'; // doit etre encodé en 8 bits pour le format html
$message ='<html><head><title>Demande de renseignement:</title></head><body>Vous avez une nouvelle demande de renseignements. Veuillez consulter la liste.</body></html>';
if(mail('basesoeix@free.fr', 'Sujet', $message, $headers))
{ // cette partie est réservée pour le formulaire de demande de renseignements
echo '<p align="center"> Votre demande a bien été envoyée. Nous vous contacterons dans les plus brefs délais ! </p>';
}
else
{
echo '<p align="center"> L\'envoi de votre demande a échouée. Veuillez recommencer. </p>';
}
// on teste la déclaration de nos variables et on prévient l'utilisateur que l'enregistrement s'est bien déroulé
if (isset($_POST['Nom']) ) {
// on affiche le résultat en supprimant les antislashes
echo '<p align="center">Votre demande de renseignements au nom de :<strong>'.htmlentities(stripslashes($_POST['Nom'])).'<strong> a bien été envoyée à la base nautique de Soeix-Oloron. Vous serez contacté dans les plus brefs délais.</p>';
echo '<p align="center"><font color="#0000FF">Vous allez etre automatiquement redirigé sur la page d\'accueil dans 5 secondes.... </font></p>';
}
//------------------------------------------------------------------------
// pour afficher correctement les données provenant d'un formulaire et ce quelque soit la configuration de la directive php magic_quotes_gpc (on/off):
// if (get_magic_quotes_gpc()) {
// magic_quotes_gpc activé
// echo(htmlentities(stripslashes($_POST['variable'])));
// }
//else {
// magic_quotes_gpc désactivé
// echo(htmlentities($_POST['variable']));
//}
// -------------------------------------------------------------------------
// on ferme la connexion à la base
mysql_close();
?>
<?php // on temporise, 3 secondes, avant de retourner au formulaire de saisie (redirection automatique de Kadeh (CCM))
function redirect($url, $time=3)
{
//On vérifie si aucun en-tête n'a été envoyé
if (!headers_sent())
{
header("refresh: $time;url=$url");
exit;
}
else
{
echo '<meta http-equiv="refresh" content="',$time,';url=',$url,'">';
}
}
// puis pour faire la redirection n'importe où dans la page.
redirect("http://soeix.free.fr/index.php?page=Accueil&lang=Fr","5");
?>
<form name="Retour" id="Retour" action="http://soeix.free.fr/index.php?page=Accueil&lang=Fr" method="post">
<p align="center"><input type="submit" value="Retour à l'Accueil"/></p>
</form>
</body>
</html>
Ce qui m'énerve c'est qu'une page semblable fonctionne (pour une table clients).
D'autre part, j'ai vu ici même, que les variables textes devaient entourées de " et non de '.
On arrive bien sur le résumé mais la table est toujours vide en dehors des id (auto-increment) et datetime (d'ailleurs je n'ai pas bien saisi comment on pouvait forcer l'écriture de la date avec heure, mn et s ? mais c'est une autre histoire. Voici le fichier mysql de chez free:
-- phpMyAdmin SQL Dump -- version 3.1.5 -- https://www.phpmyadmin.net/ -- -- Serveur: soeix.sql.free.fr -- Généré le : Jeu 03 Février 2011 à 20:00 -- Version du serveur: 5.0.83 -- Version de PHP: 5.2.9 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Base de données: 'soeix' -- -- -------------------------------------------------------- -- -- Structure de la table 'dbdemandes' -- CREATE TABLE IF NOT EXISTS 'dbdemandes' ( 'ID' int(11) NOT NULL auto_increment, 'Nom' varchar(60) collate latin1_general_ci NOT NULL, 'Prenom' varchar(40) collate latin1_general_ci NOT NULL, 'Numero' varchar(5) collate latin1_general_ci default NULL, 'Rue' varchar(25) collate latin1_general_ci default NULL, 'Adresse' varchar(130) collate latin1_general_ci default NULL, 'Ville' varchar(80) collate latin1_general_ci default NULL, 'Code' varchar(5) collate latin1_general_ci NOT NULL, 'Pays' varchar(80) collate latin1_general_ci default NULL, 'Phone' varchar(16) collate latin1_general_ci default NULL, 'Mobilphone' varchar(16) collate latin1_general_ci default NULL, 'Email' varchar(100) collate latin1_general_ci NOT NULL, 'Rafting' varchar(25) collate latin1_general_ci default NULL, 'Hydro_Speed' varchar(25) collate latin1_general_ci default NULL, 'Hot_Dog' varchar(25) collate latin1_general_ci default NULL, 'Kayak' varchar(25) collate latin1_general_ci default NULL, 'Gite' varchar(25) collate latin1_general_ci default NULL, 'Stage_5_jours' varchar(30) collate latin1_general_ci default NULL, 'Week_End' varchar(25) collate latin1_general_ci default NULL, 'Activite' varchar(120) collate latin1_general_ci default NULL, 'Connaissance' varchar(120) collate latin1_general_ci default NULL, 'DateDebut' varchar(20) collate latin1_general_ci default NULL, 'DateFin' varchar(20) collate latin1_general_ci default NULL, 'Message' text collate latin1_general_ci, 'Date' datetime NOT NULL, PRIMARY KEY ('ID') ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ; -- -- Contenu de la table 'dbdemandes' -- INSERT INTO 'dbdemandes' ('ID', 'Nom', 'Prenom', 'Numero', 'Rue', 'Adresse', 'Ville', 'Code', 'Pays', 'Phone', 'Mobilphone', 'Email', 'Rafting', 'Hydro_Speed', 'Hot_Dog', 'Kayak', 'Gite', 'Stage_5_jours', 'Week_End', 'Activite', 'Connaissance', 'DateDebut', 'DateFin', 'Message', 'Date') VALUES (1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0000-00-00 00:00:00'), (2, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0000-00-00 00:00:00'); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Ah! Bien vu pour le VALUES.... hi hi hi c'est ici que je le vois !
Au fait, si tu corrige , pourrais-tu STP, soit mettre en gras ou commenter tes corrections ? Merci infiniment d'avance.
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
477
2 févr. 2011 à 14:03
2 févr. 2011 à 14:03
Un champ de type checkbox renvoi la valeur on s'il est coché.
Dans le cas contraire, la variable $_POST correspondante n'existe pas. Il faut donc vérifié si elle existe au préalable.
Je t'invite a regarder cette page pour plus d'info: https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/913099-transmettez-des-donnees-avec-les-formulaires
Dans le cas contraire, la variable $_POST correspondante n'existe pas. Il faut donc vérifié si elle existe au préalable.
Je t'invite a regarder cette page pour plus d'info: https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/913099-transmettez-des-donnees-avec-les-formulaires