Reprendre les infos à modifier et pouvoir les modifier ensuite...

Le problème exposé dans ce sujet a été résolu.

Bonjour, je ne trouve pas de réponse à ma question après plusieurs recherches sur le web… Je me permet donc de revenir vers vous.

Je suis actuellement sur la construction d’un site en php, j’ai une partie ou j’ai des informations concernant des connexions (tel utilisateur qui est dans -> room1 -> connecté sur -> le switch1 -> etc…) J’ai un bouton "modifier" qui me permet de modifier toutes les informations et ça fonctionne très bien, le seul soucis, une fois avoir cliqué sur UPDATE donc redirigé vers la page Update, je n’arrive pas à reprendre les infos actuel de connexion dans les listbox pour les modifier ensuite par d’autres éléments de la box. Les infos revienne à zéro, et moi je cherche à garder l’info actuel pour la modifier ensuite.

Partie update.php, une fois avoir cliqué sur update on reviens vers ce formulaire. Ici j’ai fais des fonctions

      <input type="text" class="hidden invisible sr-only"  name="<?php echo $id ?>" value="<?php echo $value ?>" />

      <div class="form-group">
          <?php update_number("user", "name", "User name"); ?>
      </div>

      <div class="form-group">
        <?php update_number("room", "name", "Room"); ?>
      </div>

       <div class="form-group">
        <?php update_device ("net_device", "name","Bay", "p", "bay"); ?>
      </div>

       <div class="form-group">
        <?php update_device ("link_net_device","port_brassage", "Bay port", "", "bay_port"); ?>
      </div>

       <div class="form-group">
        <?php update_device ("net_device", "name", "Switch", "i", "switch"); ?>
      </div>

       <div class="form-group">
        <?php update_device ("link_net_device","port_switch", "Switch port", "","switch_port"); ?>
      </div>
     
      <div class="form-group">
       <?php update_number ("server", "name","Server"); ?>
      </div>

Partie function.php

// Function to modify the line of connections in connections_updateform.php

function update_number (type,type,champs,$label) {

    print ('<div class="form-group"><label>'.$label.'</label>');
    print ('<select class="form-control" method="post" name='.$type.'>');
          $req_port = selectport($type,$champs);
              while ($row = $req_port->fetch()){
                  if (isset($row)){  
                        echo'<option name="'.$type.'" value="'.$row["$champs"].'">'.$row["$champs"].'</option>';                     
                  } 
              }
    print('</select></div>');

}

// Function to modify the line of connections in connections_updateform.php

function update_device (type,type,champs,label,label,word,$post_name) {

    print ('<div class="form-group"><label>'.$label.'</label>');
    print ('<select class="form-control" method="post" name='.$post_name.'>');
          $req_port = selectdevice ($type,$champs,$word);
              while ($row = $req_port->fetch()){
                  if (isset($row)){ 
                        echo'<option name="'.$post_name.'">'.$row["$champs"].'</option>';
                  } 
              }
    print('</select></div>');

}

Voilà, j’espère avoir été clair et merci d’avance pour vos futurs messages !

Désolé, je vais essayé d’être le plus clair possible.

Donc j’ai une page(on va l’appeler index.php) où j’ai une liste avec plusieurs colonne, le nom des utilisateurs, la salle où ils sont, le numéro du port sur lequel ils sont connectés, et une suite d’infos comme ça et chaque utilisateur à ses propres infos… J’ai 3 boutons pour gérer ma liste, un ajouter, un supprimer, et un modifier. L’ajouter et le supprimer fonctionne à merveille. Mais quand je clique sur le bouton modifier, je me retrouve donc dans la page update.php et c’est là que je suis bloqué.

Je cherche à envoyer les infos tel quel sont dans l’index.php à l’update.php pour les modifier ensuite. J’arrive pas a récupérer les infos pour les modifier en fait, voilà mon soucis… Je suis bloqué…

Voici mon code html, j’ai repris toutes les functions.

<h1><span class="glyphicon glyphicon-edit"></span> Edit line</h1>
    <div class="col-lg-6 col-lg-offset-3 col-md-6 col-md-offset-3 col-sm-8 col-lg-offset-2 col-xs-12">
 <form class="" action="update_connections.php" method="get" />
          
          <input type="text" class="hidden invisible sr-only"  name="<?php echo $id ?>" value="<?php echo $value ?>" />

            <?php update_connection("user", "name", "User name"); 
                  update_connection("room", "name", "Room"); 
                  update_connections("net_device", "name","Bay", "p", "bay"); 
                  update_connections("link_net_device","port_brassage", "Bay port", "", "bay_port"); 
                  update_connections("net_device", "name", "Switch", "i", "switch");  
                  update_connections("link_net_device","port_switch", "Switch port", "","switch_port"); 
                  update_connection ("server", "name","Server"); 
            ?>

<form class="" action="update_connections.php" method="post" /> me semblerait plus indiqué.

je ne vois pas un get pourrais t’aider. si je comprends bien, tu as un tableau géant avec des switch et des inputs modifiable et tu veux pouvoir modifier l’ensemble de tes données pour tous les users en même temps non? et pas un bouton modifier qui t’ouvre une page par user?

C’est une page par USER, j’ai un bouton UPDATE pour chaque user. A part le GET, je peux pas autrement ? Je cherche aussi en même temps à éviter d’avoir toutes les infos dans la barre de recherche tu vois ? ?id_connections=23&user=Machin&room=A010&switch=etc… Je sais j’en demande trop… Mais simplement m’éclaircir sur le sujet me suffirait…

+0 -0

Et bien ton bouton "update" doit être un lien vers update.php avec une variable GET en plus, qui correspond a l’ID de l’utilisateur.

Par exemple :

// index.php
<a href="update.php?user_id=<?= $user['id'] ?>">Update</a>

Puis dans la page update.php, tu récupères cet ID, tu recherches l’utilisateur dans la base de données et récupères ses données, ce qui te permettra de les afficher dans ton formulaire.

Par exemple :

// update.php

// Récupération de l'ID de l'utilisateur à modifier
$userId = (isset($_GET['user_id'])) ? $_GET['user_id'] : 0;

// On regarde si l'ID à été fournis
if ($userId == 0)
    die('ID invalide');

// On récupère l'utilisateur dans la base de données
$request = $db->prepare('SELECT * FROM users WHERE id = :userId');
$request->bindParam(':userId', $userId);
$request->execute();

$currentUser = $request->fetch();

// Normalement, il faut vérifier qu'il à bien été trouvé...

// Ici, ces variables correspondent aux données de ton formulaire lorsque celui-ci à été envoyé,
// sinon aux données de l'utilisateur tel qu'elles sont dans la base de données
$postUsername = (isset($_POST['username'])) ? $_POST['username'] : $currentUser['username'];
$postEmail = (isset($_POST['email'])) ? $_POST['email'] : $currentUser['email'];
$postAge = (isset($_POST['age'])) ? $_POST['age'] : $currentUser['age'];

// Ton traitement du formulaire, affichage de la page, etc...

A moins que je n’ai pas compris ta demande… :(

PS : Pas évident d’écrire sur son smartphone. Je fait une réponse plus détaillée des que je peux

+0 -0

Avant tout, je vous remercie pour vos messages d’aides !

FougereBle C’est exactement ça et c’est parfait ce que tu m’a envoyé, y’a aucun soucis, mais maintenant je cherche à savoir, si c’est possible de le faire autrement ? Pour éviter les injections avec GET en fait, peut-être avec SESSION ? …

Avec GET il n’y à aucun problème. Tu as juste à vérifier que la valeur correspond bien à ce que tu attend (je ne l’ai pas fait plus haut).

Par exemple, tu peux vérifier que c’est bien un entier (je crois que la fonction s’appelle is_int ou is_integer, un truc comme ça).

Si ce n’est pas un entier, tu redirige l’utilisateur vers la page `index.php' ou alors tu affiche un message d’erreur.

Une fois cette vérification faite, tu recherche dans ta base de données l’utilisateur. Tu regarde bien si celui-ci existe, et si ce n’est pas le cas, idem : Redirection vers l’index ou affichage d’un message d’erreur.

// Récupération de l'ID de l'utilisateur à modifier
$userId = (isset($_GET['user_id'])) ? $_GET['user_id'] : 0;

// On regarde si l'ID à été fournis et est valide
if (!is_int($userId) || $userId <= 0)
    die('ID invalide');

// On récupère l'utilisateur dans la base de données
$request = $db->prepare('SELECT * FROM users WHERE id = :userId');
$request->bindParam(':userId', $userId);
$request->execute();

$currentUser = $request->fetch();

// On regarde si l'utilisateur existe
if (!$currentUser)
    die('Utilisateur introuvable')

// Si on arrive ici, c'est que tout est OK !

Edit : En fait, peut importe la méthode que tu utilise (même si ici GET est le meilleur choix), il faut toujours vérifier qu’une variable correspond à ce que tu attend. Donc en réalité, il n’y a (si le code est fait correctement) aucune crainte à avoir concernant les petits malins qui s’amuserais à modifier le contenu d’une variable.

+0 -0

Je vois, merci encore pour ta réponse !!

Mais en fait je dois répondre aux exigences et pour le coup, éviter le GET…

Je pense utiliser un POST , mais je vois pas comment remplir mon POST, car il est vide pour le UPDATE, je cherche toujours sur le net, je tente des trucs mais j’avance pas… Si tu as peut-être une idée ?

Merci encore pour ton aide ! ^^

Eviter GET pour ça ? Mais pourquoi ? o_O

Sinon avec POST, il faut que tu fasse un formulaire identique pour chaque utilisateurs, mais :

  • On en reviens exactement aux mêmes problèmes qu’avec GET concernant la sécurité
  • C’est moins facile à mettre en place
  • Ça n’apporte strictement rien de plus
+1 -0

dsl, j’avais compris que c’était un tableau avec tous les user et que tu modifié plusieurs user en même temps.

comme l’indique fougereble, les variables POST peuvent être modifié par un hacker, donc ce n’est pas beaucoup plus sécurisé.

dans ton cas, il n’y a strictement aucune plus value a faire un POST.

sinon il va faloir faire un formulaire pour chaque user du type

<form method="POST" action="update.php">
<input type="hidden" name="user_id" value="'.$id_smada.'">
<input type="text" name="nom" value="smada">
<input type="submit">
...</form>

<form method="POST" action="update.php">
<input type="hidden" name="user_id" value="'.$id_leeroy.'">
<input type="text" name="nom" value="leeroy">
<input type="submit">
...</form>

selon le nombre d’user, cela va être lourd et il faudra sanitizer les variables quand même.

Il existe plusieurs possibilité pour sanitizer, qwant et duckduckgo sont tes amis… ;)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte