Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1494 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/MySQL] Ajout de champ dynamique et checkbox

 



 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[PHP/MySQL] Ajout de champ dynamique et checkbox

n°1330064
MrNatas
Parle klingon couremment
Posté le 22-03-2006 à 11:37:05  profilanswer
 

Argh, dans ma boîte on, me prend pour un surhomme.
 
Bon, passé ce petit état d'âme, voilà mon problème, moi grand débutant en PHP/MySQL
 
 
Je dois créer une page en php qui ajoute des champs dans une table crée une table et ajoute les champs dynamiquement..
 
Les champs à ajouter sont prédéfinis, il faut juste choisir lesquels, j'ai donc opté pour une sélection par checkbox.
 
Par exemple :
 
[X] Nom
[X] Adresse
[ ] Adresse bureau
[X] Téléphone
 
Ce que je voudrais c'est inclure dans la base uniquement les champs cochés.
 
Comment puis je faire ?
 
Merci d'avance.


Message édité par MrNatas le 23-03-2006 à 19:05:13
mood
Publicité
Posté le 22-03-2006 à 11:37:05  profilanswer
 

n°1330073
dwogsi
Défaillance cérébrale...
Posté le 22-03-2006 à 11:47:38  profilanswer
 

if($_POST["name"]=="value" )
Ou est le problème??

n°1330082
MrNatas
Parle klingon couremment
Posté le 22-03-2006 à 11:53:37  profilanswer
 

Le probleme c'estque les gens de ma boîte me prennent pour un dev ^^
 
En plus , je me suis mal exprimé, méa culpa.
 
Il s'agit de créer une table, et de choisir les champs à inclure avec les checkbox....
 
Donc, créer une table c'est ça si j eme trompe pas :
 
CREATE TABLE test (
  id int(11) DEFAULT '0' NOT NULL  auto_increment,
  nom varchar(20) NOT NULL,
  Adresse varchar(200),
  PRIMARY KEY (id)
);
 
Et je fais comment pour récuperer les valeur des checkbox là dedans ?
 
(désolé, n00b inside...)

n°1330086
Yertle
Posté le 22-03-2006 à 11:56:55  profilanswer
 

Quelle base de données utilises tu, MySQL, Oracle, Postgresql ?
 
Sinon pour l'instant je peux te proposer ça :

