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

Langage PHP Discussion :

Valider et dévalider une fiche


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut Valider et dévalider une fiche
    Bonjour,
    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
     
    //Fonction qui valide et dévalide une fiche
    //Une fiche est valide si son etat = 1, dévalide dans le cas contraire
    function validFiche($fiche_id, $etat){
    	global $db;
    	$sql = 'UPDATE fiches SET etat = :etat
              WHERE id = :fiche';
    	$statement = $db->prepare($sql);
    	$statement->execute(array(':fiche' => $fiche_id, ':etat' => $etat));
    }
     
    //Traitement de l'action
    if ( isset($_GET['fiche_id']) && !empty($_GET['fiche_id']) && isset($_GET['etat']) && !empty($_GET['etat']) ) {
    	$actif = ($_GET['etat'] == 1) ? '' : 1;
    	validFiche($_GET['fiche_id'], $actif);
    }
     
    //Lien pour lancer l'action
    $etat = ( $tabl_result['etat'] == 1 ) ? 'Activée' : 'Désactivée';
    <a href="?fiche_id='.$tabl_result['id'].'&etat='.$tabl_result['etat'].'">'.$etat.'</a>
    Résultat, pour une fiche valide, un clic sur le lien la dévalide. Mais en cliquant à nouveau la fiche ne se valide pas.

    Merci d'avance pour votre aide.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Question : quelle est la valeur de "etat" pour le cas "invalide" ? Si c'est 0, tu ne passeras jamais le !empty($_GET['etat']), et donc tu n'appeleras jamais ta fonction validFiche.

    Ce qui suit est considéré comme étant vide par la fonction empty:
    • "" (une chaîne vide)
    • 0 (0 en tant qu'entier)
    • 0.0 (0 en tant que nombre à virgule flottante)
    • "0" (0 en tant que chaîne de caractères)
    • NULL
    • FALSE
    • array() (un tableau vide)
    • var $var; (une variable déclarée, mais sans valeur dans une classe)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Hormis la remarque de Celira, il y aurait peut être un souci dans la chronologie du code (déroulement).
    Apparemment, les données de la fiche ($tabl_result) seraient récupérées avant que ne soit modifié la valeur de l'état (l'update à l'appel de validFiche).
    Ca se peut même qu'il y ait une incohérence entre la valeur de $tabl_result['etat'] et $actif.

    Faut toujours faire en 1er les modifs, puis après récupérer les données de façon à obtenir les bonnes valeurs.

    Ceci dit, bien souvent on effectue une redirection (header) après une mise à jour, histoire d'éviter de refaire la même mise à jour si on recharge la même page.

    A vérifier.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Citation Envoyé par Celira Voir le message
    Question : quelle est la valeur de "etat" pour le cas "invalide" ? Si c'est 0, tu ne passeras jamais le !empty($_GET['etat']), et donc tu n'appeleras jamais ta fonction validFiche.
    Exact.
    J'en ai profité pour modifier mon code
    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
     
    function validFiche($fiche_id, $etat){
    	global $db;
    	$return = false;
    	$sql = 'UPDATE fiches SET etat = :etat
              WHERE id = :fiche';
    	$statement = $db->prepare($sql);
    	if ( $statement->execute(array(':fiche' => $fiche_id, ':etat' => $etat)) ) {
    		$return = true;
    	}
    	return $return;
    }
     
    $message = false;
    if ( isset($_GET['fiche_id']) && isset($_GET['etat']) ) {
    	$actif = ( $_GET['etat'] == 1 ) ? 0 : 1;
    	$valid = validFiche($_GET['fiche_id'], $actif);
    	if ( $valid ) {
    		$message = 'La fiche a bien été ';
    		if ( $_GET['etat'] == 1 ) { 
    			$message .= 'désactivée';
    		}
    		else {
    			$message .= 'activée';
    		}		
    	}
    }
    Merci.

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

Discussions similaires

  1. redimensionnement d'une fiche et de ses controles
    Par spoony dans le forum C++Builder
    Réponses: 5
    Dernier message: 04/04/2004, 12h15
  2. [Drag & Drop] Mettre une fiche dans un panel
    Par corwin_d_ambre dans le forum Composants VCL
    Réponses: 5
    Dernier message: 12/01/2004, 10h46
  3. Réponses: 2
    Dernier message: 19/08/2003, 15h45
  4. Image popup d'une fiche à partir d'un TListImage
    Par FW-S dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/11/2002, 13h42
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43

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