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

PHP & Base de données Discussion :

Requête pour recherche de doublons qui ne fonctionne plus : HTTP404 [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    directeur hypermarché
    Inscrit en
    Avril 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : directeur hypermarché

    Informations forums :
    Inscription : Avril 2009
    Messages : 227
    Points : 111
    Points
    111
    Par défaut Requête pour recherche de doublons qui ne fonctionne plus : HTTP404
    ARGGGHHHH !!

    Je teste de nouveau ce soir une page de mon site qui vérifie qu'on ne peut pas insérer de doublons et là , c'est la cata : HTTP404.

    Je cherche depuis deux bonnes heures et je crois que je ne vois plus rien.

    HELP !

    Dans le head :

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    $MM_fl="MM_insert";
    if (isset($_POST[$MM_fl])) {
    $row_Recordset1000['id']=$_GET['id'];
      $MM_dupKey='panier400.php?id='.$row_Recordset1000['id'];
     
     
    // recuperation des valeurs du formulaire 
     
    $offre = $_POST['offre']; 
    $paramart_Panier = $_GET['id'];
     
    // on regarde si les valeurs exitent déjà 
     
    $sql = sprintf("SELECT * FROM shop_offres WHERE offre=%s and article=%s",GetSQLValueString($offre, "text"), GetSQLValueString($paramart_Panier, "int"));
     
      mysql_select_db($database_centphzuone, $centphzuone);
      $req=mysql_query($sql, $centphzuone) or die(mysql_error());
     
     
    // on compte le nombre de résultats 
    $res = mysql_num_rows($req); 
     
    if($res!=0) // Le nom existe déjà, on affiche un message d'erreur 
    { 
    $MM_qs = "?";
     
        if (substr_count($MM_dupKey,"?") >=1) $MM_qs = "&";
        $MM_dupKey = $MM_dupKey . $MM_qs ."requser=".$offre;
        header ("Location: $MM_dupKey");
        exit;
    } 
    else 
    { 
    // insertion de l'offre dans la base 
    $currentPage = $_SERVER["PHP_SELF"];
     
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }
    $insertSQL = sprintf("INSERT INTO shop_offres ( client, article, offre, top , up , arch , suppr , date_offre , env , recu ) VALUES ( %s,%s,%s,%s,%s,%s,%s, %s, %s, %s)",
     
                           GetSQLValueString($_POST['client'], "text"),
                           GetSQLValueString($_POST['article'], "int"),
                           GetSQLValueString($_POST['offre'], "text"),
                           GetSQLValueString($_POST['top'], "int"),
                           GetSQLValueString($_POST['up'], "int"),
    	             GetSQLValueString($_POST['arch'], "int"),
    	             GetSQLValueString($_POST['suppr'], "int"),
                           GetSQLValueString($_POST['date_offre'], "text"),
    	          GetSQLValueString($_POST['env'], "int"),
    	          GetSQLValueString($_POST['recu'], "int"));
     
      mysql_select_db($database_centphzuone, $centphzuone);
      $Result1 = mysql_query($insertSQL, $centphzuone) or die(mysql_error());
     
      $insertGoTo = "suppr_panier400.php";
      if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $insertGoTo));
    }
     
    }
    Dans le body :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php if (!isset($_GET['requser'])) {?><img src="images/mini/att.png" border="0" align="absmiddle"/> <span class="Style46">Vous ne pouvez faire qu'une seule offre et elle n'est ni modifiable ni annulable.</span>
          <?php } ?><?php if (isset($_GET['requser'])) {?><img src="images/mini/att.png" border="0" align="absmiddle"/> Cette valeur est déjà enregistrée dans notre base. Veuillez en saisir une nouvelle.<?php } ?>
    et toujours dans le body , ce form pour envoyer une offre :

    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
    <form action="<?php echo $editFormAction; ?>" id="achat" name="achat" method="post">
                    <input name="client" type="hidden" id="client" value="<?php echo $_SESSION['MM_Username']; ?>" />
                    <input name="article" type="hidden" id="article" value="<?php echo $row_Recordset1000['article']; ?>" />
                    <span class="Style44">Saisir votre offre <span class="Style45">( € )</span></span><span id="sprytextfield1">
                    <input name="offre" type="text" id="offre" size="6" maxlength="6" />
                    <span class="textfieldRequiredMsg Style19">Un nombre entier!</span><span class="textfieldInvalidFormatMsg Style19">Un nombre entier!</span></span>
                    <label>
                    <input name="top" type="hidden" id="top" value="" />
                    <input name="up" type="hidden" id="up" value="" />
                    <input name="arch" type="hidden" id="arch" value="" />
                    <input name="suppr" type="hidden" id="suppr" value="" />
                    <input type="hidden" name="date_offre" value="<?php echo date("Y-m-d H:i:s" ); ?>" size="32"/>
                    <input name="env" type="hidden" id="env" value="" />
                    <input name="recu" type="hidden" id="recu" value="" />
                    <input type="submit" name="button5" id="button5" value="Valider" />
                    </label>
                    <input type="hidden" name="MM_insert" value="achat" />
                  </form>
    www.masterquizz.fr - Ne vous posez plus de questions

  2. #2
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    c'est la cata : HTTP404.
    Une erreur de type 404 c'est une page inconnue, ce qui sous-entend que l'URL ne serait pas ou plus correcte.

    Vu qu'il s'agit d'un formulaire, l'URL est définie dans l'attribut action de ce formulaire, le code en question est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="<?php echo $editFormAction; ?>" id="achat" name="achat" method="post">
    Cette URL est générée dynamiquement par la variable $editFormAction.
    Donc question : quelle est la valeur de cette variable ? (il de forte chance qu'il y a erreur)
    Rajoute un simple echo $editFormAction dans cette page afin de la visualiser.
    Ou alors, avant de valider le formulaire, fais un clic droit dans la page, puis "code source de la page" pour obtenir le code HTML généré et repérer/rechercher la valeur de cette URL de l'attribut action de ce formulaire (il doit avoir erreur).


    Quelques remarques au passage.
    Vu le code, à tous les coups il y a du Dreamweaver par là.
    Les codes générés par ce Soft est loin d'être propre, intuitif, pertinent, etc ... bref, il n'aide pas à une bonne compréhension de son propre code.
    Les $row_Recordset1, $row_Recordset2, $row_Recordset3, etc ...
    ou encore Style1, Style2, Style3, etc ...

    L'une des 1ère chose qu'on apprend dans la programmation c'est justement de ne pas faire ce genre de code, la règle d'or (si on peu dire) est de nommer toutes ces variables et autre de manière logique et intuitive.
    Si c'est un recordset de données d'un article, on peu nommer ainsi : $article_rs, ou $rs_article
    Un simple coup d'oeil suffit de comprendre ce que cette variable contient.
    Par contre les truc comme $row_Recordset1000 ??? -> obligera de parcourir le code pour le savoir.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php if (!isset($_GET['requser'])) {?><img src="images/mini/att.png" border="0" align="absmiddle"/> <span class="Style46">Vous ne pouvez faire qu'une seule offre et elle n'est ni modifiable ni annulable.</span>
          <?php } ?><?php if (isset($_GET['requser'])) {?><img src="images/mini/att.png" border="0" align="absmiddle"/> Cette valeur est déjà enregistrée dans notre base. Veuillez en saisir une nouvelle.<?php } ?>
    Ne manquerait-il pas les fermeture des balises des img ?
    En HTML le code c'est : <img src="une_image.png" atl="un_texte_alternatif" />
    Il manquerait ceci />
    Mais la norme W3C dit aussi qu'il faut (normalement) rajouter un attribut alt aux balises <img> pour définir un texte alternatif dans la cas où l'image serait inexistante.
    Il faudrait rajouter cet attribut alt.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <label>
                    <input name="top" type="hidden" id="top" value="" />
                    <input name="up" type="hidden" id="up" value="" />
                    <input name="arch" type="hidden" id="arch" value="" />
                    <input name="suppr" type="hidden" id="suppr" value="" />
                    <input type="hidden" name="date_offre" value="<?php echo date("Y-m-d H:i:s" ); ?>" size="32"/>
                    <input name="env" type="hidden" id="env" value="" />
                    <input name="recu" type="hidden" id="recu" value="" />
                    <input type="submit" name="button5" id="button5" value="Valider" />
                    </label>
    Cette partie de code ne respecterait pas la norme W3C.
    La balise <label> est théoriquement faite pour définir un contenu (un libellé) en relation d'1 seul et unique champ (ou élément type input ou autre).
    Or, dans ce code le label entoure 8 champs/éléments, sans compter qu'il ne contient même pas un contenu (un libellé).
    Autant dire qu'il ne sert à rien.

    Exemple de code exploitant correctement cela :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form>
        <fieldset>
            <label for="id_article">ID article</label><input type="text" id="id_article" name="id_article" />
            <label for="date">Date</label><input type="text" id="date" name="date" />
        </fieldset>
    </form>
    Tu remarqueras que j'ai entouré les 2 couples label/input par une balise <fieldset>.
    La norme W3C dit qu'il faut (normalement) entourer tous les éléments de type "en ligne" que compose un formulaire par une balise de type "bloc", et l'élément créé pour ça est un <fieldset>.
    Ceci dit, on voit très fréquemment l'usage des balise comme <div> ou autre <p>, qui sont des éléments de type "bloc", ce qui donc correcte.
    Dans ton code il manquerait théoriquement cela.


    Par ailleurs, un autre point m'intrigue.
    Ce formulaire contient pas mal de champ caché (hidden) où il n'y aucune valeur de défini (à par le champ date).
    Comme un champ caché ne sera pas vu par un utilisateur/internaute, il sera alors impossible de saisir une quelconque valeur à ces champs cachés.
    Du coup, la logique veut que ces cachés sans valeurs soient tout simplement inutiles.
    Quand pense tu ?


    Voilà voilà ... pleins de petits points qui ressemblent à des détails, mais qui n'en sont pas (avis perso).
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Membre régulier
    Homme Profil pro
    directeur hypermarché
    Inscrit en
    Avril 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : directeur hypermarché

    Informations forums :
    Inscription : Avril 2009
    Messages : 227
    Points : 111
    Points
    111
    Par défaut
    Merci beaucoup pour ta réponse et tes bons conseils.

    Effectivement , n'étant pas informaticien, je travaille avec dreamweaver et je suis bien conscient de ne pas générer de codes optimisés. Néanmoins , grace à cet outil , cela me permet d'apprendre à mon rythme sans être totalement bloqué dans la réalisation de mon site.

    Je te l'accorde, ça fait beaucoup de bourdes...

    Je pense effectivement que je ne transmets plus l'id par GET. J'ai du modifié quelque chose dans ma requête à un moment donné. Je vais chercher de ce coté là.

    Comme j'avais rajouté des champs à ma table shop_offres, et qu'ensuite la page ne fonctionnait plus, j'ai pensé que peut-être cela pouvait venir du fait que je ne transmettais pas ces données par hidden. Ok ! ça n'a rien à voir ... Un moment de panique ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Ne manquerait-il pas les fermetures des balises des img ?
    En HTML le code c'est : <img src="une_image.png" atl="un_texte_alternatif" />
    Il manquerait ceci />
    Ben, elle y est ?

    Par contre , je ne connaissais pas la "fonction " alt ...Merci Je vais revoir mes codes.
    www.masterquizz.fr - Ne vous posez plus de questions

  4. #4
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    Ben, elle y est ?
    Pas bien regardé ... sorry !


    Par contre , je ne connaissais pas la "fonction " alt ...Merci Je vais revoir mes codes.
    les alt, tout comme src, title, etc ... ce ne sont pas des fonctions, mais des attributs.
    Pas d'amalgame.
    Toutes les balises HTML acceptent des attributs (pour les INPUT, il y a par exemple : id, name, value, voir d'autres).
    C'est pas grand chose, c'est juste histoire d'utiliser les bons termes.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  5. #5
    Membre régulier
    Homme Profil pro
    directeur hypermarché
    Inscrit en
    Avril 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : directeur hypermarché

    Informations forums :
    Inscription : Avril 2009
    Messages : 227
    Points : 111
    Points
    111
    Par défaut
    GRRR...

    J'ai fait quelques modifs , mais toujours ce satané HTTP 404 Non trouvé...

    Dans le Head :

    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
    55
    56
    57
    58
    59
    $MM_fl="MM_insert";
    if (isset($_POST[$MM_fl])) {
    $row_Recordset1000['id']=$_GET['id'];
      $MM_dupKey='panier400.php?id='.$row_Recordset1000['id'];
     
     
    // recuperation des valeurs du formulaire 
     
    $offre = $_POST['offre']; 
    $paramart_Panier = $_GET['id'];
     
    // on regarde si les valeurs exitent déjà 
     
    $sql = sprintf("SELECT offre FROM shop_offres WHERE offre=%s and article=%s",GetSQLValueString($offre, "text"), GetSQLValueString($paramart_Panier, "int"));
     
      mysql_select_db($database_centphzuone, $centphzuone);
      $req=mysql_query($sql, $centphzuone) or die(mysql_error());
     
     
    // on compte le nombre de résultats 
    $res = mysql_num_rows($req); 
     
    if($res!=0) // Le nom existe déjà, on affiche un message d'erreur 
    { 
    $MM_qs = "?";
        //append the username to the redirect page
        if (substr_count($MM_dupKey,"?") >=1) $MM_qs = "&";
        $MM_dupKey = $MM_dupKey . $MM_qs ."requser=".$offre;
        header ("Location: $MM_dupKey");
        exit;
    } 
    else 
    { 
    // insertion de l'offre dans la base 
    $currentPage = $_SERVER["PHP_SELF"];
     
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }
    $insertSQL = sprintf("INSERT INTO shop_offres ( client, article, offre, date_offre ) VALUES ( %s, %s, %s, %s)",
     
                           GetSQLValueString($_POST['client'], "text"),
                           GetSQLValueString($_POST['article'], "int"),
                           GetSQLValueString($_POST['offre'], "text"),
                           GetSQLValueString($_POST['date_offre'], "text"));
     
      mysql_select_db($database_centphzuone, $centphzuone);
      $Result1 = mysql_query($insertSQL, $centphzuone) or die(mysql_error());
     
      $insertGoTo = "suppr_panier400.php";
      if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $insertGoTo));
    }
     
    }
    avec

    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
    $maxRows_Recordset1000 = 20;
    $pageNum_Recordset1000 = 0;
    if (isset($_GET['pageNum_Recordset1000'])) {
      $pageNum_Recordset1000 = $_GET['pageNum_Recordset1000'];
    }
    $startRow_Recordset1000 = $pageNum_Recordset1000 * $maxRows_Recordset1000;
     
    $paramclient_Recordset1000 = "franck@orange.fr";
    if (isset($_SESSION['MM_Username'])) {
      $paramclient_Recordset1000 = $_SESSION['MM_Username'];
    }
    $colname_monnaies = "-1";
    if (isset($_GET['id'])) {
      $colname_monnaies = $_GET['id'];
    }
    mysql_select_db($database_centphzuone, $centphzuone);
    $query_Recordset1000 = sprintf("SELECT shop_panier.article,shop_panier.client,shop_monnaies.photoa,shop_monnaies.id,shop_monnaies.pseudo,shop_monnaies.titre,shop_monnaies.offrounon,shop_monnaies.prix_ttc,shop_monnaies.vendue,shop_monnaies.fdpfrance,shop_monnaies.compteur,shop_monnaies.date_vente FROM shop_panier INNER JOIN shop_monnaies ON shop_panier.article=shop_monnaies.id WHERE shop_panier.client = %s and shop_panier.article=%s ",GetSQLValueString($paramclient_Recordset1000, "text"),GetSQLValueString($colname_monnaies, "int"));
    $query_limit_Recordset1000 = sprintf("%s LIMIT %d, %d", $query_Recordset1000, $startRow_Recordset1000, $maxRows_Recordset1000);
    $Recordset1000 = mysql_query($query_limit_Recordset1000, $centphzuone) or die(mysql_error());
    $row_Recordset1000 = mysql_fetch_assoc($Recordset1000);
     
    if (isset($_GET['totalRows_Recordset1000'])) {
      $totalRows_Recordset1000 = $_GET['totalRows_Recordset1000'];
    } else {
      $all_Recordset1000 = mysql_query($query_Recordset1000);
      $totalRows_Recordset1000 = mysql_num_rows($all_Recordset1000);
    }
    $totalPages_Recordset1000 = ceil($totalRows_Recordset1000/$maxRows_Recordset1000)-1;
     
    $queryString_Recordset1000 = "";
    if (!empty($_SERVER['QUERY_STRING'])) {
      $params = explode("&", $_SERVER['QUERY_STRING']);
      $newParams = array();
      foreach ($params as $param) {
        if (stristr($param, "pageNum_Recordset1000") == false && 
            stristr($param, "totalRows_Recordset1000") == false) {
          array_push($newParams, $param);
        }
      }
      if (count($newParams) != 0) {
        $queryString_Recordset1000 = "&" . htmlentities(implode("&", $newParams));
      }
    }
    $queryString_Recordset1000 = sprintf("&totalRows_Recordset1000=%d%s", $totalRows_Recordset1000, $queryString_Recordset1000);
    et dans le body :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <form action="<?php echo $editFormAction; ?>" id="achat" name="achat" method="post">
                    <input name="client" type="hidden" id="client" value="<?php echo $_SESSION['MM_Username']; ?>" />
                    <input name="article" type="hidden" id="article" value="<?php echo $row_Recordset1000['article']; ?>" />
                    <span class="Style44">Saisir votre offre <span class="Style45">( € )</span></span><span id="sprytextfield1">
                    <input name="offre" type="text" id="offre" size="6" maxlength="6" />
                    <span class="textfieldRequiredMsg Style19">Un nombre entier!</span><span class="textfieldInvalidFormatMsg Style19">Un nombre entier!</span></span>
                    <input type="hidden" name="date_offre" value="<?php echo date("Y-m-d H:i:s" ); ?>" size="32"/>
                    <input type="submit" name="button5" id="button5" value="Valider" />
                    <input type="hidden" name="MM_insert" value="achat" />
                  </form>
    L'affichage dans la barre de navigation est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.( xxxx ).fr/Templates/%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Undefined%20variable:%20editFormAction%20in%20%3Cb%3E/homez.520/centphzu/www/Templates/panier400.php%3C/b%3E%20on%20line%20%3Cb%3E967%3C/b%3E%3Cbr%20/%3E
    ce qui indique bien que la variable editFormAction n'est pas définie ... => je bloque .
    www.masterquizz.fr - Ne vous posez plus de questions

  6. #6
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    La partie de code qui initialise (créé) cette variable $editFormAction c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
     
      ... etc ...
     
      header(sprintf("Location: %s", $insertGoTo));
     
    }
    Le problème vient que la variable $editFormAction serait certes créé, mais au bout de cette partie de code il y a une redirection (un header/location).

    Or, lorsqu'on fait une redirection cela revient au même que de repartir à 0 (au tout début) tout le script de la page indiquée dans l'URL de cette redirection.
    Ici -> $insertGoTo dont la page est : suppr_panier400.php

    En somme on recharge cette page suppr_panier400.php du début jusqu'à la fin selon le nouveau contexte, ce qui sous entend qu'on entrera plus dans les même alternatives.
    Le contexte n'étant plus le même, cette variable $editFormAction n'existe certainement pas dans ce nouveau contexte, d'où l'erreur.


    A mon avis, tu est allé dans la complexité, il y a théoriquement plus simple à faire.
    Disons que faire cela de manière trop automatisé peu faire perdre le contrôle de ton propre code, du coup, ne pas bien comprendre comment les choses se déroulent.

    Il n'y a théoriquement pas besoin d'exploiter $_SERVER['PHP_SELF'] ni $_SERVER['QUERY_STRING'], il y a moyen de générer une URL en y mettant explicitement le nom de la page où doit pointer le formulaire (l'équivalent de PHP_SELF), de même que rajouter les paramètres (un par un) qui sont nécessaires selon le contexte, donc en GET (l'équivalent de QUERY_STRING).
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  7. #7
    Membre régulier
    Homme Profil pro
    directeur hypermarché
    Inscrit en
    Avril 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : directeur hypermarché

    Informations forums :
    Inscription : Avril 2009
    Messages : 227
    Points : 111
    Points
    111
    Par défaut
    EUREKA !

    Pour y arriver , j'ai refait complètement la page ce qui m'a éclairé sur quelques modifications à apporter.

    Dans le HEAD :

    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
    $MM_flag="MM_insert";
    if (isset($_POST[$MM_flag])) {
     $row_Panier['article']=$_GET['id'];
      $MM_dupKeyRedirect='panier400.php?id='.$row_Panier['article'];
      $offre = $_POST['offre'];
      $paramart_Panier = $_GET['id'];
      $LoginRS__query = sprintf("SELECT offre FROM shop_offres WHERE offre=%s and article=%s", GetSQLValueString($offre, "text"), GetSQLValueString($paramart_Panier, "int"));
      mysql_select_db($database_centphzuone, $centphzuone);
      $LoginRS=mysql_query($LoginRS__query, $centphzuone) or die(mysql_error());
      $loginFoundUser = mysql_num_rows($LoginRS);
     
      //if there is a row in the database, the offre was found - can not add the offre
      if($loginFoundUser){
        $MM_qsChar = "?";
        //append the offre to the redirect page
        if (substr_count($MM_dupKeyRedirect,"?") >=1) $MM_qsChar = "&";
        $MM_dupKeyRedirect = $MM_dupKeyRedirect . $MM_qsChar ."requser=".$paramart_Panier;
        header ("Location: $MM_dupKeyRedirect");
        exit;
      }
    }
     
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }
     
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
      $insertSQL = sprintf("INSERT INTO shop_offres ( client, article, offre, date_offre ) VALUES ( %s, %s, %s, %s)",
     
                           GetSQLValueString($_POST['client'], "text"),
                           GetSQLValueString($_POST['article'], "int"),
                           GetSQLValueString($_POST['offre'], "text"),
                           GetSQLValueString($_POST['date_offre'], "text"));
     
     
      mysql_select_db($database_centphzuone, $centphzuone);
      $Result1 = mysql_query($insertSQL, $centphzuone) or die(mysql_error());
     
      $insertGoTo = "../Templates/suppr_panier400.php";
      if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $insertGoTo));
    }
    Remarque : Recordset1000 a été remplacé par Panier, mais c'est exactement la même requête...

    Dans le BODY :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     <form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">
                    <input name="client" type="hidden" id="client" value="<?php echo $_SESSION['MM_Username']; ?>" />
                    <input name="article" type="hidden" id="article" value="<?php echo $row_Panier['article']; ?>" />
                    <span class="Style44">Saisir votre offre <span class="Style45">( € )</span></span><span id="sprytextfield1">
                    <input name="offre" type="text" id="offre" size="6" maxlength="6" />
                    <span class="textfieldRequiredMsg Style19">Un nombre entier!</span><span class="textfieldInvalidFormatMsg Style19">Un nombre entier!</span></span>
                    <input type="hidden" name="date_offre" value="<?php echo date("Y-m-d H:i:s" ); ?>" size="32"/>
                    <input type="submit" name="button5" id="button5" value="Valider" />
                    <input type="hidden" name="MM_insert" value="form1" />
                  </form>
    Avec ces modifs , je récupère bien id par GET ainsi que requser...

    En tout cas , merci encore à RunCodePhp pour ses conseils et pour m'avoir mis sur la bonne piste.
    www.masterquizz.fr - Ne vous posez plus de questions

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

Discussions similaires

  1. [XL-2013] Une macro pour cacher une colonne qui ne fonctionne plus
    Par DavidCsame dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 02/03/2015, 14h17
  2. Recherche de date qui ne fonctionne plus.
    Par Didpa dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/08/2013, 21h16
  3. Requête pour rechercher des doublons partiels
    Par jubourbon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/06/2011, 11h22
  4. Requête mysql (rechercher tout ce qui commence par).
    Par toffff dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/03/2007, 09h44
  5. requête pour exclure les doublons.
    Par sam01 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/11/2005, 19h10

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