insérer requête sql sur bouton afin de modifié la bdd

Eléphanteau du PHP | 20 Messages

07 avr. 2017, 11:43

Bonjour j'aimerai mettre une requête sql sur un bouton qui modifirais directement dans la base de donnée comment dois je mis prendre?
ps je travail sur phpmyadmin
Merci

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8755 Messages

07 avr. 2017, 15:57

salut,

phpmyadmin a un documentation assez importante (en français je crois ?). La dernière version semble proposer un système de signet de requêtes SQL et dans ce cas la ré exécuter.
Regarde ton interface lorsque tu es sur l'onglet SQL enbas il y les "requêtes SQL en signets".

si le but est d'avoir une formulaire html por ensuite faire une requête SQL en php alors la on peux t'aider.
Dans ce cas il nous faut savoir ce que tu sais ou non.
tu peux regarder du coté de mysqli pour te connecter à la base de données et faire ta requête. http://php.net/mysqli


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 20 Messages

18 avr. 2017, 19:37

en faite j'ai un tableau avec une base de donnée associé, j'aimerais que quand j’appuie sur un des 6 bouton, que sa rajoute un mot sur la ligne sélectionner avec une colonne dédié a cela ou copier/couper la ligne vers une autre base?
ps comment fait-on pour sélectionné une ligne dans un tableaux via avec un "radio"?
Merci

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8755 Messages

19 avr. 2017, 09:46

salut,

c'est pas super compréhensible ton affaire.
tu as du code html / php qui affiche ta base ?

un bouton radio en html c'est simple : <input type="radio" name="xxx" /> il peux être "checked" ou pas suivant la valeur.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 20 Messages

19 avr. 2017, 10:19

regarde sur le code la premiere colonne est des checkbox mais quand je selectionne une checkbox la ligne ce souligne pas, il faudrais que je fasse une classe ?
voici le code
<?php
    //PHP avant tout
    if (!empty($_POST)) {
        //la connexion
        $connect = mysqli_connect("localhost", "root", "Mm101010", "smartphone");
         
        //la requete de recherche
        $query = "Select * from vu_affect_empl ";
        if (!empty($_POST["query"])) {
            $search = mysqli_real_escape_string($connect, $_POST["query"]);
            $query .= "WHERE USER_ID LIKE '";
            $query .= $search;
            $query .= "%' OR  USER_ID LIKE '";
            $query .= $search;
            $query .= "%' OR  Num_SIM LIKE '";
            $query .= $search;
            $query .= "%' ORDER BY Nom asc";
        } else {
            $query .= "ORDER BY USER_ID";
        }
        //Lancement de la requete
        $result = mysqli_query($connect, $query);
    }
 
?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8"/>
</head>
<body>
<?php
  if(isset($result) && mysqli_num_rows($result) > 0) {
?>
    <div class="table-responsive">
        <table class="table table bordered">
            <tr onclick="SelectLigne(this)">
                <td>&nbsp;</td>
                <th>USER ID</th>
                <th>Nom</th>
                <th>Prenom</th>
                <th>Num SIM</th>
                <th>PIN Terminal</th>
                <th>PIN SIM</th>
                <th>Num EMEI</th>
                <th>Date Debut</th>
                <th>Date Fin</th>
                <th>Vitre</th>
                <th>Coque</th>
                <th>Support Vehicule</th>
                <th>Actif</th>
                <th>Or Affectation1</th>
                <th>Statut</th>
            </tr>
<?php 
            while($row = mysqli_fetch_array($result)) {
?>
            <tr>
                <td><input type="checkbox" name="Select[]" value="<?php echo $row['USER_ID'];?>" class="Selection"> </td>
                <td><?php echo $row["USER_ID"]; ?></td>
                <td><?php echo $row["Nom"]; ?></td>
                <td><?php echo $row["Prenom"]; ?></td>
                <td><?php echo $row["Num_SIM"]; ?></td>
                <td><?php echo $row["PIN_Terminal"]; ?></td>
                <td><?php echo $row["PIN_SIM"]; ?></td>
                <td><?php echo $row["Num_IMEI"]; ?></td>
                <td><?php echo $row["Date_Debut"]; ?></td>
                <td><?php echo $row["Date_Fin"]; ?></td>
                <td><?php echo $row["Vitre"]; ?></td>
                <td><?php echo $row["Coque"]; ?></td>
                <td><?php echo $row["Support_Vehicule"]; ?></td>
                <td><?php echo $row["Actif"]; ?></td>
                <td><?php echo $row["Or_Affectation1"]; ?></td>
                <td><?php echo $row["Statut"]; ?></td>
            </tr>
<?php
           } } else { echo 'Pas enregistrement pour le moment'; }