Code :
  1. <?php
  2. echo "
  3. <form method='post' name='selectionchamps' action=''> //formulaire checkboxes
  4. <input type='checkbox' name='nom' value='".$nom."' /><br />
  5. <input type='checkbox' name='adresse' value='".$adresse."' /><br />
  6. <input type='checkbox' name='adressebureau' value='".$adressebureau."' /><br />
  7. <input type='checkbox' name='tel' value='".$tel."' /><br />
  8. <input type='submit' name='champsenvoyes' value='ajouter les champs dans la base' /> //bouton submit qui envoie une valeur à la validation
  9. </form>
  10. ";
  11. if (isset($_POST['champsenvoyes'])){ //teste si la variable envoyée par submit existe, donc si le formulaire a été validé
  12.     array_pop($_POST['champsenvoyes']); //vide la case du submit
  13.     $connect = mysql_connect($serv,$log,$pass); //ouvre la connexion a la bdd mysql
  14.     while(!empty($_POST)){ //on va vider le tableau de renvoie du formulaire
  15.         $row = array_pop($_POST['nom']); //j'extraie la variable du nom
  16.         if (!empty($row)){ //si elle n'est pas vide alors on établie la requete et on l'effectue
  17.             $sql = "insert into table (nom) values ('".$row."')";
  18.             mysql_query($sql);
  19.         }
  20. //idem pour chaque ligne du form
  21.         $row = array_pop($_POST['adresse']);
  22.         if (!empty($row)){
  23.             $sql = "insert into table (adresse) values ('".$row."')";
  24.             mysql_query($sql);
  25.         }
  26.         $row = array_pop($_POST['adressebureau']);
  27.         if (!empty($row)){
  28.             $sql = "insert into table (adressebureau) values ('".$row."')";
  29.             mysql_query($sql);
  30.         }
  31.         $row = array_pop($_POST['tel']);
  32.         if (!empty($row)){
  33.             $sql = "insert into table (tel) values ('".$row."')";
  34.             mysql_query($sql);
  35.         }
  36. ?>


Ce code devrait marcher, mais je dois avouer qu'il est un peu lourd, il y a certainement moyen de le rendre dynamique, donc plus rapide.

n°1330103
MrNatas
Parle klingon couremment
Posté le 22-03-2006 à 12:22:23  profilanswer
 

:love:  
Merci !!
 
Je devrais pouvoir m'en sortir avec ça, le seul probleme c'est que j'ai beaucoup de champs à ajouter (ou pas), et je me demande si c'est possible faire comme ça :
 
- Créer un tableau
- Ajouter les formulaires dans le tableau
- Faire une boucle qui  
    *vérifie le statut du checkbox
    * envoie la requette si c'est choché
 
En tout cas, merci de ton aide !
 
ps : je suis sous MySQL


Message édité par MrNatas le 22-03-2006 à 12:24:58
n°1330156
Yertle
Posté le 22-03-2006 à 13:25:13  profilanswer
 

Ok alors le truc c'est que dans le cas ou t'as beaucoup de champs a tester le script au dessus va etre trop lourd.
La solution que j'ai adoptée qd j'ai eu ce genre de pbm a résoudre c'est que les champs non renseignés je les ajoutais qd mm ds la base, mais dans mon cas, la ligne était vide a l'origine. C'est a dire que si ta ligne dans ta base est déja remplie, tu ne peux pas utiliser cette méthode car tu écraserai les valeurs déja enregistrées par des valeurs vides.
 
Je sais pas exactement comment se présente(nt) ton(tes) formulaire(s) mais en ce qui me concerne voila une solution que je te propose :
si ton formulaire concerne des champs dans la base déja remplis, alors récupère leur valeur et affecte les sur l'attribut value dans chaque input.
Ex : pour le formulaire de modif du profil d'un user :
imaginons que j'ai déja ça dans la base :
id -> 007 //identificateur, clé primaire
nom -> bond
prenom -> james-henry //hé oui ça personne le sait mais james bond s'appelle en réalité james-henry bond, il ne l'a jamais avoué il en a trop honte <-- cette information est entièrement fause
age -> 25 //oui je sais il ne les fait pas
 
voila le code de la page de ton formulaire :  

Code :
  1. <?php
  2. //connexion a la base (ça tu sais le faire)
  3. $sql = "select * from users where id='007'"; //en admettant que tu aies passé l'id qq part avant (dans $_SESSION par exemple
  4. $tab_result = mysql_fetch_array(mysql_query($sql,$maconnexion));
  5. //j'ai donc un tableau de 4 cases : id, nom, prenom et age
  6. //la on affiche le formulaire :
  7. echo "<form method='post' action=''>"; //si action n'est pas renseigné, le form renvoi sur lui mm par défaut
  8. echo "<input type='text' name='nom' value='".$tab_result['nom']."' />";
  9. echo "<input type='text' name='prenom' value='".$tab_result['prenom']."' />";
  10. echo "<input type='text' name='age' value='".$tab_result['age']."' />";
  11. echo "<input type='submit' name='modifications' value='Modifer son profil' />";
  12. echo "</form>";
  13. //ici on place le script qui va faire la mise a jour
  14. if (isset($_POST['modifications'])){
  15.   $sql = "update table users set nom='".$_POST[nom]."' prenom='".$_POST['prenom']."' age='".$_POST['age']."'";
  16.   if(@mysql_query($sql,$nomdemaconnexion)){
  17.     echo "mise a jour OK";
  18.   }else{
  19.     echo "echec de la mise a jour";
  20.   }
  21. }
  22. ?>


voila ainsi si tu ne fais un changement que sur un champ, étant donné que la valeur initiale de chaque champs est celle figurant dans la base, lorsque tu fera la mise a jour les valeurs de la base seront remplacées par elle mm, donc pas grave.
 

n°1330307
MrNatas
Parle klingon couremment
Posté le 22-03-2006 à 16:06:45  profilanswer
 

J vais vérifier ça , en totu cas je t'enverrais le résultat, merci de ton aide !

n°1330419
MrNatas
Parle klingon couremment
Posté le 22-03-2006 à 18:13:06  profilanswer
 

J'avais pensé à ça, il me fallait un moyen de reconnaitre les checkbox et de faire une boucle avec, donc j'ai pensé au javascript :
 

Code :
  1. function add()
  2. var choix = document.formulaire.cases;
  3. {
  4. for (i = 1; i < choix.length; i++)
  5. {
  6.   if (choix[i].checked == true)
  7.    {
  8.    document.write('<?php ALTER TABLE \'test\' ADD',choix[i].value,'?>');
  9.    document.formulaire.submit();
  10.    }
  11. }
  12. }


 
Mais j'ai un problème quelque part, ça n'a aucun effet :(
 
Peut être y à t-il un équivalent à document.formulaire.case en php, mais j'y crois pas trop...


Message édité par MrNatas le 22-03-2006 à 18:15:43
n°1330421
smaragdus
whores, drugs & J.S. Bach
Posté le 22-03-2006 à 18:18:14  profilanswer
 

Citation :

document.write('<?php ALTER TABLE \'test\' ADD',choix[i].value,'?>');


 
C'est énorme [:rofl]
A mettre urgemment dans le topic blague [:dawa]
 
Un conseil : apprends d'abord comment fonctionne un système client - serveur avant de tenter de faire du PHP :pfff:


Message édité par smaragdus le 22-03-2006 à 18:20:26
n°1330508
MrNatas
Parle klingon couremment
Posté le 22-03-2006 à 19:36:59  profilanswer
 

Oui bah écoute, y'a des gars comme yertle qui aident, et des gars comme toi qui se moquent.
Pour ta gouverne, monsieur le seul l'unique, je me fais chier avec ça depuis çe matin, et je trouve pas ça drôle du tout.
 
Et si tu trouves toujours ça drole, je te donne mon algo :
 
Pour chaque checkbox cochée
Ecrire la requete
Ensuite envoyer le formulaire, qui , à mon sens, devrait effectuer la requète écrite.
 
A moins que tu gausse parce que je n'ai pas spécifié la connection à la base ?
 
Je sais très bien que le code php est interprété par le serveur et le javascript pas le client.
Je te revoie aussi à ça :
 
http://www.aidejavascript.com/article55.html
 
Parfois ça marche.

mood
Publicité
Posté le 22-03-2006 à 19:36:59  profilanswer
 

n°1330538
MrNatas
Parle klingon couremment
Posté le 22-03-2006 à 20:26:39  profilanswer
 

Et d'ailleurs, ce qui pourrait être drole c'est que même selon mon algo, j'ai pas mis le submit au bon endroit...

n°1330563
smaragdus
whores, drugs & J.S. Bach
Posté le 22-03-2006 à 21:12:51  profilanswer
 

MrNatas a écrit :


Je sais très bien que le code php est interprété par le serveur et le javascript pas le client.


non tu ne le sais pas : tu mixes allegrement javascript, php et sql sans aucune cohérence.
ton pseudo-code javascript ne veut rien dire, il ecrirait soi-disant du php qui contient du SQL te quel, pour le poster (mal en plus), ça n'a aucune logique. Faut-il encore le recuperer pour qu'il soit executé.
 
Prends le temps de comprendre ce que tu fais, apprends les bases au moins...
 
Tiens je mets ta ligne de code anthologique en signature [:dawa]


Message édité par smaragdus le 23-03-2006 à 08:46:02
n°1330578
MrNatas
Parle klingon couremment
Posté le 22-03-2006 à 21:30:54  profilanswer
 

Bah écoute, si je poste ici c'est que justement j'ai besoin de savoir.
Et si j'ai besoin de savoir vite, c'est que c'est pour mon boulot.
Alors tu finance ma formation, ou tu fais comme les vrais gens qui aident vraiment les autres.
Au passage tu peux mettre que je mange des caleçons sale dans ta signatures, je m'en contrefiche.
 
Et puis : http://www.javascriptfr.com/codes/ [...] 32766.aspx
 
je suis pas tout a fait hérétique quand même.

n°1330584
smaragdus
whores, drugs & J.S. Bach
Posté le 22-03-2006 à 21:38:17  profilanswer
 

MrNatas a écrit :


Et puis : http://www.javascriptfr.com/codes/ [...] 32766.aspx
 
je suis pas tout a fait hérétique quand même.


 
Ca n'a rien à voir, par exemple : y a pas de balise PHP.
Et puis autant dire que la sécurité... [:rofl]
 
A la place de la requete postée, je poste un "drop database" et au revoir ta base de données, c'est délirant
 

Citation :

Alors tu finance ma formation, ou tu fais comme les vrais gens qui aident vraiment les autres.


 
T'aider serait vraiment du gaspillage : tu ne viens pas ici pour apprendre mais pour trouver une bonne poire pour faire ton boulot


Message édité par smaragdus le 23-03-2006 à 08:43:46
n°1330591
MrNatas
Parle klingon couremment
Posté le 22-03-2006 à 21:47:09  profilanswer
 

J'ai lu le code, et j'ai dis que j'étais pas TOUT A FAIT hérétique, je sais bien que ce code n'est pas identique au mien, mais bon j'ai fiat un truc ça s'apelle "essayer", et surprise peut-être, mais c'est comme ça qu'on à des résultats parfois.
 
Et puis la sécurité je m'en fiche, c'est en interne le truc.

n°1330595
smaragdus
whores, drugs & J.S. Bach
Posté le 22-03-2006 à 21:52:08  profilanswer
 

MrNatas a écrit :

mais bon j'ai fiat un truc ça s'apelle "essayer", et surprise peut-être, mais c'est comme ça qu'on à des résultats parfois.


 
Je crois que tu confonds "informatique" et "alchimie"

n°1330597
MrNatas
Parle klingon couremment
Posté le 22-03-2006 à 21:54:12  profilanswer
 

Ecoute vieux, tu veux pas aider, t'aides pas, mais me fais pas perdre mon temps. Je suis pas fermé à tout aprentissage, pour ta gouverne, je viens de me taper 100 pages de doc sur le css et xhtml, et en 2002 j'en avait fait bien plus sur le php, quand j'en ai eu besoin pour moi.
Mais vois tu y'a des moments ou les gens, et bah ils ont besoin d'aide, vite parce que plein de raisons.
Donc je me répète, mais tu peux ironiser tant que tu veux, ça ne me fera pas non plus progresser.
 
Et un petit édit: pardon, je m'emporte, je vais continuer a tenir au courant ceux qui veulent bien m'aider en alchimie  et ne plus répondre aux autres, ça gagnera en clarté et en ambiance.

Message cité 1 fois
Message édité par MrNatas le 22-03-2006 à 21:58:47
n°1330606
smaragdus
whores, drugs & J.S. Bach
Posté le 22-03-2006 à 22:09:00  profilanswer
 

MrNatas a écrit :

Mais vois tu y'a des moments ou les gens, et bah ils ont besoin d'aide, vite parce que plein de raisons.


Ici c'est un forum d'aide et quand une personne vient demander de l'aide en php, je la donne bien volontier :jap:
 
Par contre, quand, comme dans ton cas, c'est quelqu'un qui vient ici uniquement pour qu'on fasse son boulot à sa place, je me garde bien de donner une solution, pour preuve : tu n'as PAS posté UNE ligne de PHP.


Message édité par smaragdus le 23-03-2006 à 08:47:05
n°1330680
MrNatas
Parle klingon couremment
Posté le 22-03-2006 à 23:59:43  profilanswer
 

Bon, et bah vous savez quoi ?
Je vais me débrouiller tout seul, voila.
Droppez tout, merci yertle pour ton aide.
Apres tout ça m'apprendra.

n°1330761
Yertle
Posté le 23-03-2006 à 09:15:55  profilanswer
 

Mais non laisse pas tomber, je vais continuer à te filer mon aide paske même si je suis pas une super puissance je suis qd même passé par là où tu passes.
 
Laisse Smaratruc ironiser et poster ses insultes, si toi t'as besoin d'aide moi je te l'apporterai mais apparemment lui aussi a besoin d'aide, mais pas en informatique, il a besoin de se sentir fort on dirait un complexe d'infériorité, alors laisse le faire et ne répond pas à ses posts il se lassera t'en fait pas.
 
Dans tous les domaines tu trouveras toujours des gens comme ça, dans le sport dans la musique et même dans l'informatique alors faut apprendre à faire abstraction.
 
Sur ce je repasse dans la matinée pour rajouter de l'aide.
 
A+.

n°1330776
MrNatas
Parle klingon couremment
Posté le 23-03-2006 à 09:37:47  profilanswer
 

Sorry, réaction de colère, hiers j'étais vanné et ennervé, et je me suis laissé emporter plus d'une fois., je vais reprendre le problème, il faut que j'y arrive.
 
En tout cas Yertle, encore merci.

n°1330789
Yertle
Posté le 23-03-2006 à 09:49:10  profilanswer
 

Ce que je peux te proposer :
créé une page requete.php (par exemple) dans laquelle tu te contente d'écrire ça :

Code :
  1. <?php
  2. echo "<form method='post' action='' id='formrq'>";
  3.   echo "<div id='requetes'>";
  4.   //dans ce div tu rajouteras les champs de saisie dynamiquement a partir de la fenetre mere grace a javascript
  5.   echo "</div>";
  6.   echo "<input type='submit' name='rqenvoyees' value='envoyer requetes' />";
  7. echo "</form>";
  8. if (isset($_POST['rqenvoyees'])){ //si le form a été validé donc des requetes envoyées par post
  9. $con = mysql_connect(blablabla); //établi ta connexion
  10. while (!empty($_POST[]){ //on va vider le tableau post
  11.   $rq = array_pop($_POST); //$rq reçoit la premiere valeur qui sera soit une requete soit la valeur du bouton submit
  12.   if ($rq != "envoyer requetes" ){ //si $rq n'est pas la valeur du submit c'est donc une requete et on l'effectue
  13.     $result = mysql_query($rq,$con);
  14.   }
  15. }
  16. ?>


Donc tu fais ouvrir cette page dans un popup en mettant dans la balise <head> de ta page mère ce code javascript :

Code :
  1. <script lanage='javascript'>
  2. var fenetrefille;
  3. function ouvrirFille(){
  4.   fenetrefille = window.open("requetes.php","nom du popup (tu choisis)","options (genre scrollbars=no,toolbar=no etc.)" );
  5. }
  6. function passerRequetes(formulaireCheckboxes){
  7.   for (var i=0 ; i<formulaireCheckboxes ; i++){
  8.     if (formulaireCheckboxes[i].checked){
  9.       fenetrefille.document.getElementById('divrequetes').innerHTML += "<input type='text' name='rq"+i+"' value='la tu mets ta requete sql'>";
  10.     }
  11.   }
  12. //là t'as le choix, soit tu fait un fenetrefille.document.getElementById('formrq').submit() soit tu décide pour tes tests de valider le form de la fenetre fille manuelement
  13. }


 
Voila je pense que ça c'est pas trop mal, je t'ai pas tt fait, tu vois que certains trucs c'est à toi de les rajouter.
J'espère que c'est pas trop bordélique et assez compréhensible, si c'est le cas dis le moi je te rajouterai des com et des expliquations.


Message édité par Yertle le 23-03-2006 à 10:35:44
n°1330832
Yertle
Posté le 23-03-2006 à 10:40:10  profilanswer
 

Ah et j'oubliais
Et ton bouton de validation de ton form de checkboxes (dans ta page mère) doit etre comme ça :
 
 input type=\"submit\" value=\"OK\" onClick=\"ouvrirFille(); passerRequetes('nom de ton formulaire')\"
 
je te le rédige dans des balises code et je te met pas le conde entier paske ça plante, ça me fait une erreur 64 :S
 
Tiens prends cette adresse, je sais pas si tu connais mais c'est hyper pratique qd on fait du javascript.
http://wp.netscape.com/eng/mozilla [...] avascript/
 
Bon et un conseil, surtout perd pas espoir, regarde moi, je suis sur que t'as l'impression que je gère grave et tt et que je fais ça depuis des années, bah faut savoir que j'ai que 19 ans, j'ai commencé le javascript ya 1 mois et je suis encore a l'IUT, j'ai donc pas de diplomes ;)


Message édité par Yertle le 23-03-2006 à 10:42:43
n°1330840
sub1
Posté le 23-03-2006 à 10:46:57  profilanswer
 

Hello,
 
Il n'y a ps besoin de javascript du tout.
Le couple nom/valeur d'une checkbox n'est envoyé au serveur que si il est coché. Dans le cas contraire, aucun envoi de données.  
Donc un simple foreach en php sur la page qui récupère  les paramètres suffira.
 
@Yertle : as tu déja passé des requètes sql depuis javascript ? Je suis curieux de voir le fonctionnement... (hors pb de compatibilité et de sécurité que ca pourrait poser).

n°1331122
Djebel1
Nul professionnel
Posté le 23-03-2006 à 15:47:05  profilanswer
 

je comprends pas pourquoi on parle de javascript ici.
 
MrNatas : tu as pensé à regarder comment récupérer les données d'un formulaire en PHP ? Parce que là, il suffit de :
- afficher un formulaire avec tes checkbox (que du html ça)
- récupérer les infos du formulaire envoyé par l'utilisateur (PHP)
- En fonction des checkbox cochées, établir la requete SQl (en PHP)
- Balancer la requete SQL (en PHP)
 
Bref, tout ce que tu as besoin de savoir : récupérer des données de formulaire, et faire une requete SQL. Deux compétences que tu trouves dans n'importe quel tutoriel de PHP, dans les tous premiers chapitres.
 
Smaragdus voulait donc te dire que tu avais rien foutu, ce que je pense aussi.

n°1331209
MrNatas
Parle klingon couremment
Posté le 23-03-2006 à 17:00:10  profilanswer
 

Djebel :
 
Si si , t'inquietes, j'ai vu comment récup les données d'un checkbox, ce que je ne savais pas c'est comment déterminer si c'est choché ou pas, et selon sub1, y'a même pas besoin donc c'est très bien, donc je m'acharne.

n°1331237
Djebel1
Nul professionnel
Posté le 23-03-2006 à 17:33:59  profilanswer
 

en effet, il suffit de vérifier si le nom que tu as donné à ta checkbox (name ="toto" ) existe dans $_POST.

n°1331277
MrNatas
Parle klingon couremment
Posté le 23-03-2006 à 19:03:53  profilanswer
 

Bon, j'ai fait ça  
 

Code :
  1. <?
  2. $host = "localhost";
  3. $user = "root";
  4. $pass = "";
  5. $bdd = "css";
  6. $table = "test";
  7. mysql_connect($host, $user, $pass);
  8. mysql_select_db($bdd);
  9. if ($HTTP_POST_VARS['check']) {
  10. $box=$HTTP_POST_VARS['box1'];
  11. $box_count=count($box);
  12. foreach ($box as $valeur) {
  13.  $sql='ALTER TABLE $table ADD $valeur TEXT';
  14. }
  15. }
  16. ?>
  17. <form name="formulaire" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  18. <input type="checkbox" name="box1[]" value="1"> 1
  19. <input type="checkbox" name="box1[]" value="2"> 2
  20. <input type="checkbox" name="box1[]" value="3"> 3
  21. <input type="submit" name="check" value="SEND">
  22. </form>


 
Mais rien ne se passe... en tout cas pour la recuperation des données j'ai testé ça marche.
Merci encore pour votre aide.

n°1331297
smaragdus
whores, drugs & J.S. Bach
Posté le 23-03-2006 à 19:55:29  profilanswer
 

Citation :

$sql='ALTER TABLE $table ADD $valeur TEXT';


 
initialiser une chaine avec une requete SQL, ok, mais pour en faire quoi ?
T'as toujours pas ouvert de doc PHP.
 

Spoiler :

Bon, j'ai fait copié-collé ça


Message édité par smaragdus le 23-03-2006 à 20:02:03
n°1331316
Djebel1
Nul professionnel
Posté le 23-03-2006 à 20:20:49  profilanswer
 

ton $valeur, tu penses qu'il contient quoi ? Les noms des checkbox cochés, tu pense qu'ils sont dans quelles variables ?

n°1331502
MrNatas
Parle klingon couremment
Posté le 24-03-2006 à 10:24:28  profilanswer
 

Bah, si je met un echo avec la variable $valeur, ça affiche bien la valeur de la checkbox.
 
Après, comme je le dis, je suis un n00b qui doit faire un truc vide, et quand je sais pas, je demande, ce qui semble normal.
 
Et donc, oui, j'ai un problème avec cette requète sql, un prob de syntaxe aparamment. Que je vais pouvoir regler sans doute dans la journée, et probablement très vite avec votre aide.
 
PS :  
 

Citation :


initialiser une chaine avec une requete SQL, ok, mais pour en faire quoi ?


 
Je n'ai absolument rien contre une façon socratique dans l'aide sur les forum, ça me pousse à réfléchir, et c'est pas plus mal.
 

Citation :

T'as toujours pas ouvert de doc PHP.
 


 
Mais socrate au vinaigre, c'est tout de suite moins motivant :D

n°1331635
MrNatas
Parle klingon couremment
Posté le 24-03-2006 à 12:24:00  profilanswer
 

Code :
  1. <?
  2. $host = "localhost";
  3. $user = "root";
  4. $pass = "";
  5. $bdd = "css";
  6. $table = "test";
  7. mysql_connect($host, $user, $pass);
  8. mysql_select_db($bdd);
  9. if ($HTTP_POST_VARS['check']) {
  10. $box=$HTTP_POST_VARS['box1'];
  11. $box_count=count($box);
  12. foreach ($box as $valeur) {
  13.  mysql_query("ALTER TABLE $table ADD $valeur TEXT" );
  14. }
  15. }
  16. ?>
  17. <form name="formulaire" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  18. <input type="checkbox" name="box1[]" value="un"> 1
  19. <input type="checkbox" name="box1[]" value="deux"> 2
  20. <input type="checkbox" name="box1[]" value="trois"> 3
  21. <input type="submit" name="check" value="SEND">
  22. </form>


 
 
Et là, je suis content, parce que ça marche !

n°1331757
Djebel1
Nul professionnel
Posté le 24-03-2006 à 14:42:51  profilanswer
 

lol, le seul probleme était la valeur des checkbox dans le formulaire ?

n°1331861
MrNatas
Parle klingon couremment
Posté le 24-03-2006 à 16:26:41  profilanswer
 

Nope, le problème c'était d'arriver à un résultat, je part de zéro ou presque :D
 
Mon premier problème c'était le "foreach" dont je ne conaissais pas l'emploi, et mon second, le HTTP_POST_VAR qui m'était aussi inconnu.
 
Je connais un peu les manipulation d'éléments en javascript (genre document.formulaire.case) mais pas les correspondances en php.
 
Dans tous les cas, avec un peu de recherches et de l'acharnement ça passe, il suffit juste de se faire aiguiller correctement (genre comme toi ou yertle avaient fait "t'as essayé ça ?".
 
En tout cas merci , je pense que j'aurais d'autres questions, notemment au niveau de la gestion des erreurs; mais si ça vous interesse je vous donnerais des nouvelles, et les sources du produit fini.
 

n°1331872
mechkurt
Posté le 24-03-2006 à 16:58:22  profilanswer
 

HTTP_POST_VAR[] s'écrit maintenant $_POST[]


---------------
D3
n°1331875
MrNatas
Parle klingon couremment
Posté le 24-03-2006 à 17:08:03  profilanswer
 

Merci l'info, c'est à partir de quelle version de php ?

n°1331904
mechkurt
Posté le 24-03-2006 à 17:59:21  profilanswer
 

apparament depuis 4.1:
http://fr3.php.net/manual/fr/langu [...] efined.php


---------------
D3
n°1333033
MrNatas
Parle klingon couremment
Posté le 27-03-2006 à 18:02:09  profilanswer
 

Bon, bah voilà, je continue avec mes questions agacantes...
 

Code :
  1. <?
  2. //connection à la base de donnée
  3. $host = "localhost";
  4. $user = "root";
  5. $pass = "";
  6. $bdd = "css";
  7. mysql_connect($host, $user, $pass);
  8. mysql_select_db($bdd);
  9. //Crée le champ de la classe ou id voulus dans la table 'ids', Ca passe nickel
  10. $update_ids = "ALTER TABLE ids ADD $_POST[title] TEXT"; 
  11. //Insère le nom de la classe dans le champ, Ca passe pas du tout :(
  12. $insert_ids = "INSERT INTO ids($_POST) VALUES($_POST)";
  13. //Crée la table contenant les propriétés
  14. $query = "CREATE TABLE $_POST[title] ( 
  15.    id INT(11),
  16.    PRIMARY KEY (id)
  17. )";
  18. //Connection bdd
  19. mysql_query($update_ids);
  20. mysql_query($insert_ids);
  21. mysql_query($query);
  22. //Pour chaque checkbox cochée, insère un champ dans la table nouvellement créée.
  23. if ($HTTP_POST_VARS['check']) {
  24. $box=$HTTP_POST_VARS['box1'];
  25. $box_count=count($box);
  26. foreach ($box as $valeur) {
  27.  mysql_query("ALTER TABLE $_POST[title] ADD $valeur TEXT" );
  28. }
  29. }
  30. ?>
  31. <form name="formulaire" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  32. <input type="textbox" name="title">
  33. <input type="checkbox" name="box1[]" value="un"> 1
  34. <input type="checkbox" name="box1[]" value="deux"> 2
  35. <input type="checkbox" name="box1[]" value="trois"> 3
  36. <input type="submit" name="check" value="SEND">
  37. </form>


 
Donc voilà, je n'arrive pas à inserer la valeur du champ...
 
Merci d'avance. :jap:
 
edit : le forum remplace les ouvertures de guillemets par les ouvertures de guillemets par "&#034;" :(


Message édité par MrNatas le 27-03-2006 à 18:05:06
n°1333035
mechkurt
Posté le 27-03-2006 à 18:04:17  profilanswer
 

essaye print_r($_POST); en haut de ta page pour voir quel donnée tu recoit...


---------------
D3
n°1333039
MrNatas
Parle klingon couremment
Posté le 27-03-2006 à 18:14:15  profilanswer
 

Donc, ça m'a déjà éclairé sur un oubli, j'avais mis $_POST au lieu de $_post[title].
 
J'ai donc réparé mon erreur, et fait le print_r sur $_POST[title], ça récupère bien la valeur, mais toujours pas d'insert...

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/MySQL] Ajout de champ dynamique et checkbox

 

Sujets relatifs
[INFO/PHP] créer sa boutique e- avec un livre[PHP] récupération d'url
[xslt][PHP][xsltproc]utiliser plusieur feuille de style XSL[PHP-MYSQL] Accès au bon champ d'une table
Ajout bizarre d'un nombre de caractères !classe de connexion SGBD mysql en dll (.so) sous linux
Ouvrir un fichier Word dans PHPsupprimer selection checkbox
[PHP] transformer un fichier PDF en TXT ou HTML(idéalement)Remplir un fichier Word type avec des valeurs PHP
Plus de sujets relatifs à : [PHP/MySQL] Ajout de champ dynamique et checkbox


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR