Modifier les variables de plusieurs champs !
Utilisateur anonyme
-
Fallentree Messages postés 2309 Date d'inscription Statut Membre Dernière intervention -
Fallentree Messages postés 2309 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Le problème semble simple à résoudre pourtant je n'y arrive pas.
Tout d'abord, parlons du SQL :
Dans ma base de données, j'ai une table qui se nomme forum_forum.
Cette table contient 13 champs et 7 entrées.
Voici le nom des champs : forum_id forum_cat_id forum_name forum_desc forum_ordre forum_last_post_id forum_topic forum_post auth_view auth_post auth_topic auth_annonce auth_modo
Ensuite, venons au PHP :
J'ai une page d'administration depuis laquelle je peux effectuer des opérations sans être obligé de passer par la BDD.
Enfin, je devrais effectuer...
Oui, car par exemple, si je veux modifier les droits de deux forums sur les sept, ce sont les droits du dernier forum qui seront pris en compte.
Alors, j'ai essayé l'incrémentation sur le champ forum_id pour que chaque droit soit attribué à son forum, cependant, ça ne me renvoie plus de résultat !
Voilà comment je m'y suis pris :
Vous pouvez observer que ce formulaire renvoie à une page appelée adminok.php, voici ce qu'elle contient concernant les droits :
La réponse est insoutenable, suis-je bel et bien un gros naze ou c'est plus compliqué que ça n'y paraît ?! Merci de ne pas me décevoir sur le jugement que vous vous ferez de moi ! (;
Le problème semble simple à résoudre pourtant je n'y arrive pas.
Tout d'abord, parlons du SQL :
Dans ma base de données, j'ai une table qui se nomme forum_forum.
Cette table contient 13 champs et 7 entrées.
Voici le nom des champs : forum_id forum_cat_id forum_name forum_desc forum_ordre forum_last_post_id forum_topic forum_post auth_view auth_post auth_topic auth_annonce auth_modo
Ensuite, venons au PHP :
J'ai une page d'administration depuis laquelle je peux effectuer des opérations sans être obligé de passer par la BDD.
Enfin, je devrais effectuer...
Oui, car par exemple, si je veux modifier les droits de deux forums sur les sept, ce sont les droits du dernier forum qui seront pris en compte.
Alors, j'ai essayé l'incrémentation sur le champ forum_id pour que chaque droit soit attribué à son forum, cependant, ça ne me renvoie plus de résultat !
Voilà comment je m'y suis pris :
<?php case "droits": //Gestion des droits echo'<h1>Edition des droits</h1>'; $query = $db->prepare('SELECT forum_id, forum_name, auth_view, auth_post, auth_topic, auth_annonce, auth_modo FROM forum_forum WHERE forum_id = :forum_plus'); $query->bindValue(':forum_plus', $forum_plus, PDO::PARAM_INT); $query->execute(); $forum_plus = 1; echo '<form method="post" action="adminok.php?cat=forum&action=droits"><p><table><tr> <th>Forum</th> <th>Lire</th> <th>Répondre</th> <th>Poster</th> <th>Annonce</th> <th>Modérer</th>'; while($data = $query->fetch()) { $forum_plus++; echo' </tr><td>'.$data['forum_name'].'</td>'; //Ces deux tableaux vont permettre d'afficher les résultats $rang = array( VISITEUR=>"Visiteur", INSCRIT=>"Membre", MODO=>"Modérateur", ADMIN=>"Administrateur"); $list_champ = array("auth_view", "auth_post", "auth_topic", "auth_annonce", "auth_modo"); //On boucle foreach($list_champ as $champ) { echo'<td><select name="'.$champ.'">'; for($i=1;$i<5;$i++) { if ($i == $data[$champ]) { echo'<option value="'.$i.'" selected="selected">'.$rang[$i].'</option>'; } else { echo'<option value="'.$i.'">'.$rang[$i].'</option>'; } } echo'</td></select><br /><input type="hidden" name="forum_plus" value="'.$forum_plus.'" />'; } } echo'<input type="submit" value="Envoyer"></p></form>'; $query->CloseCursor(); echo '</table>'; break; ?>
Vous pouvez observer que ce formulaire renvoie à une page appelée adminok.php, voici ce qu'elle contient concernant les droits :
<?php case "droits": //Récupération d'informations $auth_view = (int) $_POST['auth_view']; $auth_post = (int) $_POST['auth_post']; $auth_topic = (int) $_POST['auth_topic']; $auth_annonce = (int) $_POST['auth_annonce']; $auth_modo = (int) $_POST['auth_modo']; $forum_plus = (int) $_POST['forum_plus']; //Mise à jour $query=$db->prepare('UPDATE forum_forum SET auth_view = :view, auth_post = :post, auth_topic = :topic, auth_annonce = :annonce, auth_modo = :modo'); $query->bindValue(':view',$auth_view,PDO::PARAM_INT); $query->bindValue(':post',$auth_post,PDO::PARAM_INT); $query->bindValue(':topic',$auth_topic,PDO::PARAM_INT); $query->bindValue(':annonce',$auth_annonce,PDO::PARAM_INT); $query->bindValue(':modo',$auth_modo,PDO::PARAM_INT); $query->execute(); $query->CloseCursor(); //Message echo'<p>Les droits ont été modifiés !<br /> Cliquez <a href="./admin.php">ici</a> pour revenir à l administration</p>'; break; ?>
La réponse est insoutenable, suis-je bel et bien un gros naze ou c'est plus compliqué que ça n'y paraît ?! Merci de ne pas me décevoir sur le jugement que vous vous ferez de moi ! (;
A voir également:
- Modifier les variables de plusieurs champs !
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
- Modifier story facebook - Guide
- Modifier extension fichier - Guide
- Vous avez besoin d'une autorisation de la part de système pour modifier ce dossier - Guide
4 réponses
Y a des variables globales et des valeurs associées à des utilisateurs dans une Base de Données.
Et tu cherches à passer outre les protocoles de connexions, c 'est çà ?
Et tu cherches à passer outre les protocoles de connexions, c 'est çà ?
En fait, j'arrive à modifier entrée par entrée et ce n'est pas très pratique.
Et pour la page adminok.php
<?php case "droits": //Gestion des droits echo'<h1>Edition des droits</h1>'; if(!isset($_POST['forum'])) { $query=$db->query('SELECT forum_id, forum_name FROM forum_forum ORDER BY forum_ordre DESC'); echo'<form method="post" action="admin.php?cat=forum&action=droits">'; echo'<p>Choisir un forum :</br /> <select name="forum">'; while($data = $query->fetch()) { echo'<option value="'.$data['forum_id'].'">'.$data['forum_name'].'</option>'; } echo'<input type="submit" value="Envoyer"></p></form>'; $query->CloseCursor(); } else { $query = $db->prepare('SELECT forum_id, forum_name, auth_view, auth_post, auth_topic, auth_annonce, auth_modo FROM forum_forum WHERE forum_id = :forum'); $query->bindValue(':forum',(int) $_POST['forum'], PDO::PARAM_INT); $query->execute(); echo '<form method="post" action="adminok.php?cat=forum&action=droits"><p><table><tr> <th>Lire</th> <th>Répondre</th> <th>Poster</th> <th>Annonce</th> <th>Modérer</th> </tr>'; $data = $query->fetch(); //Ces deux tableaux vont permettre d'afficher les résultats $rang = array( VISITEUR=>"Visiteur", INSCRIT=>"Membre", MODO=>"Modérateur", ADMIN=>"Administrateur"); $list_champ = array("auth_view", "auth_post", "auth_topic","auth_annonce", "auth_modo"); //On boucle foreach($list_champ as $champ) { echo'<td><select name="'.$champ.'">'; for($i=1;$i<5;$i++) { if ($i == $data[$champ]) { echo'<option value="'.$i.'" selected="selected">'.$rang[$i].'</option>'; } else { echo'<option value="'.$i.'">'.$rang[$i].'</option>'; } } echo'</td></select>'; } echo'<br /><input type="hidden" name="forum_id" value="'.$data['forum_id'].'" /> <input type="submit" value="Envoyer"></p></form>'; $query->CloseCursor(); } echo '</table>'; break; ?>
Et pour la page adminok.php
case "droits": //Récupération d'informations $auth_view = (int) $_POST['auth_view']; $auth_post = (int) $_POST['auth_post']; $auth_topic = (int) $_POST['auth_topic']; $auth_annonce = (int) $_POST['auth_annonce']; $auth_modo = (int) $_POST['auth_modo']; //Mise à jour $query=$db->prepare('UPDATE forum_forum SET auth_view = :view, auth_post = :post, auth_topic = :topic, auth_annonce = :annonce, auth_modo = :modo WHERE forum_id = :id'); $query->bindValue(':view',$auth_view,PDO::PARAM_INT); $query->bindValue(':post',$auth_post,PDO::PARAM_INT); $query->bindValue(':topic',$auth_topic,PDO::PARAM_INT); $query->bindValue(':annonce',$auth_annonce,PDO::PARAM_INT); $query->bindValue(':modo',$auth_modo,PDO::PARAM_INT); $query->bindValue(':id',(int) $_POST['forum_id'],PDO::PARAM_INT); $query->execute(); $query->CloseCursor(); header('Location: ./admin.php?cat=forum&action=droits'); break;