?>
</body>

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8755 Messages

19 avr. 2017, 12:03

a quoi sert ceci : onclick="SelectLigne(this)" ?

peux être que c'est ce dont tu as besoin pour ta checkbox ?

tu te rends compte que la c'est à des années lumières de ce que tu tentes de dire dans ton premier message ? Sans parler du titre :mrgreen:

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 20 Messages

19 avr. 2017, 13:58

oui j'ai besoin d'une checkbox pour sélectionné une ligne de mon tableau afin d'exécuté en des requête sql via 6 boutons avec des requête différente, donc mon soucis et de mettre la ligne ou j'ai coché le checkbox en surbrillance pour que quand j'appuie sur un bouton, que la ligne en surbrillance obtient des modification
Merci

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8755 Messages

19 avr. 2017, 15:57

donc la mise en "subrillance" c'est du css, il te faut jouer le fait que l'on coche / décoche la case pour ajouter / supprimer une class css pour que le fond soit d'une couleur différente
par exemple
.selected > td {
    background-color : pink;
    font-weight : bold;
}
Le plus simple se serait d'ajouter un ID au TR (utilise id de table ou alors un incrément dans le while, le principale c'est que cela soit unique
=> <tr id="42"> ....</tr>
ensuite du JS pour ajouter ou enlever la class css
par exemple
function changeValueOfCheckbox(check) {
      var tr = document.getElementById(check.value);
      var cssClass = tr.getAttribute('class');
      if (cssClass === null) {
        cssClass = '';
      }
      if (check.checked) {
        // add class selected
        cssClass += ' selected';
      } else {
        // suppression class selected
        var sel = ' selected';
        var i = cssClass.indexOf(sel);
        if (i > -1) {
          var tmp = cssClass.substring(0, i);
          tmp += cssClass.substring(i + sel.length);
          cssClass = tmp;
        }
      }
      tr.setAttribute('class', cssClass);
    }
et pour l'utiliser onchange="changeValueOfCheckbox(this)" dans la checkbox ;)

Pour le reste, ton code utilise la notation tableau pour nommer le checkbox c'est très bien tu auras donc un tableau coté serveur dans $_POST['Select']

ensuite tu l'utilises le traitement lié au bouton cliqué (donc a priori 6 submit avec des noms différents, ou même nom et valeurs différentes).

et la rien de bien compliqué, mais ne sachant pas ce que tu en fais je ne peux pas t'aider plus.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 20 Messages

19 avr. 2017, 16:21

