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 :

[SQL] Réaliser un affichage de données avec possibilité de modification


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 13
    Points
    13
    Par défaut [SQL] Réaliser un affichage de données avec possibilité de modification
    Bonjour,

    Je vais être amené à faire quelque chose d'assez simple finalement, mais je ne vois pas trop comment m'y prendre.

    Il s'agit en fait de présenter des données extraits d'une table. Ca c'est OK, sous la forme d'un tableau.

    Cependant, j'aimerais mettre en face de chaque ligne une case à cocher de sorte de pouvoir ensuite éditer quelques champs de la ligne. Un peu à la manière de PhpMyAdmin. Là je ne voie pas comment procéder je ne suis pas très à l'aise avec les checkbox. Une fois les modifications faites, l'idéal étant de confirmer avec un résumé.

    Tout ceci doit utiliser le système de template smarty puisque j'insère ça dans une application existante qui l'utilise.

    Si vous pouviez me guider, et puis savoir si c'est faisable surtout.

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 136
    Points : 576
    Points
    576
    Par défaut
    Et bien tu rajoutes une colone à ton tableau.
    Dans cette colone tu ajoutes une checkbox qui s'appele modifier_iddelentree.
    Ensuite pour la vérification et bien tu regardes à chaque fois si le modifier_iddelentree est coché. Si c'est le cas tu l'affiche. Sinon tu ne l'affiches pas.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Oui. Mais il faut que les autres éléments de la ligne soient des objets de formulaire ou pas ?

    Sinon dans le POST il n'y aura rien, en dehors des données du checkbox. Auquel cas, quel type d'objet de formulaire correspondrait à une sorte de label comme on en trouve en VB par exemple.

    Par ailleurs, existe-t-il un moyen optimisé de gérer les checkbox avec du PHP ?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 364
    Points : 253
    Points
    253
    Par défaut
    Dans quel langage, tu es en train de réaliser ces actions ???

    Les checkbox se font en HTML

  5. #5
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    tu pourrais tester comme ça :

    ta dernière colonne contient un formulaire réparti sur plusieurs lignes
    dans case de cette colonne, une checkbox et un champ hidden

    quand tu crées ton formulaire à partir de la lacture de ta base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $req = ...
    $res = mysql_query(...
    $i = 0;
     
    while ($enreg = mysql_fetch_array($res)) {
     
      echo élément checkbox, name="partieStatiqueCB" . $i
      echo élément hidden, name="partieStatiqueH" . $i, value=clé primaire de $enreg (ou concaténation de plusieurs champs format la clé primaire)
      $i++;
     
    }
     
    echo bouton submit


    dans ta page de traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $i = 0;
    while (isset($_POST['partieStatiqueH'.$i])) {
      // on teste le hidden et pas le checkbox sinon on arrête la boucle à la 1ère checkbox non cochée
     
      if (isset($_POST['partieStatiqueCB'.$i])) {
        récupération de la clé primaire (explode si valeur = clés concaténées)
        recherche de l'enregistrement dans la BD
        affichage des données de l'enregistrement
      }
     
      $i++;
     
    }



    j'l'ai fait vite fait, j'garantis rien
    Dia [ Page DVP ] [ Site pro ]

  6. #6
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut,
    le plus simple c'est de donner directement les valeurs de clés primaires aux checkbox, et de les passer dans un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="ids[]" value="<?php echo $enreg['id']; ?>">
    Ensuite pour récupérer les élements à modifier sur ta page de traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(isset($_POST['ids'])) [
    $sql = "SELECT * FROM ta_table WHERE id IN(".implode(", ", $_POST['ids']).")";
    }
    Bye
    Vive les roues en pierre

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Oui je crois que je vais procéder comme ça, quitte à refaire une requête SQL.

    Ce n'est pas simple puisqu'il y a tout le HTML qui est déporté à Smarty. Mais ça me semble jouable comme ça.

    Merci beaucoup.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Cela étant, du coups j'ai une autre problématique qui apparaît.

    Comment récupérer les valeurs de l'ensemble de mes champs modifiés ? Est-ce qu'il est possible de nommer une textbox valeur[] et du coups d'avoir le même principe que la checkbox ?

  9. #9
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Oui tu peux faire pareil, ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <input type"text" name="enregs[<?php echo $enreg['id']]; ?>[name]">
    <input type"text" name="enregs[<?php echo $enreg['id']]; ?>[firstname]">
     
    foreach($_POST['enregs'] as $id => $fields) {
    echo $fields['name'];
    echo $fields['firstname'];
    }
    Vive les roues en pierre

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup. Je vais tester ça.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Ca fonctionne Merci.

    Bon encore un ptit soucis, mais là ça devient plus fin lol.

    Une fois que j'ai validé les lignes que je veux modifier en cochant les cases. Je valide. L'action porte sur la même page, sauf que cette fois j'affiche bien les seuls éléments à modifier et j'utilise des textbox forcément.

    Supposons qu'il y ait 10 lignes à modifier. Par mégarde, la personne ne répond pas à une des conditions que j'ai fixé (chiffre inférieur à 0, caractère alphabétique...) pour une saisie (par faute de frappe par exemple), lorsque qu'elle va valider le formulaire là encore je fais appel à la même page, j'affiche l'erreur et je recharge les lignes à modifier.

    Le hic, c'est que je refait la requête, du coups on ne retrouve pas du tout les modifications effectuées par l'utilisateur auparavant. Autant pour une ligne ce n'est pas gênant, autant devoir rettaper tout sur 10 lignes pour un champs erroné ça devient embettant. Ma question est donc, comment puis-je procéder pour mettre dans ce cas les valeurs déja saisie dans les textbox au lieu de la requête. Sachant que j'utilise toujours la même page PHP pour les actions des formulaires.

  12. #12
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    Tu stockes tout en session :
    A la validation du formulaire, avant de tester les erreurs du dois faire un truc du genre $var=$_POST['un_textearea']

    Tu le stockes en session :
    $_session['textarea']=$var;

    et au moment du reaffichage
    echo '<textarea name="un_textarea">'.$_SESSION['textarea'].'</textarea>';

    Ca marche aussi avec les tableaux...

    Bon courage,

    Sohnic
    http://www.noctinfo.fr/

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
    (")-(")

  13. #13
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Sinon il ne faut faire la requête que si le formulaire n'a pas été validé où "confirmUpdate" est le nom du submit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(isset($_POST['confirmUpdate']))	{
    //valeurs post
    }
    else	{
    //sql
    }
    Vive les roues en pierre

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    J'avais bien pensé aux sessions, sauf qu'avec Smarty et globalement toute l'application dans laquelle je m'incruste il y a déja des sessions et quand j'avais créé un jour une variable de session il m'a crié dessus en me disant qu'il y en avait déja... j'me suis pas attardé j'ai trouvé un autre moyen.

    Du coups j'ai opté pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(isset($_POST['confirmUpdate']))	{
    //valeurs post
    }
    else	{
    //sql
    }
    Parcontre je ne connaissais pas cet état. Je l'ai testé, ça n'a pas l'air de fonctionner. J'ai feinté avec un élément hidden en fonctionnant sur le même principe après.

  15. #15
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    En fait c'est pas un état c'est le nom du submit :

    <input type="submit" name="confirmUpdate" value="Sauvegarder">
    Vive les roues en pierre

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Ah oui pardon lol. J'avais mal compris. Je testerais ça pourrait alléger un peu.

    Euh sinon question plus bête, j'ai imbriqué des if. Or, quand un est faux, il test celui d'après quand même et du coups si celui-ci est bon ça effectue l'instruction. Du coups c'est très très embettant dans le cadre d'un contrôle de saisie.

    J'me suis pas mal pris la tête, m'enfin c'était le soir, ça ira peut-être mieux demain. Mais si vous avez une idée, je suis preneur.

    Je dévis un peu du sujet, désolé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/07/2011, 14h56
  2. SQL Server 2005 - ETL - Insertion données avec vérification.
    Par Mailgifson dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/12/2007, 12h22
  3. [SQL] Importer un fichier .sql dans une base de données avec PHP
    Par budiste dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2006, 14h15
  4. Problème d'affichage de données avec crystal report
    Par napegadie dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 07/12/2005, 15h45
  5. PB : affichage de données avec accent sous delphi 6
    Par kinda dans le forum Débuter
    Réponses: 3
    Dernier message: 03/07/2003, 13h19

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