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 :

Modification dans une bdd via une liste choisie via une checkbox


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet en informatique
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Modification dans une bdd via une liste choisie via une checkbox
    Bonjour,

    Pour info, c'est mon premier site que je fais de A à Z, soyez indulgent si je pose des questions bêtes

    Voilà, je vous soumets ma problèmatique.
    Au boulot, je souhaite faire un petit portail en interne qui liste les documents dont nous avons besoin au quotidien dans notre service. Principalement de la documentation et des outils développés via macro sous VB.

    J'ai bien avancé, et même si je ne sais pas encore comment je vais finir de trier et référencer la documentation (il y en a pour tous les gouts), j'ai déjà un peu avancé.
    J'ai créé une bdd tout bête pour l'instant pour stocker les infos sur les documents
    id : int(11) en auto increment
    categorie :varchar(10)
    application : varchar(15)
    repertoire : varchar(255)
    nom : varchar(100)

    J'ai créé des pages en php pour lister facilement les documents par catégorie, ajouter un document dans la base ainsi que faire une recherche d'un document à partir d'un nom.

    Maintenant je souhaite permettre à tout le monde de modifier les données sur un enregistrement (si le chemin change, ou bien le nom).
    Je voulais partir de ce que j'avais déjà codé en recherche en rajoutant des checkbox dans la liste pour choisir le(s) enregistrements à modifier.

    Je stocke ma fonction de recherche dans fonctions.php :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    function connexion(){
     $db = mysql_connect('localhost', 'root', '');
     mysql_select_db('ina',$db);
    }
    function recherche_modification_doc($nom_doc){
     $nom_doc_rec = '%' .$nom_doc. '%' ;
     
     connexion();
     $sql = 'SELECT  *
     
       FROM   documentation
     
       WHERE  nom like "'.$nom_doc_rec.'"';
     
     $resultat = mysql_query($sql) or die(mysql_error());
     
     // $nb est le nombre d'enregistrement trouvé
     $nb = mysql_num_rows($resultat);
     
     if ($nb<1) {
      echo ('<br>');
      echo ('<br>');
      echo ('Pas de document trouv&eacute; !');
      }
     
     
     echo "<ul>";
     
     while($data = mysql_fetch_assoc($resultat)){
     
      //ajout de \ en fin du chemin si oubli
      $last_char = "\\";
      if($data['repertoire'][strlen($data['repertoire'])-1]!= $last_char)
       {
       $data['repertoire'] .=  $last_char;
       }
     
      echo ('<li><a target="_blank" href="file:///');
      echo ($data['repertoire'].$data['nom'].'" title="'.$data['repertoire'].'">'.$data['nom']."</li>");
      echo ('</a>'); 
     }
     echo "</ul>";
    }
    Dans recherche_doc.php, j'ai :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <?php 
    session_start();
    include "sections/header.php"; 
    ?>
    <script type="text/javascript"><!--
     function verifier(formulaire){
     
      //on s'assure que le boite d'erreurs est invisible
      var affichage_erreurs = document.getElementById("affichage_erreurs");
      affichage_erreurs.className="invisible";
      affichage_erreurs.innerHTML="";
     
      //on déclare un tableau d'erreurs vide par défaut
      var erreurs=[];
     
      //le champ nom doit être remplit
      if ((formulaire.nom_document.value==null) || (formulaire.nom_document.value=="")){ 
       erreurs.push("Le champ nom du document est requis");
      }
     
      //affichage des erreurs si il y en a, et blocage de l'envoi de données
      if(erreurs.length>0){
     
       for (x in erreurs){
        affichage_erreurs.innerHTML+=erreurs[x]+"<BR>";
       }
       affichage_erreurs.className="visible";
       return false;
     
      }
     
     
      //else{
      // $nom_doc = formulaire.nom_document.value;
      // echo ($nom_doc);
      //}
     
     }
     
    // --></script>
     
    <?php
     if(isset($_GET["recherche"])){
      switch($_GET["recherche"]){
       case "erreur_requis":
        $message="Erreur : un champ est requis";
        break;
        default:
        $message="R&eacute;sultat de la recherche de document contenant le nom : ";
      }
     }
    ?>
     
    <h1>Recherche d'un document</h1>
     <div id="affichage_erreurs" class="invisible"></div>
     <form method="POST" action="action_recherche.php" onsubmit="return verifier(this)">
      <label for="nom">Nom du document</label><input name="nom_document" id="nom_document" type="text" maxlength="100"><BR>
      <input type="submit" value="Rechercher" name"Rechercher">
     </form>
     
    <?php
     if(isset($_GET["recherche"])){
      echo ('<br>');
      echo $message;
      echo ($_SESSION['recherche']);
      recherche_doc($_SESSION['recherche']);
     }
    ?>
    <?php 
    include "sections/footer.php"; 
    session_destroy();
    ?>
    et dans action_recherche.php (au cas où)
    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
    17
    <?php
     session_start();
     if(!empty($_POST)){
     
      if( (strlen($_POST["nom_document"])==0)){
       $recherche="erreur_requis";
      }
     
      $recherche= $_POST["nom_document"];
      $_SESSION['recherche'] = $recherche;
     
      header("Location:recherche_doc.php?recherche=".$recherche);
     
     }
     
     
    ?>
    Je me suis renseigné sur comment ajouter des checkbox (pas encore pour les traiter, c'est ma prochaine étape une fois que je saurais les mettre en place), mais je ne vois pas trop comment l'implémenter.

    Pourriez vous m'aider ?

    Merci en tout cas d'avoir pris le temps de me lire.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Une checkbox est un input HTML tout ce qu'il y a de plus normal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="modif_categorie" />
    Mais bon vu le petit nombre de champs, je ne vois pas l’intérêt de ces checkbox.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Chef de projet en informatique
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Une checkbox est un input HTML tout ce qu'il y a de plus normal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="modif_categorie" />
    Mais bon vu le petit nombre de champs, je ne vois pas l’intérêt de ces checkbox.
    Merci pour ta réponse rapide.
    Je me suis mal exprimé alors :
    je veux une fois la recherche faite dans ma base, retourner tous les occurences qui répondent au critère de recherche en rajoutant une chekbox pour demander quel enregistrement toucher.*

    Par exemple, je recherche tous les documents qui contiennent le mot "outil" dans leur nom.
    j'en ai troiss qui répondent à ce nom : par exemple "outil de toto.doc", "outil de titi.doc" et "domument outil.xls"
    je liste ces trois doc, et en fasse de chaque ligne je veux ajouter une check box (pour indiquer quels sont le(s) document(s) sont à modifier.

    je voulais rajouter cela dans ma fonction en php, mais ai-je le droit de fermer les balises php dedans pour insérer le html (dans fonction.php) : je ne le pense pas.
    Du coup je suis obligé dans ma fonction ma recherche en stockant les résultats dans un tableau et puis faire l'affichage dans recherche_doc.php ?
    Ou alors je ne fait pas de fonction pour la recherche ?

    Je ne sais pas si suis clair ?
    En fait où puis-je insérer mes checkbox...

    Merci encore

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Rester en PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    function toto() {
        echo '<input type="checkbox" name="modifier" />';
    }
    ou en sortir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    function toto() {
        ?><input type="checkbox" name="modifier" /><?php
    }
    Les deux écritures sont possibles.

    Cependant comme tu vas devoir écrire l'id de la ligne à modifier dans ta checkbox, ca sera plus simple avec un echo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    function toto() {
        echo '<input type="checkbox" name="modifier[' . $id . ']" />';
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Candidat au Club
    Homme Profil pro
    Chef de projet en informatique
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Ah super merci pour l'éclaircissement, j'avais essayé à travers la fonction et cela ne marchait pas, j'avais fait le raccourci (à tord) que l'on ne pouvait au sein d'une fonction.
    Du coup, c'est que je dois avoir une erreur de syntaxe.
    Peux tu encore m'aider stp ? (désolé, je débute )
    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
     echo "<ul>";
     
     while($data = mysql_fetch_assoc($resultat)){
     
      //ajout de \ en fin du chemin si oubli
      $last_char = "\\";
      if($data['repertoire'][strlen($data['repertoire'])-1]!= $last_char)
       {
       $data['repertoire'] .=  $last_char;
       }
     
      echo ('<li><a input type="checkbox" name="modifier" target="_blank" href="file:///');
      echo ($data['repertoire'].$data['nom'].'" title="'.$data['repertoire'].'">'.$data['nom']."</li>");
      echo ('</a>'); 
     }
     echo "</ul>";

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est quoi ce mélange entre <a href et <input ?

    Au passage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if(substr($data['repertoire'], -1) != $last_char)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Candidat au Club
    Homme Profil pro
    Chef de projet en informatique
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci pour ton code, je l'ai pris ça fonctionne bien

    Maintenant sur le mélange, effectivement po bien. J'avais laissé la confection du site de côté pendant un mois et la remise en route est difficile.

    J'ai voulu laisssé le lien vers le document, un peu bête de mélanger ça ici.


    Bon en reprenant ce que tu m'as donné, et en voulant faire à partir d'une chaine de caratères une recherche dans ma bdd et faire en retour la liste des noms avec une checkbox.
    Mon code sans encore de recherche d'affichage plus beau :
    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
    17
    18
    19
    20
    21
    function recherche_modification_doc($nom_doc){
     $nom_doc_rec = '%' .$nom_doc. '%' ;
     connexion();
     $sql = 'SELECT  *
       FROM   documentation
       WHERE  nom like "'.$nom_doc_rec.'"';
     $resultat = mysql_query($sql) or die(mysql_error());
     // $nb est le nombre d'enregistrement trouvé
     $nb = mysql_num_rows($resultat);
     if ($nb<1) {
      echo ('<br>');
      echo ('<br>');
      echo ('Pas de document trouv&eacute; !');
      }
     echo "<ul>";
     while($data = mysql_fetch_assoc($resultat)){
      echo "$data['nom']";
      echo "<input type='checkbox' name='modifier[" . $data['id'] . "]' />";
      }
     echo "</ul>";
    }
    Mais cela ne marche toujours pas.
    Je sais que c'est à ce niveau que cela bloque, pourrais tu m'aider encore une fois stp ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "$data['nom']";
      echo "<input type='checkbox' name='modifier[" . $data['id'] . "]' />";

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux être plus précis que "ne marche pas" ?

    Au passage, pas de guillemets inutiles :
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Candidat au Club
    Homme Profil pro
    Chef de projet en informatique
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci pour le conseil.
    Cela ne marche pas : ma page ne s'affiche même plus.
    Le site Web ne peut pas afficher la page
    HTTP 500
    Causes les plus probables :

    • Le site Web est en cours de maintenance.
    • Le site Web présente une erreur de programmation.


    Je mets les deux lignes en commentaires que j'ai mentionné juste dessus, et il refonctionne à nouveau (les autres fonctionnalités sont à nouveau opérationnelles)

  10. #10
    Candidat au Club
    Homme Profil pro
    Chef de projet en informatique
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci Sabotage, je devais avoir un problème autre hier, mais aujourd'hui, sans mise en page (je vais y travailler), voici la fonction épurée avec tes remarques
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    function recherche_modification_doc($nom_doc){
     $nom_doc_rec = '%' .$nom_doc. '%' ;
     
      connexion();
     $sql = 'SELECT  *
     
       FROM   documentation
     
       WHERE  nom like "'.$nom_doc_rec.'"';
     
     $resultat = mysql_query($sql) or die(mysql_error());
     
     // $nb est le nombre d'enregistrement trouvé
     $nb = mysql_num_rows($resultat);
     
     if ($nb<1) {
      echo ('<br>');
      echo ('<br>');
      echo ('Pas de document trouv&eacute; !');
      }
     
     
     echo "<ul>";
     
     while($data = mysql_fetch_assoc($resultat)){
     
      echo '<input type="checkbox" name="modifier[' . $data["id"] . ']" />';
      echo $data['nom'];
      echo ('<br>');
       }
     echo "</ul>";
    }
    Je vais continuer à travailler sur la mise en page et faire les update en base.
    Un grand merci

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

Discussions similaires

  1. [Langage/Algorithme] Modification de la position de la liste déroulante d'une Combobox
    Par Shionigami dans le forum C++Builder
    Réponses: 6
    Dernier message: 28/08/2010, 15h42
  2. Récuperer la listes des connectés à une BDD dans une requête
    Par docjo dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/09/2008, 19h23
  3. Afficher la liste des connectés à une BDD
    Par GD91 dans le forum Access
    Réponses: 4
    Dernier message: 04/10/2006, 14h55
  4. manipuler une BDD access tout en accedant via son mot de pass
    Par hto340 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 02/07/2006, 17h32

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