d. Actions <Supprimer Affectation>
i. Poser la question : Est-ce que le matériel est déjà retourné (Réponse Oui ou Non)
ii. Si la Réponse est Oui :
1. Modifier le Statut de l’Equipement à <Non Affecté>
2. Modifier le Statut de l’Abonnement à <Non Affecté>
3. Transférer la ligne dans <Arch_Affectation> : Desc_Action = « Supprimer Affectation » , Date_Fin Affectation,
4. Supprimer la ligne de <Affectation>
iii. Si la Réponse est Non :
1. Modifier le Statut de l’Affectation (Statut_Affectation) à <Attente Retour>
2. Transférer la ligne dans <Arch_Affectation> : Desc_Action = « Supprimer Affectation – Attente Retour »
e. Actions <Confirmer Retour Equipement>
i. Ce Bouton n’est actif que si Statut_Affectation = Attente Retour
ii. Poser la question : Est-ce que Vous confirmez aussi le Retour de l’abonnement (Réponse Oui ou Non)
iii. Si la Réponse est Oui :
1. Modifier le Statut de l’Equipement à <Non Affecté>
2. Modifier le Statut de l’Abonnement à <Non Affecté>
3. Transférer la ligne dans <Arch_Affectation> : Desc_Action = « Confirmation_Retour » , Date_Fin Affectation,
4. Supprimer la ligne de <Affectation>
iv. Si la Réponse est Non :
1. Modifier le Statut de l’Equipement à <Non Affecté>
2. Modifier le Statut de l’Affectation (Statut_Affectation) à <Attente Retour Abo>
3. Transférer la ligne dans <Arch_Affectation> : Desc_Action = « Supprimer Affectation – Retour Equipement »
4.
f. Actions <Confirmer Retour Abonnement>
i. Ce Bouton n’est actif que si Statut_Affectation = Attente Retour Abo
ii. Actions :
1. Modifier le Statut de l’Abonnement à <Non Affecté>
2. Transférer la ligne dans <Arch_Affectation> : Desc_Action = « Supprimer Affectation – Retour Abonnement » , Date_Fin Affectation,
3. Supprimer la ligne de <Affectation>
g. Actions <Remplacement Equipement>
i. Afficher un formulaire Modal avec la liste des équipements en Statut <Non Affecté>
Le formulaire contient aussi une case à Cocher « S’agit il d’une panne ? » (Défaut Cochée)
Le formulaire contient aussi une case à Cocher « Est-ce que l’équipement est déjà retourné ? » (Défaut non cochée)

Boutons <Affecter> et <Annuler>

ii. Sur Bouton <Affecter> :
1. Si la case à cocher « S’agit il d’une panne ? » est cochée : Modifier le Statut de l’Equipement ancien à <Panne>
2. Modifier le Statut de l’Affectation Ancienne à (Statut_Affectation) à <Attente Retour>
3. Si la case à cocher « S’agit il d’une panne ? » est cochée
Transférer la ligne dans <Arch_Affectation> : Desc_Action = « Remplacement Cause Panne – Attente Retour »
Sinon
Transférer la ligne dans <Arch_Affectation> : Desc_Action = « Remplacement Equipement – Attente Retour »
Fsi
4. Création de la nouvelle Affectation en reprenant toutes les informations de la ligne Existante, sauf l’équipement
i. Mettre la date de début Affectation à la date du jour
5. Si la case à cocher « « Est-ce que l’équipement est déjà retourné ?» est cochée
Si la case à cocher « S’agit il d’une panne ? » est cochée
Modifier le Statut de l’Equipement ancien à <Panne>
Transférer la ligne dans <Arch_Affectation> : Desc_Action = « Remplacement Cause Panne»
Sinon
Modifier le Statut de l’Equipement ancien à <Non Affecté>
Transférer la ligne dans <Arch_Affectation> : Desc_Action = « Remplacement Equipement»
Supprimer l’Ancienne Affectation
Fsi
Sinon
Modifier le Statut de l’Affectation (Statut_Affectation) à <Attente Retour>
Transférer la ligne dans <Arch_Affectation> : Desc_Action = « Supprimer Affectation – Attente Retour »
Fsi
9) Gestion des Affectations – Nouvelle Affectation
a. Ajout d’une ligne « Nouvelle Affectation » Dans le formulaire Menu
b. Création d’un formulaire de Création d’une affectation en 3 parties
i. Partie 1 = Choix de l’Employé
ii. Partie 2 = Choix de l’équipement et de l’abonnement
iii. Partie 3 = Informations complémentaire + Boutons d’Actions
c. Création Affectation – Choix de l’employé
i. Case à cocher = Technicien sans Affection (Cochée par défaut)
ii. Si Case est cochée
1. Afficher dans une liste, à partir de la table Employés, tous les techniciens pour lesquels Aucune Affectation n’existe
Sinon
Afficher dans une liste, à partir de la table Employés, tous les techniciens lesquels il existe des Affectations
d. Création Affectation – Choix de l’équipement et de l’abonnement
i. Formulaire Avec 2 listes avec Cases à cocher dans la liste (Ou si possible des Boutons d’options pour ne permettre qu’un seul choix)
ii. Liste 1 = Equipements
1. Liste des équipements au Statut « Non Affecté »
iii. Liste 2 = Abonnements
1. Liste des Abonnements au Statut « Non Affecté »

