IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Création dynamique de formulaires


Sujet :

PHP & Base de données

  1. #21
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Par défaut
    J'ai déplacé la requête après la boucle. J'ai aussi changé la syntaxe du Join, mais rien à faire, même en tentant un echo $chaine_in, rien ne s'affiche. Mais en fait c'est la déclaration du tableau qui déconne. Genre avec :

    $antecedent = array();

    J'ai beau faire un echo $chaine_in, rien du tout.

    Si je fais un :

    $antecedent = array(2);

    L'écran affiche : 222 ;

    Donc le tableau ne reçoit pas les valeurs des checkbox apparemment.

  2. #22
    Invité
    Invité(e)
    Par défaut
    ou est ce que tu rempli ton tableau $antecedent ?

  3. #23
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Par défaut
    Euh en fait c'est bon je viens de régler le problème. Maintenant les valeurs des checkbox cochées sont bien dans le tableau caractérisé par la variable $antecedent, et aussi elles sont bien séparées par une virgule grâce à la fonction join. J'ai même viré la boucle parce qu'apparemment j'en ai même pas besoin. ^^

    Le seul problème qui me reste à gérer c'est l'insertion des données dans ma base. J'ai rajouté un "or die('Erreur')" au mysql_query et le serveur me renvoie ce message d'erreur. Je pense que c'est à cause du join tout de même, car la seule séparation est la virgule, donc plus concrètement ça ferait :

    select id_antecedent from antecedent where libelle_antecedent IN (antecedent1,antecedent2);

    En gros, il manque les quotes. En passant la séparation ("','",$antecedent) au join, les valeurs sont affichées comme Antecedent1','Antecedent2, et non comme je voudrais 'Antecedent','Antecedent2'. C'est possible de gérer ce problème seulement avec la fonction join ?

    EDIT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "'".join(("','",$antecedent)."'";
    J'obtiens bien : 'Antecedent','Antecedent2'.

    Mais toujours mon problème de requête, je la poste au cas où si quelqu'un voit une erreur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql_insertion = ("insert into details_patient (Patient, antecedent) Values( 
    (select id_patient from patient where patient.nom like '".$nom."' and patient.prenom like '".$prenom."')
    (select id_antecedent from antecedent where libelle_antecedent IN ('".$chaine_in."'))
    );

  4. #24
    Invité
    Invité(e)
    Par défaut
    c'est tout a fait normal, ta requète n'est pas correcte, il te faut faire une boucle et inserer les enegistrement 'id_patient','id_antecedent' 1 a 1 .

    Par contre je te conseille de pas utiliser les noms et prenoms pour selectionner le patient, c'est pas fiable (a moin que ce soit uniquement pr toi), le mettre en session peut etre une bonne idée.

  5. #25
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Par défaut
    Ah ok, je vais voir comment je peux faire alors. Par contre, je n'ai parlé que des antécédents, alors qu'il y a les complications aussi. Si je fais exactement la même chose pour les complications (dans la table details_patient, il y a le champ patient qui est lié à l'id_patient de la table patient, puis complication et antécédent qui sont liés eux aussi aux tables du même du nom), donc si à la fin je fais mes requêtes qui ajoutent 1 à 1 tout ira bien alors.

    Et les sessions toute manière, j'allais m'y mettre vu qu'à la base il y a un système d'authentification. Juste qu'en théorie, vu que j'utilise un système de template, je dois éviter de mettre du code php dans mon fichier .tpl, mais apparemment pour les sessions je n'ai pas le choix.

  6. #26
    Invité
    Invité(e)
    Par défaut
    on a toujours le choix ! surtout en dev web

    Pourkoi tu n'a aps le choix, tu peut toujour verifier la session tout en haut de ta page, et si y'a pas de session, tu redirige, et exit(); non ?

  7. #27
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Par défaut
    Ouep en fait, j'ai le choix. ^^

    Pour l'instant j'ai juste vérifié si l'utilisateur est bien connecté sinon je le renvoie sur la page de login (avec les sessions). Mais quand tu me dis de passer pour une session pour identifier le patient, tu vois ça comment ? Dans ma base, le patient est identifié par un Id_Patient donc je devrais utiliser une session pour garder l'ID au fil des pages ?

  8. #28
    Invité
    Invité(e)
    Par défaut
    Exactement, tu peut aussi stocker en session des infos statique du patient , pour ne pas avoir a les charger à chaque fois que tu veut les afficher (genre si tu veux laisser le nom - prénom sur chaque page, vaut mieux aller les chercher une seule fois que à chaque pages.

  9. #29
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Par défaut
    Pas con ouai, je vais sérieusement me pencher du côté des sessions parce que bon...par contre l'ID, vu qu'il est crée automatiquement (en auto increment), je fais comment pour le récupérer et le foutre dans un $_SESSION['id'] ?

    Ah oui et j'en profite parce que tu es toujours là...

    Je galère toujours pour ma requête d'insertion dans la base. Les sous-requêtes apparement, c'est pas la tasse de thé de MySQL. Je me trompe ou y'a un moyen de contourner ?

  10. #30
    Invité
    Invité(e)
    Par défaut
    je te conseille de faire requète par requète si tu peut, sinon fait voir ta requète.

    Pour récupérer l'id , utilise la fonction mysql_insert_id() qui te retourne l'au increment du dernier élément inséré.

  11. #31
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Par défaut
    Yeah la fonction MySQL marche nikel, c'est super pratique ce truc. Par contre, une fois qu'un patient est ajouté faut la réinitialiser, tout comme pour le nom et le prénom par exemple, mais sans non plus supprimer la session puisque l'utilisateur sera déconnecté, donc on peut gérer chaque truc séparement ?

    Sinon pour ma requête...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("INSERT INTO details_patient (Patient, Antecedent) VALUES ('".$_SESSION['id']."',(select ID_Antecedent from antecedent where libelle_antecedent IN ('".$chaine_in_antecedent."'))");

  12. #32
    Invité
    Invité(e)
    Par défaut
    Qu'est ce que tu veut dire par "faut la reinitialiser"... ?

    Pour ta requète a tu essayé

    "INSERT INTO details_patient (Patient, Antecedent) (select '".$_SESSION['id']."', ID_Antecedent from antecedent where libelle_antecedent IN ('".$chaine_in_antecedent."'))";

    En fait tu selectionne "en dur" l'id de session dans ta sous requète, nromalement ça devrait marcher

    http://dev.mysql.com/doc/refman/5.0/...rt-select.html

  13. #33
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 30
    Par défaut
    Bah genre une fois qu'un patient est finalement ajouté, l'ID doit être "supprimer" ? En fait ça s'applique plus au nom et au prénom, genre une fois qu'on a ajouté un patient, si après on veut faire une recherche, les variables changeront vu que les variables prendront les valeurs du patient recherché et non plus celui qui a été ajouté précédemment dans la base.

    Pour la requête j'ai essayé et ça ne fonctionne pas. Pour SESSION_ID j'avais déjà foutu ça dans la requête, j'étais au courant qu'on pouvait l'utiliser en naviguant sur le forum...par contre j'ai tenté ça ce matin...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $valeur = explode(",",$chaine_in_antecedent);
    $id_antecedent = array();
     
    for($i=0;$i<sizeof($valeur);$i++)
    {
    $sql_choix_ant=("select ID_ANTECEDENT from antecedent where libelle_antecedent IN('".$valeur[$i]."')");
    $result = mysql_query($sql_choix_ant) or die ('Erreur SQL');
    $id_antecedent = mysql_fetch_array($result);
    }
     
    $sql_insert = ("INSERT INTO details_patient (Patient, Antecedent) VALUES ('".$_SESSION['id']."','".$id_antecedent[0]."')");
    (antecedent [0] c'est pour tester)

    Alors j'explique...l'insertion se fait dans la base, avec le bon ID_patient et le bon id_antecedent, seulement j'arrive à en sauvegarder qu'un seul, logique puisque mon result SQL prend à chaque tournure de boucle l'enregistrement change...j'ai tenté de faire avec mon tableau id_antecedent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id_antecedent[$i]= mysql_fetch_array($result);
    Sauf que, bien que le nombre de valeurs dans le tableau correspond bien au nombre de checkbox cochées, j'obtiens des Array à l'écran, donc ça ne prend pas les valeurs. Je me suis tracassé la tête ce matin mais bon pas moyen de trouver la solution...

Discussions similaires

  1. [JSP] Création dynamique de n lignes de formulaire
    Par edralzar dans le forum Struts 1
    Réponses: 6
    Dernier message: 25/09/2014, 15h52
  2. [JavaScript] Création dynamique de formulaires avec jQuery
    Par rberthou dans le forum Contribuez
    Réponses: 2
    Dernier message: 21/09/2009, 10h40
  3. Création dynamique de formulaire
    Par rberthou dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/09/2009, 18h19
  4. Création dynamique de formulaires
    Par del-dongo dans le forum ASP.NET
    Réponses: 3
    Dernier message: 24/04/2008, 14h24
  5. Réponses: 8
    Dernier message: 06/07/2006, 08h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo