Forum Clubic

[PHP] switch - case : non comparaison de la valeur - Seule la valeur "default" fonctionne

Bonjour,

j’ai un petit soucis dans le déroulement d’un switch-case. J’ai en effet une partie administration, qui permet d’ajouter dans une DB des produits, de les supprimer ou de remettre à jour la BD. Or, avant d’ajouter un produit dont l’utilisateur aura au préalable remplit un formulaire permettant de connaitre la reference, le nom et la gamme du produit, je voudrais aficher ce que l’utilisateur a saisie et alors lui demander s’il vlide les données (pour procéder a l’ajout ou la suppression) ou s’il veut modifier ces mêmes données.

Mon problème c’est que lors de la première saisie des infos concernant le produit à ajouter (ou supprimer), l’affichage pour la confirmation ne se fait pas… j’ai l’impression que dans mon switch-case, seul le cas “default” est pris en compte, et que la valeur que prend mon action n’est pas testée… Quelle est mon/mes erreur(s) ?!

code d’ffichage des pages :

<?php
    echo'<?xml version="1.0" encoding="ISO-8859-1" ?>
         <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
    
    require 'pageAdmin.inc';
    
    /*Récupération de la page en cours.*/
   if(!isset($_GET['page'])) $page="adminAccueil";
?>

<html xmlns="http://www.w3.org/1999/xhtml?quot; xml:lang="fr" lang="fr">
    <head>
        <title>JENFLO - Administration</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <meta name="Author" content="Arnaud Loy"/>
        <link rel="stylesheet" href="../styleAdmin.css" type="text/css"/>
        <style type="text/css">
        </style>
    </head>
    
    <body>
        <div class="conteneur">
        
            <!-- Mise en place de la bannière. Affichage de cette dernière suivant la page choisie -->
            <div class="header">
                ADMINISTRATION DU SITE JEN FLO
            </div>
            
            <div class="contenu">
                
                <!-- Mise en place et affichage du menu -->
                <div class="menu">
                    <ul>
                        <li><a href="administration.php?page=93"> AJOUTER</a></li><br/>
                        <li><a href="administration.php?page=94"> SUPPRIMER</a></li><br/>
                        <li><a href="administration.php?page=95"> REINITIALISER</a></li><br/>
                    </ul>
                </div>
                
                <!-- Affichage de la page suivant celle qui a été choisie -->
                <?php
                    if(!empty($_GET['page'])){
                    switch($_GET['page'])
                        {
                        case 93 :
                            $page = 'adminAjout';
                            break;
                        case 94 :
                            $page = 'adminSupp';
                            break;
                        case 95 :
                            $page = 'adminReinit';
                            break;
                        }
                    }
                    else{
                        $page = 'adminAccueil';
                    }
                    affichePageAdmin($page);
                ?>
                
            </div>
            
            <div class="footer">
                <a class="administration" href="../../../index.php"> >> Retour au site << </a>
            </div>
            
        </div>
    </body>
</html?gt;

code de l’ajout (par exemple):

faut savoir aussi donc qu’une fois le cas “default” effectué, je reviens directement à la page d’accueil de l’administration, impossible de faire d’echo ou autre pour voir ce qu’il se passe :confused:

elle renvoie quoi ta fonction connectDB ? (et en fait de quel switch parle tu?)

Je n’ai pas le temps de regarder en détail, mais tu te pleins de ne pouvoir faire d’écho à cause d’une redirection: alors écrit plutôt dans un fichier de log :wink:

Voilà la fonction de log que j’utilise, $desc est le message que tu veux écrire, et $log_files peut contenir le nom de plusieurs fichiers de logs séparés par une virgule.

function fct_error_log($desc,$log_files) {
	// Separate the name of the different log files
	$tab_log_files=explode(",",$log_files);
	// Writting loop. This loop makes it possible to write the log in each file
	foreach($tab_log_files as $i => $log_file){
  if(!file_exists($log_file)){
  	touch($log_file);
  }
  // line to write in log file. $_SERVER['PHP_SELF'] is the name of the current page.
  $ligne = date('Y-m-d H:i:s')."\t".$_SERVER['PHP_SELF']."\tUser: ".$_SESSION['user']."\tDB: ".$_SESSION['db']."\t$desc\n\n";
	
  // log file opening, "a+" mode allows to write at the end
  if($fp = fopen($log_file, "a+")) {
  	// writting of the line
  	fwrite($fp, $ligne);
  	// log file closing
  	fclose($fp);
  }
	} // end of writting loop.
} // end of fct_error_log