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 :

[Tableaux] contrôle de champs get sans effet


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut [Tableaux] contrôle de champs get sans effet
    Bonsoir à vous,

    j'essaie tant bien que mal d'écrire un module de gestion de liens en php5,
    pour ce faire je me suis inspiré d'un module de gestion décrit dans le livre de Philippe Rigaux mysql et php 3eme édition (chapitre3, mise à jour ... par formulaire)

    mon probleme:

    visible à cette url:
    http://www.cae2louerre.com/administration-1.html
    le script fonctionne pour l'affichage des blocks présentant les liens, mais lorsque je clic sur modifier, validé, devalidé ou ajouté évidemment rien ne se passe sauf le retour à l'affichage, je pense que cela vient des conditions et plus précisement du mode passé en GET.
    j'utilise l'url rewriting en htaccess de ce type:
    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule   ^administration-([0-9]+)-([a-z]+)-([0-9]+)\.html$  administration.php?rubrique=administration&numero=$1&mode=$2&idliens=$3 [L]
    J'ai lus relus et même réecris plusieurs fois ce module...
    et je vois vraiment pas!!

    mon environnement:
    PHP Version 5.1.6
    magic_quotes_gpc On On
    magic_quotes_runtime Off Off
    magic_quotes_sybase Off Off

    mes codes:
    ModeMaj.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    // les constantes pour le mode
    define ("MODE_DEFAUT", "defaut");
    define ("MODE_INSERTION", "insertion");
    define ("MODE_MAJ", "maj");
    define ("MODE_VALIDATION", "valide");
    define ("MODE_DEVALIDATION", "dvalid");
    define ("MODE_SUPPRESSION", "delete");
    ?>

    MAJLienSimple.php
    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
    28
    29
    <?php 
    // fonction de mise à jour ou d'insertion dans la table liens
    function MAJLienSimple ($mode, $lien, $connexion)
    {
    $id = $lien['id'];
    $nom = htmlentities(addslashes($lien['nom']));
    $contenu = htmlentities(addslashes($lien['contenu']));
    $url = addslashes($lien['url']);
    $idUser = $lien['idUser'];
    if ($mode == MODE_INSERTION)
    $requete = "INSERT INTO liens (id, nom, contenu, url, timestamp, idUser, valide)"
                     ."VALUES ('', '$nom', '$contenu', '$url', 'time()', '$login','')";
    elseif ($mode == MODE_VALIDATION)
    $requete  = "UPDATE liens SET valide=1"
                        ."WHERE id='$id'";                 
    elseif ($mode == MODE_DEVALIDATION)
    $requete  = "UPDATE liens SET valide=0"
                        ."WHERE id='$id'";
    elseif ($mode == MODE_SUPRESSION)
    $requete  = "DELETE FROM liens"
                        ."WHERE id='$id'";
    else
    $requete  = "UPDATE liens SET nom='$nom', contenu='$contenu', url='$url'"
                        ."WHERE id='$id'";
     
            //Exécution de l'ordre SQL
            ExecRequete ($requete, $connexion);
    }// fin de la fonction
    ?>

    AffichageLiens.php
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?php
    // Affichage sous blocks Xhtml des Liens Zone Admin
     
    function AffichageLiens($connexion)
    {
    $resultats = ExecRequete ("SELECT * FROM liens", $connexion);
    echo"<div id=\"admin_montreliens\"><p>Tous les liens enregistrés dans votre base de données sont ici.</p>"
    ."<p>vous pouvez les modifier, les valider/dévalider ou les supprimer.</p>";
    while ($lien = ObjetSuivant ($resultats))
    {
    echo "<div class=\"blockliens_admin\" title=\"Présentation de la fiche $lien->nom\">"
    ."<h2><span>Identifiant BD: <strong>$lien->id</strong></span>$lien->nom</h2>\n<p>";
    $texte = $lien->contenu;
    parseceostarcode($texte);
    echo "</p>\n<p><span class=\"url\">Url:</span>"
    ."<span class=\"link_url\"><a class=\"liens_url_admin\" href=\"$lien->url\" title=\"$lien->url\">$lien->url</a></span></p>\n"
    ."<h3> <span class=\"creepar_link_admin\">Crée par: <strong>$lien->idUser</strong> <strong>";
    $date = $lien->timestamp;
    dateJMAHM($date);
    echo"</strong></span><span>Etat: <strong class=\"etat_liens_admin\">";
    if ($lien->valide == '1') 
    {
    echo "Validé <img alt=\"Validé\" src=\"design/imgsadmin/btn_valid.gif\" />";
    }
    else 
    {
    echo "Dévalidé <img alt=\"Dévalidé\" src=\"design/imgsadmin/btn_devalid.gif\" />";
    }
    echo "</strong></span></h3><div class=\"action_admin\" title=\"Action possible sur cette fiche\"><h4>Action:</h4>\n<ul><li>";
    if ($lien->valide == '1')
     
    {
    echo "<a class=\"deval_link_admin\" href=\"administration-1-". MODE_DEVALIDATION
    ."-$lien->id.html\" title=\"dévalider\"><span>dévalider</span></a>";
    }
    else 
    {
    echo "<a class=\"val_link_admin\" href=\"administration-1-". MODE_VALIDATION
    ."-$lien->id.html\" title=\"valider\"><span>valider</span></a>";
    }
    echo "</li><li><a class=\"modif_link_admin\" href=\"administration-1-". MODE_MAJ
    . "-$lien->id.html\" title=\"modifier\"><span>modifier</span></a></li>\n"
    ."<li><a class=\"delete_link_admin\" href=\"administration-1-". MODE_SUPPRESSION
    ."-$lien->id.html\" title=\"supprimer\"><span>supprimer</span></a></li>\n"
    ."<li><a href=\"administration-1-". MODE_INSERTION
    ."-0.html\" title=\"new-link\">new-link</a></li></ul></div></div>";
    }
    }
    ?>

    LienSimple.php
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?php
    require_once ("UtilLienSimple.php");
    // Normalisation des entrées
    Normalisation();
    // tableau "vide" utilisé comme valeur par défaut pour les insertions
    $NULL_LIEN = array("id" => "", "nom" => "", "contenu" => "", "url" => "", "timestamp" => "", "idUser" => "", "valide" => "0");
     
    $connexion = Connexion (NOM, PASSE, BASE, SERVEUR);
     
    if ( !isset($_POST['action']) and !isset($_GET['mode']))
    {
    // L'execution n'est pas lancée par le formulaire ou par une ancre créee dans le block des liens
    //  Donc on affiche le block des liens
    AffichageLiens($connexion);
    }
    else
    {
             // Traitement des actions utilisateur recueillis par l'application
         if ( isSet($_GET['mode']))
         {
         // L'utilisateur a cliqué l'une des ancres permettant de modifier ou d'ajouter un lien
                 if ($_GET['mode'] == MODE_MAJ)
                {
                // On récupére les données du lien à modifier
                // Et on affiche le formulaire pré-remplis
                $id = ($_GET['idliens']);
                $requete = "SELECT * FROM liens WHERE id='$id'";
          $resultat = ExecRequete ($requete, $connexion);
          $lien = LigneSuivante ($resultat);
          FormLienSimple (MODE_MAJ, $lien);
                }
          else if ($_GET['mode'] == MODE_INSERTION)
          {
          // on affiche le formulaire de saisie vierge
          FormLienSimple (MODE_INSERTION, $NULL_LIEN);
          }
         }
         else if (isSet($_POST['action']))
        {
        // L'utilisateur à saisi des données dans le formulaire
        // pour modifier ou insérer un lien, puis à cliqué sur Enregistrer
        // Contrôle de saisie, mise à jour de la table et on affiche le
        // block actualisé des liens
     
        // contrôle des données
        if (ControleLien ($_POST))
        {
        MAJLienSimple ($_POST['mode'], $_POST, $connexion);
        AffichageLiens ($connexion);
        }
        }
    echo "test";
    }
    ?>

    UtilLienSimple.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    require_once ("Normalisation.php");
    require_once ("UtilBD.php");
    require_once ("ModeMaj.php");
    require_once ("AffichageLiens.php");
    require_once ("MAJLienSimple.php");
    require_once ("FormLienSimple.php");
    require_once ("DateJMAHM.php");
    require_once ("ParserCeostar.php");
    ?>
    Voilà, j'éspère être assez explicite sur mon problême,
    et vous donné suffisament de renseignements pour que vous puissiez
    me cultivez sur mon erreur.

    merci d'avance pour votre temps.

  2. #2
    Membre averti Avatar de TucSale
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 264
    Points : 325
    Points
    325
    Par défaut
    bonjour,

    Peux tu nous afficher un print_r($_get) apres un click stp juste pour vérifier ton RewriteRule
    Tuc l'Original, On ne peut que l'aimer

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    j'ai placé le print_r($_GET)
    dans le script LienSimple.php, une premiere fois tout en abs la ou il y l' echo'test'
    puis la ou est injecter la function d'affichage en blocks,
    je n'ai constaté aucun retour peus tu précisez ou veus tu que je le place ?
    merci
    ceostar

  4. #4
    Membre averti Avatar de TucSale
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 264
    Points : 325
    Points
    325
    Par défaut
    En fait je pense que ton problème viens de ton rewriterule

    test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $chn = "http://www.cae2louerre.com/administration-1-delete-1.html";
    eregi ("^administration-([0-9])-([a-z]+)-([0-9]+)\.html$", $chn, $regs);
    print_r($regs);
    c'est ton ^ qui n'est pas bon il me semble ( à confirmer)
    Tuc l'Original, On ne peut que l'aimer

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    je vais faire un test sans url rewriting, mais je doute que cela vienne de là...

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    je viens de supprimer l'url rewriting et l'effet et le même
    je te laisse juge

    voici l'url sans rewriting
    http://www.cae2louerre.com/admin/ges...LienSimple.php

    log-in: test
    password: test

    ca me rend dingue

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Juste un petit détail en parcourant vite fait le code j'ai repéré des "isSet" or il me semble que php est sensible à la casse.

    J'emet des réserves car j'ignore si cette syntaxe est prévue par php.
    Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

    Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"

  8. #8
    Membre averti Avatar de TucSale
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 264
    Points : 325
    Points
    325
    Par défaut
    que fait ta fonction Normalisation(); stp

    place un print_r($_GET); avant require_once ("UtilLienSimple.php"); stp
    Tuc l'Original, On ne peut que l'aimer

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    voici la fonction normalisation
    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
    <?php
    //Application de la suppression des échappements, si nécessaires,
    // dans tous les tableaux conetenant des donnees HTTP
     
    require_once ("NormalisationHTTP.php");
     
    function Normalisation()
    {
    // Si on est en échappement automatique, on rectifie...
    if (get_magic_quotes_gpc())
    {
    $_POST = NormalisationHTTP($_POST);
    $_GET = NormalisationHTTP($_GET);
    $_REQUEST = NormalisationHTTP($_REQUEST);
    $_COOKIE = NormalisationHTTP($_COOKIE);
    }
    }
    ?>
    la fonction normalisationHTTP
    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
    <?php
    // cette fonction supprime tout échappement automatique
    // des données HTTP dans un tableau de dimension quelconque
     
    function NormalisationHTTP($tableau)
    {
    // parcours du tableau
    foreach ($tableau as $cle => $valeur)
    {
    if(!is_array($valeur)) // c'est un élément: on agit
    $tableau[$cle] = stripslashes($valeur);
    else // c'est un tableau : on appelle récursivement
    $tableau[$cle] = NormalisationHTTP($valeur);
    }
    }
    ?>
    le print_r($_GET) est placé

  10. #10
    Membre averti Avatar de TucSale
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 264
    Points : 325
    Points
    325
    Par défaut
    je pense qu'il te manque un return $tableau; dans ta function NormalisationHTTP
    Tuc l'Original, On ne peut que l'aimer

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Tescal,

    si j'ai bien suivi, mes données $_GET arrive bien au script ?!?
    alors je dois pas parlé le même php que mon serveur ???
    j'ai réecris ce machin au moins 20 fois depuis vendredi dernier
    j'ai lus relus mes cours, je deviens fou? non ?

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    MERCI TucSale !!!!!

    en effet, je ne l'avis pas vus,
    il me reste plus qu'à profiner mon module, vraiment merci...
    je bloqué sur une connerie et je la trouver pas

    et encore merciiiiiiii !!!

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

Discussions similaires

  1. [Tableaux] Remplir un champs de text sans recharger la page
    Par slyderkiller dans le forum Langage
    Réponses: 3
    Dernier message: 15/08/2006, 22h16
  2. contrôle de champ vide
    Par allowen dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/03/2005, 14h16
  3. Réponses: 4
    Dernier message: 18/11/2004, 13h26
  4. Problème de contrôle de champ input texte
    Par NATHW dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/10/2004, 22h48
  5. Sans effet: StringGrid1->Cells[1][1][2] = c ?
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/11/2002, 10h32

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