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

AJAX Discussion :

Click sur tableau avec sql


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien auto
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien auto

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Par défaut Click sur tableau avec sql
    Bonjour à tous,

    Alors j'ai plusieurs petit soucis dont en voici un.

    Actuellement, j'ai une page html qui affiche un tableau rempli de lignes provenant d'une table sql via php.

    Dans cette table, j'ai une colonne "d'etat" qui pour la valeur "oui" se colore en vert et en rouge pour la valeur"non".
    tout fonctionne nickel selon l'entrée dans la table SQL.

    J'aimerais, sur ma page html que lorsque je clique dans cette cellule, celle-ci change d'état. Si elle est verte, 1 clic et elle deviens rouge et inversement.

    Avez vous une idée de la manip ?

    voici quelques code que j'ai.

    recuperation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    // --------------------------------
    // La requete (exemple) : tous les "objet", classés par "id".
    $query = "SELECT * FROM cacahuete ORDER BY pistache ASC;";
      try {
        $pdo_select = $pdo->prepare($query);
        $pdo_select->execute();
        $NbreData = $pdo_select->rowCount();   
        $rowAll = $pdo_select->fetchAll();
      } catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
    // --------------------------------
    // affichage
    if ($NbreData != 0) 
    {
    ?>
    <!-
    fond selon etat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <td class="th">
                <?php if ( $row['banane'] == 'oui' ) 
                    {
                        echo '<div class="oui">'.$row['banane'].'</div>';
                    } 
                    elseif ( $row['banane'] == 'non' )
                    {
                        echo '<div class="non">'.$row['banane'].'</div>';
                    } ?></td>
    le css :

    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    .oui {
    background: green;
    border-radius: 250px;
    color: green;
    width: 30px;
    margin-left: 20%;
    }
     
    .non {
    background: red;
    border-radius: 250px;
    color: red;
    width: 30px;
    margin-left: 20%;
    }

    le rendu :

    Nom : Capture1.PNG
Affichages : 154
Taille : 1,9 Ko


    Merci beaucoup.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 170
    Par défaut
    Bonjour,

    J'aimerais, sur ma page html que lorsque je clique dans cette cellule, celle-ci change d'état. Si elle est verte, 1 clic et elle deviens rouge et inversement.
    Comme t'as dit psychadelic, tu dois changer la valeur en bd,ce qui est delicat si tu ne change pas certaines choses.
    En effet , tu peux changer la couleur en utilisant du jquery ou javascript mais cette valeur devra etre persistée en BD.
    Pour cela , il va falloir :
    -Soit integrer dans la colonne concernée une liste deroulante avec l'etat en BD affiché mais avec un changement des etats existants dans ta table etat si elle existe et ainsi executer une methode du controlleur en cas de selection(grace a un listener ajax).

    -Soit integrer une petite icone dans chaque cellule etat qui sera un bouton et lancera la methode de persistance de ton controlleur.

    Tu n'a pas mis le code de ton tableau...
    Ne pas oublier les updates en cas de non rechargement automatique de ton tableau.

    Bon courage.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je ne suis pas d'accord avec psychadelic.

    On peut très bien modifier les valeurs en base de données à partir d'un click dans une cases.

    Pour cela, il faut utiliser un script JavaScript/jQuery qui :
    1. modifiera l'aspect du bouton dans la table (oui<-->non)
    2. via Ajax, appellera un fichier PHP externe qui se chargera de modifier la valeur en bdd.

    Par contre, il faut pouvoir identifier quelle ligne et quelle valeur il faut modifier !
    Pour ça, il faut un "identifiant" au niveau de la case du tableau

    Au fait :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
               <td> <?php if ( $row['banane'] == 'oui' ) 
                    {
                        echo '<div class="oui">'.$row['banane'].'</div>';
                    } 
                    elseif ( $row['banane'] == 'non' )
                    {
                        echo '<div class="non">'.$row['banane'].'</div>';
                    } ?></td>
    Puisque $row['banane'] prend les valeurs 'oui' et 'non', ça s'écrit tout simplement :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
               <td><div class="<?php  echo $row['banane']; ?>"><?php  echo $row['banane']; ?></div></td>


    On peut alors écrire (par exemple) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><div class="<?php  echo $row['banane']; ?>" data-id="<?php  echo $row['id']; ?>" data-col="banane" data-val="<?php  echo $row['banane']; ?>" onclick="changeValueBdd(this);"><?php  echo $row['banane']; ?></div></td>

    Et la fonction JavaScript :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    function changeValueBdd( div )
    {
      // div : ce div (qui a été clické)
      // --------------------
      // id : index auto-incrémenté de la ligne à modifier
      var id = div.dataset.id;
      // col : nom de la colonne à modifier
      var col = div.dataset.col;
      // oldval : ancienne valeur
      var oldval = div.dataset.val;
      // newval : nouvelle valeur
      var newval = (oldval == 'oui')? 'non' : 'oui';
      // --------------------
      // 1- on fait appel à Ajax : on transmet id, col et newval au fichier PHP qui effectuera l UPDATE en Bdd
      // ...
      // --------------------
      // 2- on modifie le bouton
      div.textContent = newval;
      div.classList.toggle('non');
      div.classList.toggle('oui');
      div.setAttribute('data-val',newval);
      // --------------------
    }
    Pour l'appel Ajax, je te renvoie aux cours : cours et tutoriels pour apprendre l'AJAX
    Dernière modification par Invité ; 06/09/2018 à 14h13.

  4. #4
    Membre averti
    Homme Profil pro
    Technicien auto
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien auto

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Par défaut
    Merci à tous de vos réponses.

    @psychadelic : ta réponse me parais bizarre.. Mais pourquoi pas.

    @johnlobs : ok. Pour les couleurs, on s'en fous. C'est juste de l'affichage. Un bouton, oui j'y ai pensé. Il faudrait a la limite faire un bouton transparent de la taille de la cellule. tu veux plus de code pour le tableau ?

    @jreaux62 : Super ! je ne connais pas du tout l'Ajax. Je vais me penché dessus.
    PS, je viens de m'apercevoir dans ta signature que c'est ton tuto que j'ai suivi pour la connexion et le tableau Coool

    En tout cas j'ai des éléments. Merci beaucoup. C'est toujours un plaisir de poster sur ce forum.

  5. #5
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    Citation Envoyé par sebastien85000 Voir le message
    @psychadelic : ta réponse me parais bizarre.. Mais pourquoi pas.
    n'en déplaise à jreaux62, je n'ai fait que répondre à ta question dans le titre
    click sur tableau avec sql
    :

    Citation Envoyé par psychadelic Voir le message
    changer les valeurs dans l'affichage ne pourra jamais les changer dans ta table SQL...
    les commandes SQL agissent du coté serveur, pas du coté client
    et de toutes façon, cette histoire est absurde de A à Z.
    un premier poste internet peu cocher une case tandis qu'un second la décochera, qui à raison ?.
    Alors utilisation d'Ajax ou non, il y a d'abord à régler ce problème de multi-utilisateurs.

  6. #6
    Membre averti
    Homme Profil pro
    Technicien auto
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien auto

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Par défaut
    Bonjour,

    Merci pour ta réponse qui n'apporte aucune aide au sujet. Le site que je suis en train de mettre en place, n'aura aucunement ce problème là dans le cadre où il sera utilisé. C'est un site privé interne.

    Cdlmnt

Discussions similaires

  1. redim sur tableau avec la lecture du contenu curieuse!
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/09/2009, 00h04
  2. Triggers sur insertion avec SQL Server 2005
    Par Naail dans le forum Développement
    Réponses: 14
    Dernier message: 01/07/2009, 15h23
  3. Réponses: 8
    Dernier message: 09/02/2007, 12h58
  4. Lire du Data sur Access avec Sql Server
    Par Poussy-Puce dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/08/2006, 11h32
  5. tableau avec 1 colonne sur 3 sans cadre
    Par brasco06 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 21/04/2005, 17h44

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