Passage de paramètre php mysal

Résolu/Fermé
Dimitri - 9 févr. 2009 à 14:15
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
- 10 févr. 2009 à 12:02
Bonjour,

J'ai un petit soucis.
Je dois programmer un interface qui doit permettre de poster des cv. Jusque là rien de bien compliqué, mais il faut que cette interface soit modulable.
Il faut donc que je puisse rentrer une exploitation dans ma base de donnée. (c'est ok)
ensuite que sur une page j'affiche l'exploitation avec un checkbox (c'est fait).

Ce que je voudrais c'est un petite aide, si c'est possible pour :
envoyer si ces checkbox sont sont cochées sur un page de traitement.
récupérer sur la page de traitement quelles checkbox sont cochées.

Je tiens à signaler que tout ça doit bien se faire dynamiquement en fonction de la base de données qui est vierge au départ.

Si quelqu'un à une idée?

Merci d'avance,

Dimitri

18 réponses

Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
9 févr. 2009 à 14:19
Salut,

Est ce que tu sais déjà récupéré les valeurs (POST) provenant de ton formulaire ?
0
Oui,

Je sais récupéré la valeur post d'un formulaire "statique" sans problème.
Le problème que j'ai ici, c'est de pouvoir récupéré de valeur sur un formulaire que j'affiche en fonction d'un base de données et qui va évoluer avec le temps.

J'espère que je suis clair, c'est que ce n'est pas facile à expliquer
0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
9 févr. 2009 à 14:26
Non j'arrive pas trop à piger ce que tu veux faire.

Essai si possible de nous mettre des tits exemples simples.
0
Ok, je vais essayer...

Le but est d'inscrire des cv pour une chaine hôtelière en expansion.

Je dois donc avoir une interface qui peut démarrer avec une base de données vide.

j'aurai par exemple une table contenant les exploitations (différents hôtels).
Qui sera vide au départ.
Ensuite, un employé via une interface d'administration pourra rajouter différentes exploitations.

Donc un personne qui veut poster son cv verra le les exploitation encodée dans la base de données. qu'il pourra cocher dans des checkbox.

Donc je doit afficher mes check box en fonction de ma base de données (je réussi à faire ça sans problèmes)

Par contre après je doit réussir à transmettre ses données dans ma page de traitement pour pouvoir renvoyer dans ma base de données dans quelles exploitations la personne désire travailler (il peut y en avoir une ou plusieurs cochée).

Et je coince sur cette partie...

Est-ce que j'ai été assez clair? ou alors dis -moi ce que j'explique mal?

Merci d'avance,

Dimitri
0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
9 févr. 2009 à 14:46
D'accord c un peu plus clair. Les personnes qui vont cocher les exploitations auront t'ils un compte utilisateur ?
0
Non, ils n'auront pas de comptes utilisateur.

Les personnes seront enregistrée dans une tables personne liée à une tables exploitation.
Donc vu que c'est juste pour poster un cv, je n'ai pas besoin d'avoir une identification de l'utilisateur.

Bav,
0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
9 févr. 2009 à 15:14
D'accord dans ce cas il te faut déjà une table ou tu stockeras les exploitations sélectionnées par les utilisateurs.

table choix_utilisateur
id
ref_cv (identifiant pour un cv)
nom_utilisateur
prenom_utilisateur
...
id_exploitation


Exemple table avec données
1 0001 BLABLA BLABLA 1
2 0001 BLABLA BLABLA 5
3 0001 BLABLA BLABLA 6
4 0002 BIBI BIBI 1
...


Tu comprends le principe ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
oui oui, je comprends bien le principe...

d'ailleurs j'ai déjà ma base de données qui est faites.

Le problème que j'ai c'est vraiment sur le passage de paramètres!
0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
9 févr. 2009 à 15:31
Alors je vais essayer d'être clair lol car c'est pas facile à expliquer.

Donc tout d'abord tu dois générer un formulaire vierge pour que l'utilisateur puisse faire ses choix.
Pour pouvoir récupérer la valeur de tes checkboxs tu dois leur donner un nom en fonction de tes exploitations. Je m'explique.

Tu as 2 exploitations

1    HOTEL1
2    HOTEL2


Alors tu vas générer les checkboxs suivants à l'aide d'une requête SQL qui va parcourir tes exploitations

$reponse = mysql_query('SELECT * FROM exploitations') or die (mysql_error());
while ($donnees = mysql_fetch_array($reponse)) {
     echo '<input type="checkbox" name="exploitation_'.$donnees['id_exploitation'].'"';
}


Ce qui te donnera deux checkboxs avec les noms suivants :
<input type="checkbox" name="exploitation_1"';
<input type="checkbox" name="exploitation_2"';


Voilà ça c'est pour la génération du formulaire.

Ensuite on passe à l'insertion dans la base lorsque tu postes ton formulaire.

Tu vas reparcourir tes checkboxs comme précédement mais en récupérant les valeurs cette fois

$reponse = mysql_query('SELECT * FROM exploitations') or die (mysql_error());
while ($donnees = mysql_fetch_array($reponse)) {
     $exploitation = '$exploitation_'.$donnees['id_exploitation'];
     if ($_POST[$exploitation] == "on") {
          //tu insert dans la table:
     }
}

Capiche ? lol
0
Je vais tester,

Mais à la lecture ça me plaît bien... Je te tiens au courant si j'arrive à adapter ça.

Merci beaucoup pour ton aide ;-)
0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
9 févr. 2009 à 15:48
C'est bien ce que tu cherches à faire ?
0
Oui, c'est bien ça...

Je suis entrain de tester pour l'adapter au code que j'ai (il est déjà conséquent) donc ça me prend un peu de temps.

Je te tien au courant du résultat...

Merci beaucoup.
0
J'ai implémenté ce que tu m'as donné de cette façon si :

$reponse = mysql_query('SELECT * FROM exploitation') or die (mysql_error());
while ($donnees = mysql_fetch_array($reponse)) {
?>
<label for="nom">
<?php
echo $donnees['nom'];
?>
</label>
<?php
echo '<input type="checkbox" name="exploitation_'.$donnees['id'].'"';
}
?>


$reponse = mysql_query('SELECT * FROM exploitation') or die (mysql_error());
while ($donnees = mysql_fetch_array($reponse)) {
$exploitation = $donnees['id'];
if ($_POST[$exploitation] == "on") {
mysql_query("INSERT INTO link_exploitation (personne_id, exploitation_id) VALUES ('$id_personne','$exploitation')");
}
}

Peut-être ai-je fais une bête faute,
mais j'ai les erreurs suivantes :
Notice: Undefined index: 1 in c:\program files\easyphp1-7\www\formulaire_cv\developpement\traitement.php on line 136

Notice: Undefined index: 2 in c:\program files\easyphp1-7\www\formulaire_cv\developpement\traitement.php on line 136


la ligne 136 correspond à :
if ($_POST[$exploitation] == "on") {

J'ai aussi essayé avec == TRUE

Si quelqu'un à une idée pour m'aider?
0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
10 févr. 2009 à 10:35
Salut,

Je corrige déjà ça

$reponse = mysql_query('SELECT * FROM exploitation') or die (mysql_error());
while ($donnees = mysql_fetch_array($reponse)) {
?>
<label for="exploitation_'.$donnees['id'].'">
<?php
echo $donnees['nom'];
?>
</label>
<?php
echo '<input type="checkbox" name="exploitation_'.$donnees['id'].'"';
}
?>

Ensuite


$reponse = mysql_query('SELECT * FROM exploitation') or die (mysql_error());
while ($donnees = mysql_fetch_array($reponse)) {
$exploitation = 'exploitation_'.$donnees['id'];
if ($_POST[$exploitation] == "on") {
mysql_query("INSERT INTO link_exploitation (personne_id, exploitation_id) VALUES ('$id_personne','$exploitation')");
}
}

Ton erreur est tout a fait normal car tu prenais pas le bon POST
Ton $_POST['$exploitation'] vaut uniquement l'identifiant mais pas le nom du contrôle.

Essaye et tiens moi au courant
0
974_Vin's_974
Messages postés
547
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009
102
10 févr. 2009 à 10:54
C'est Dimitri P. ca ???



0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
10 févr. 2009 à 11:00
Quoi a fait M.DEFAY ou M.CHANTEUX ? toujours là ces professeurs ?
0
Merci beaucoup pour ton aide déjà, c'est super d'avoir des gens comme toi!

Donc je viens de corriger mon code en fonction de ce que tu m'a donné.
Je n'ai plus d'erreur.

Mais j'ai un petit soucis dans me base de données.
Donc j'ai une tables personne et une table exploitation. Avec une relation 0-n 0-n. Donc j'ai une table que j'ai appelé link_exploitation entre les 2.

Donc comme j'ai Mis 2 exploitation de ma base de données, lorsque j'ai mon formulaire, j'ai 2 checkbox avec les noms des exploitations. (jusque là normal)

Ensuite, je coche ces 2 checkbox pour enregistrer la persone, mais dans ma tables link (qui contient les id des personnes et ceux des exploitation) j'ai :

personne_id exploitation_id
8 0

alors que je devrais avoirs :

personne_id exploitation_id
8 1
8 2

Voilà ou j'en suis pour le moment...
0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
10 févr. 2009 à 11:07
Tout a fait normal :)

$reponse = mysql_query('SELECT * FROM exploitation') or die (mysql_error());
while ($donnees = mysql_fetch_array($reponse)) {
$exploitation = 'exploitation_'.$donnees['id'];
if ($_POST[$exploitation] == "on") {
mysql_query("INSERT INTO link_exploitation (personne_id, exploitation_id) VALUES ('$id_personne','$exploitation')");
}
}

Ta variable $exploitation est une chaine... et lors de ton insertion tu l'insert comme un nombre...
Normalement dans ta table tu dois avoir uniquement l'identifiant donc tu ne dois pas prendre la variable $exploitation qui t'as permis d'appeler ton contrôle mais $donnees['id'] (qui lui est numérique)

Ce qui donne

$reponse = mysql_query('SELECT * FROM exploitation') or die (mysql_error());
while ($donnees = mysql_fetch_array($reponse)) {
$exploitation = 'exploitation_'.$donnees['id'];
if ($_POST[$exploitation] == "on") {
mysql_query("INSERT INTO link_exploitation (personne_id, exploitation_id) VALUES ('.$id_personne.','.$donnees['id'].')");
}
}

Je crois qu'il manquait également les points pour les variables :)
0
974_Vin's_974
Messages postés
547
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009
102
10 févr. 2009 à 11:03
Wesh toujours là XD !!! looooooool ...

0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
10 févr. 2009 à 11:08
Dis bana que Pierre-Laurent BOYER passe le bonjour ;) BTS session 2005-2007
0
En fait,