e. Création Affectation – Actions
i. Bouton <Créer> et <Annuler>
ii. Bouton <Créer>
1. Création d’une nouvelle ligne dans Affectation avec les informations saisies
Voir éventuellement l’ajout des autres informations telles que Commentaires et Mots de passe
toute les requête son faite mais c'est pour les rajouté a un bouton que j'ai du mal

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8755 Messages

19 avr. 2017, 16:55

si tu ne sais pas comment fonctionne la validation d'un formulaire voici un cour http://www.lephpfacile.com/cours/8-recu ... ormulaires

tu peux donner un nom aux boutons. Ce nom est récupéré dans le tableau $_POST il te permet de gérer le traitement coté serveur.
tu auras un if / else pour chaque valeur et dedans le traitement lié.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 20 Messages

20 avr. 2017, 14:38

pour la selection sa ne fonctionne toujours pas après de nombreuse tentative, il m'affiche se mot dans firebug : TypeError: tr is null select_...leau.js (ligne 3, col. 11)
code de ma page
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8"/>
</head>
<body>
<?php
  if(isset($result) && mysqli_num_rows($result) > 0) {
?>
    <div class="table-responsive">
        <table class="table table bordered">
            <tr>
               <th>&nbsp;</th>
               <th>Operateur</th>
               <th>Num SIM</th>
               <th>PUK</th>
               <th>Num ligne</th>
               <th>Volume</th>
               <th>Statut abo</th>
            </tr>
<?php 
            while($row = mysqli_fetch_array($result)) {
?>
            <tr class="selected">
                <td><input type="checkbox" onchange="changeValueOfCheckbox(this)" name="Selected" value="<?php echo $row['Operateur'];?>" > </td>
                <td class="ui-widget-content" name="selected"><?php echo $row["Operateur"]; ?></td>
                <td class="ui-widget-content" name="selected"><?php echo $row["Num_SIM"]; ?></td>
                <td class="ui-widget-content" name="selected"><?php echo $row["PUK"]; ?></td>
                <td class="ui-widget-content" name="selected"><?php echo $row["Num_ligne"]; ?></td>
                <td class="ui-widget-content" name="selected"><?php echo $row["Volume"]; ?></td>
                <td class="ui-widget-content" name="selected"><?php echo $row["Statut_abo"]; ?></td>
            </tr>
<?php
js:
function changeValueOfCheckbox(check) {
      var tr = document.getElementById(check.value);
      var cssClass = tr.getAttribute('class');
      if (cssClass === null) {
        cssClass = '';
      }
      if (check.checked) {
        // add class selected
        cssClass += ' selected';
      } else {
        // suppression class selected
        var sel = ' selected';
        var i = cssClass.indexOf(sel);
        if (i > -1) {
          var tmp = cssClass.substring(0, i);
          tmp += cssClass.substring(i + sel.length);
          cssClass = tmp;
        }
      }
      tr.setAttribute('class', cssClass);
    }

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8755 Messages

20 avr. 2017, 14:43

as tu compris ce que fait ce code ?

quand ce sera le cas tu comprendras pourquoi tu as cette erreur.

tu peux aussi relire le message avec le code JS pour voir où t'as foiré le copier collé !

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 20 Messages

20 avr. 2017, 15:36

c'est sur cette ligne que j'ai l'erreur : var cssClass = tr.getAttribute('class');?

Eléphanteau du PHP | 20 Messages

20 avr. 2017, 17:47

j'ai tou essayé mais je n'y arrive pas a trouvé l'erreur je suis un noub

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8755 Messages

21 avr. 2017, 11:17

essai de lire mon message php-debutant/inserer-requete-sql-sur-bo ... l#2p453929 lentement et en entier pour bien voir ce qu'il te manque.
tout est dans le message, sauf le code complet c'est vrai, mais l'explication y est.

tu a aussi la ligne d'erreur donc en cherchant un peux pourquoi tu as cette erreur tu devrais aussi pouvoir avancer.

@+
Il en faut peu pour être heureux ......