Modifier les variables de plusieurs champs !

Utilisateur anonyme -  
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 :

<?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 ! (;

4 réponses

Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention   209
 
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 çà ?
0
Utilisateur anonyme
 
Je veux simplement modifier plusieurs entrées simultanément
0
Utilisateur anonyme
 
En fait, j'arrive à modifier entrée par entrée et ce n'est pas très pratique.

<?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;
0
Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention   209
 
Cette partie là alors ???

$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();
0