Je suis belge, en dernière année de technologie de l'informatique...

Donc tout ce qui est php, ce n'est pas trop trop mon truc, mais j'essaie c'est que je suis en stage pour le moment et on m'a demandé de codé ça.

Sinon je me débrouille bien mieux dans tout ce qui est configuration réseau.
0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
10 févr. 2009 à 11:09
Tout a fait normal :)

$reponse = mysql_query('SELECT * FROM exploitation') or die (mysql_error());
while ($donnees = mysql_fetch_array($reponse)) {
$exploitation = 'exploitation_'.$donnees['id'];
if ($_POST[$exploitation] == "on") {
mysql_query("INSERT INTO link_exploitation (personne_id, exploitation_id) VALUES ('$id_personne','$exploitation')");
}
}

Ta variable $exploitation est une chaine... et lors de ton insertion tu l'insert comme un nombre...
Normalement dans ta table tu dois avoir uniquement l'identifiant donc tu ne dois pas prendre la variable $exploitation qui t'as permis d'appeler ton contrôle mais $donnees['id'] (qui lui est numérique)

Ce qui donne

$reponse = mysql_query('SELECT * FROM exploitation') or die (mysql_error());
while ($donnees = mysql_fetch_array($reponse)) {
$exploitation = 'exploitation_'.$donnees['id'];
if ($_POST[$exploitation] == "on") {
mysql_query("INSERT INTO link_exploitation (personne_id, exploitation_id) VALUES ('.$id_personne.','.$donnees['id'].')");
}
}

Je crois qu'il manquait également les points pour les variables :)
0
974_Vin's_974
Messages postés
547
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009
102
10 févr. 2009 à 11:12
Ok PsyK loool !!!

Té dimitri koi fé, ou na un probleme ???

Ma fini mon l'application taleur là ...

Lé su serveur là !!

C koi ton probleme, PsyK y aide aou bien ??? Si na un ti soucis cri a moin si ou wannnt !!!
0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
10 févr. 2009 à 11:13
ou lé sur que c le bon gars mdr ?
0
974_Vin's_974
Messages postés
547
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009
102
10 févr. 2009 à 11:17
Lool ben mi koné pa moin dawar !!! looool !!!

0
Ouioui, je suis bien le même que hier ;-)


Je comprends les lignes de codes que tu m'as données... Merci!
Mais je crois que j'ai encore beaucoup à apprendre!

Pour le moment, j'ai la ligne d'erreur suivante :

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:\program files\easyphp1-7\www\formulaire_cv\developpement\traitement.php on line 139

la ligne 139 est la suivante :

mysql_query("INSERT INTO link_exploitation (personne_id, exploitation_id) VALUES ('.$id_personne.','.$donnees['id'].')");

Est-ce qu'il y aurait une petite subtilité?
0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
10 févr. 2009 à 11:28
Un simple probleme de cote

