Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/09/2011, 16h53   #1
Invité de passage
 
Homme Denis
Webmaster
Inscription : septembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Denis
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Webmaster
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2011
Messages : 8
Points : 1
Points : 1
Par défaut Mettre une variable pour le choix de la colonne dans requête mysql

Bonjour,
voilà, je voudrais gérer l'insertion d'une dans une base de données de données simple, mais dépendant de l'envoie d'un formulaire.
Le problème est le choix de la colonne.
Mon code est le suivant sans prendre en compte le formulaire
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
try{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
	$bdd = new PDO('mysql:host=localhost;dbname=ledbname', 'id_connexion', 'mot_de_passe',$pdo_options);
	$req = $bdd->prepare('INSERT INTO liste_noire_ext(email_ext, test) VALUES(:email_ext, :test)');
		$req->execute(array(
						'email_ext' => $lemail,
						'test' => $desinscription
						));
 
	}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}
Et ça, ça marche. Parcontre, ce que je voudrais c'est remplacer "test" qui correspond à une colonne de ma table par le paramètre envoyé par le formulaire ($lelisting qui correspond à $_POST['listing'] du formulaire).
Mais si je remplace test par $lelisting... plus rien ne fonctionne.

J'espère être assez clair !

Merci à ceux qui auraient une idée.
irma2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 06h49   #2
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Saluton,
Il faudrait tout de même tester l'existence de la colonne dans la table avant de vouloir l'invoquer dynamiquement dans une requête.
Après utiliser une requête préparée pour une syntaxe dynamique me semble contradictoire.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 10h27   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Je serais curieux de savoir ce qu'il peut y avoir dans $_POST['listing'] !
Faire une insertion avec une variable pour la colonne à alimenter est pour le moins étrange et je subodore un modèle de données non normalisé derrière cette bizarrerie.

On peut avoir la structure de la table liste_noire_ext ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 17h27   #4
Invité de passage
 
Homme Denis
Webmaster
Inscription : septembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Denis
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Webmaster
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2011
Messages : 8
Points : 1
Points : 1
Bonjour, et merci à vous.
Désolé, pour ce retard de réponse, du boulot ailleurs.
La structure de la table est simple : id / adresse_mail / col1 / col2
ou col 1 et col 2 sont des "client".
En effet, je fais quelque prestation de mail avec maxbulk et je voulais créer une page pour les désinscription, ce qui me permettrait de ne plus avoir à les traiter par copier/coller depuis les mails que je reçois pour cela.
L'idée, était de faire en sorte qu'une colonne se créer automatique quand il y a un nouveau listing... en fait, c'est suffisamment rare pour que je le fasse à la main...
Bref, il y a un lien de désinscription avec le nom du listing et l'adresse mail en paramètre GET... je récupère et insère dans des input invisible les deux données, puis j'ai un bouton valider pour la désinscription (avec avant un petit message).
Quand les données sont traité en POST, je voulais vérifié si le listing existait (colonne de la base de donnée) avant de mettre les adresses mail.

En tout cas, je suis toujours preneurs (ça peut servir) même si j'ai trouvé une solution plus "manuelle" (ajout du nouveau listing directement dans la base).

Encore merci pour votre attention et votre aide...
À lundi (long week-end ! )
irma2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 17h28   #5
Invité de passage
 
Homme Denis
Webmaster
Inscription : septembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Denis
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Webmaster
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2011
Messages : 8
Points : 1
Points : 1
Ah oui, juste un détail sur la structure... il y a une colonne avant auto-incrémentée pour la clé.
irma2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 09h36   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par irma2011 Voir le message
La structure de la table est simple : id / adresse_mail / col1 / col2
ou col 1 et col 2 sont des "client".
Il y a déjà une erreur de modélisation ici !
En dehors du fait que "col1" et "col2" n'est pas explicite comme nom, si ces deux colonnes servent à enregistrer la même information "client", c'est une erreur.
Il faut modéliser une association entre ce que vous appelez "client" et cette table qui ne semble contenir que des adrels. Vos explication ne m'ont par contre pas permis de comprendre quelle est la nature de cette association. À vous de le déterminer.

MCD :
adrel -1,n----associer----0,n- client

Tables :
adrel (adr_id, adr_adrel)
client (clt_id, clt_nom...)
client_adrel (cad_id_client, cad_id_adrel)

Citation:
En effet, je fais quelque prestation de mail avec maxbulk et je voulais créer une page pour les désinscription, ce qui me permettrait de ne plus avoir à les traiter par copier/coller depuis les mails que je reçois pour cela.
L'idée, était de faire en sorte qu'une colonne se créer automatique quand il y a un nouveau listing...
En principe, on détermine d'abord la structure des données puis le programme utilise cette structure mais ne la modifie pas. L'ajout d'une colonne ne devrait se faire que lors d'un changement majeur des spécifications d'un logiciel et/ou des données gérées. Pas lors de l'utilisation courante du logiciel.

Le modèle que j'ai donné ci-dessus permet de simplement ajouter des clients et des associations entre les adrel et les clients sans toucher à la structure des données.

Ce principe étant décrit, je ne sais pas si c'est suffisant pour votre besoin car je n'ai pas vraiment compris ces histoires de désinscription et de rapport entre les adrels et les clients.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 09h03   #7
Invité de passage
 
Homme Denis
Webmaster
Inscription : septembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Denis
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Webmaster
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2011
Messages : 8
Points : 1
Points : 1
Bonjour,
et merci pour cette réponse qui vient de me faire comprendre que ce que je croyais être une solution... n'en était pas une.
Je vais repenser l'ensemble de mon projet et vous remercie sincèrement d'avoir pris le temps de vous pencher sur la nature même de mon problème.
Je vais avoir une formation mysql d'ici peu ce qui va, je l'espère, me permettre de mieux appréhender ce que k'essaie de faire.
irma2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 09h45   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par irma2011 Voir le message
Je vais avoir une formation mysql d'ici peu ce qui va, je l'espère, me permettre de mieux appréhender ce que k'essaie de faire.
Malheureusement, il est probable que la formation à MySQL n'apporte rien en matière de modélisation des données. Alors un peu de temps passé à la lecture de l'article de SQLPro sur la modélisation Merise et/ou au livre de Michel Diviné serait beaucoup plus profitable.
Et plutôt que de prendre peut-être de mauvaises habitudes avec ce qui vous sera enseigné dans une formation spécifique à MySQL, il vaut mieux commencer par apprendre le SQL normalisé. Le site de SQLPro est la référence en la matière.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 09h47   #9
Invité de passage
 
Homme Denis
Webmaster
Inscription : septembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Denis
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Webmaster
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2011
Messages : 8
Points : 1
Points : 1
Merci pour ces conseils, je prends note.
La formation mysql est une formation que ma boite me donne... ça ne se refuse pas.
Encore merci pour les conseils.
Denis
irma2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h17.


 
 
 
 
Partenaires

Hébergement Web