mysql_query('INSERT INTO link_exploitation (personne_id, exploitation_id) VALUES ('$id_personne.','.$donnees['id'].')') or die (mysql_error()); 
0
974_Vin's_974
Messages postés
547
Date d'inscription
vendredi 23 janvier 2009
Statut
Membre
Dernière intervention
19 février 2009
102
10 févr. 2009 à 11:32
Ca pa li ca mdrrr !! mi koze créol expré paske parey li compren pa tro lo zafaire !!!

Aléé ++
0
Merci de m'avoir aider à résoudre mon problème...

Je m'en vais de ce pas continuer mon programme en gardant précieusement le code que tu m'as aider à faire, c'est que j'en aurai besoin pour les liens avec mes autres tables!

Dimitri
0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
10 févr. 2009 à 11:36
C'est bon ça tourne nickel ?

Alors applique un petit résolu si ça fonctionne pour toi
0
Un petit mot d'explications :

Résumé de mon problème :
Je dois créer pour une chaîne hôtelière une interface en ligne permettant de poster des CV.
Cette interface doit être modulable pour pouvoir rajouter des exploitations (hôtels)
Donc après dans mon formulaire il faut que je puisse afficher les exploitation qui sont repris dans ma base de données (il me faut pour celà un formulaire "dynamique").
Ensuite en fonction des exploitation cochées, il faut pouvoir entré le lien entre ces exploitations et les personnes. pour ça on rentre l'id de la personne ainsi que l'id de l'exploitation dans un table link_exploitation. (ce qui est fait dans la 2ième partie de mon code).


Voici le code de ma page ou ce trouve mon formulaire :
(tout ceci ce trouve dans un formulaire qui renvoie vers la page de traitement :
<form method="post" action="traitement.php" ENCTYPE="multipart/form-data"> )

<?php
mysql_connect('localhost',$userdb,$passdb)or die(mysql_error());
mysql_select_db("$nomdb")or die(mysql_error());
$reponse = mysql_query('SELECT * FROM exploitation') or die (mysql_error());
while ($donnees = mysql_fetch_array($reponse)) {
?>
<label for="exploitation_'.$donnees['id'].'">
<?php
echo $donnees['nom'];
?>
</label>
<?php
echo '<input type="checkbox" name="exploitation_'.$donnees['id'].'"';
}
?>


Ensuite la page php qui permet de renvoyer les données dans la base données.

$reponse = mysql_query('SELECT * FROM exploitation') or die (mysql_error());
while ($donnees = mysql_fetch_array($reponse)) {
$exploitation = 'exploitation_'.$donnees['id'];
if ($_POST[$exploitation] == "on") {
mysql_query('INSERT INTO link_exploitation (personne_id, exploitation_id) VALUES ('.$id_personne.','.$donnees['id'].')') or die (mysql_error());
}
}


Je crois que c'est du code qui peut être utilisé pour pas mal d'application lorsqu'on veut créer quelque chose d'entièrement modulable.
Je tiens particulièrement à remercier Psyk974 pour l'aide qu'il m'a apporté.
Mon travail n'est pas encore fini, mais ce point ci constituait le nœud de ce que je devais faire, et je devrais m'en sortir sans trop de difficulté.
0
Psyk974
Messages postés
551
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
30 mars 2010
49
10 févr. 2009 à 12:02
Alors met "résolu"
0