$Php_self ?

Bonjour,

voila je suis en train d'écrire un programme en php qui a pour but de m'afficher dans un tableau tout ce qui se trouve dans une table de ma base de données, avec à coté de ce tableau des cases à cocher pour pouvoir supprimer une ligne de ma base de données (je travaille sur easyphp)
je n'ai pas mon code sur moi je le posterai demain mais j'ai un problème , à l'éxécution du formulaire il me donne deux variables non définies dont $Php_self ...
est ce vraiment utile de la mettre ?
sinon comment et ou la déclarer ?
je suis bloqué dans mon code j'espere que quelqu'un pourra m'aider ...

merci d'avance

cordialement

6 réponses

  1. j'avais fais ca il ya un moment deja :
    https://codes-sources.commentcamarche.net/

    là bien sur cele gere des fichier , mais cela peu etre des client ou autre peu importe ^^

    tu trouvera surment la reponse a ton soucie ...
    __
    _/ \_____________________
    \__/ - diablobros was here -
    1. Merci DiabloBros je jetterai un oeil à ton code plus tard ;)

      comme dit hier je vous envoie mon code :

      <html>
      <SCRIPT>
      
      var coche = true;
      
      function cocher(){
      var frm = document.Suppression;
      
          for(i=0;i< frm.length;i++)
          {
            e=frm.elements[i];
            if (e.type=='checkbox')  e.checked = coche;
          }
      
          coche = !(coche);
      }
      </SCRIPT>
      <?php
      
      /*****************************/
      /* Formulaire de sélection   */
      /*****************************/
      
          if (!($Lien = mySql_connect("localhost", "root", "")))
           {
            print("<H1><FONT color=\"red\">La connexion a echoué!</Font></H1>\n") ;
            print("<BR><H2>Arrêt immédiat!</H2>\n") ;
            exit() ;
           }
      
          if ( !(mySql_select_db("csv_db",$Lien))){
      
           print("<H1><FONT color=\"red\">Erreur Interne</Font></H1>\n") ;
           print("<BR><H2>Arrêt immédiat!</H2><BR>\n") ;
           print("<H3>" . mySql_errno()." : ". mySql_error(). "</H3>\n") ;
           exit() ;
          }
      
      
          $Requete = "Select * from parc_informatique ORDER BY NomCalife DESC" ;
      
          if(!$Resultat = mySql_query($Requete,$Lien)){
           print("<H1><FONT color=\"red\">Erreur Interne</Font></H1>\n") ;
           print("<BR><H2>Arrêt immédiat!</H2><BR>\n") ;
           print("<H3>" . mySql_errno()." : ". mySql_error(). "</H3>\n") ;
           exit() ;
          }
      
      
          $presentation=array("fond"=>array("#D3DCE3","#CCCCCC","#DDDDDD"),
                              "police"=>array("#000000"));
      	
          echo ("<TABLE><FORM NAME=\"Suppression\" Action=\"$PHP_SELF\" Method=\"get\">\n");
      
          // Affichage de l'entete
      
          print("<TR BGCOLOR=\"".$presentation['fond'][0]."\">\n");
          print("<TD><INPUT TYPE=\"checkbox\" name=\"Tous\" OnClick=\"cocher();\">\n");
          print("</TD>\n");
      
          print("<TD><B><FONT COLOR=\"".$presentation['police'][0]."\">\n");
          print("Prenom\n");
          print("</FONT></B></TD>\n");
      
          print("<TD><B><FONT COLOR=\"".$presentation['police'][0]."\">\n");
          print("Nom\n");
          print("</FONT></B></TD>\n");
      
          print("<TD><B><FONT COLOR=\"".$presentation['police'][0]."\">\n");
          print("NomCalife\n");
          print("</FONT></B></TD>\n");
      	
      	print("<TD><B><FONT COLOR=\"".$presentation['police'][0]."\">\n");
          print("Service\n");
          print("</FONT></B></TD>\n");
      	
      	print("<TD><B><FONT COLOR=\"".$presentation['police'][0]."\">\n");
          print("Libelle\n");
          print("</FONT></B></TD>\n");
      	
      	print("<TD><B><FONT COLOR=\"".$presentation['police'][0]."\">\n");
          print("Constructeur\n");
          print("</FONT></B></TD>\n");
      	
      	print("<TD><B><FONT COLOR=\"".$presentation['police'][0]."\">\n");
          print("NumSérie\n");
          print("</FONT></B></TD>\n");
      	
      	print("<TD><B><FONT COLOR=\"".$presentation['police'][0]."\">\n");
          print("Date_Application\n");
          print("</FONT></B></TD>\n");
      
          $index = 0;
          $NbCouleur = count($presentation['fond']) - 1;
      
          // Remplissage du tableau
      
          while($donnees = mysql_fetch_object($Resultat))
          {
          print("<TR BGCOLOR=\"".$presentation['fond'][$index%$NbCouleur + 1]."\">\n");
      
          print("<TD><INPUT TYPE=\"checkbox\" name=\"Ref[]\" value=\"$donnees->Prenom\"></TD>\n");
      
          print("<TD>\n");
          print($donnees->Prenom."\n");
          print("</FONT></TD>\n");
      
          print("<TD>\n");
          print($donnees->Nom."\n");
          print("</FONT></TD>\n");
      
          print("<TD>\n");
          print($donnees->NomCalife."\n");
          print("</FONT></TD>\n");
      	
      	print("<TD>\n");
          print($donnees->Service."\n");
          print("</FONT></TD>\n");
      	
      	print("<TD>\n");
          print($donnees->Libelle."\n");
          print("</FONT></TD>\n");
      	
      	print("<TD>\n");
          print($donnees->Constructeur."\n");
          print("</FONT></TD>\n");
      	
      	print("<TD>\n");
          print($donnees->NumSérie."\n");
          print("</FONT></TD>\n");
      	
      	print("<TD>\n");
          print($donnees->Date_Application."\n");
          print("</FONT></TD>\n");
      
          $index ++;
      
          }
          print("<TR><TD colspan=\"4\"><input type=\"submit\"></TD>\n");
          print("<input type=\"hidden\" name=\"Validation\" value=\"1\">");
          print("</FORM></TABLE>\n");
      
      /*******************************/
      /* Formulaire de confirmation  */
      /*******************************/
      
      	if (isset($Validation)){
      
          print("<FORM ACTION=\"$PHP_SELF\" METHOD=\"get\" Name=\"valid\">\n");
          print("<TABLE>");
      
          if (count($Ref)==0) {
           print("<TR><TD><H1>Vous n'avez saisi aucune valeur</H1></TD>\n");
           print("<TR><TD><INPUT TYPE=\"submit\" value=\"Retour\"></TD>");
      
          }else{
      
               print("<TR><TD><H1>Etes-vous certains de vouloir effacer les données</H1></TD>\n");
               print("<TR><TD><Input type=\"submit\" name=\"Confirmation\" value=\"Oui\">\n");
               print("<Input type=\"submit\" name=\"Confirmation\" value=\"Non\"></TD>");
      
          // on replace toutes les references.
      
          for($i=0;$i<count($Ref);$i++)
               print("<input type=\"hidden\" name=\"Ref[]\" value=\"".$Ref[$i]."\">\n");
      
          }
          print("</TABLE></FORM>");
          exit();
      
      }
      
      
      /*******************************/
      /* Suppression des données     */
      /*******************************/
      
      	if ($Confirmation=='Oui') {
      	
      	if (!($Lien = mySql_connect("localhost", "root", "")))
      	{
      	print("<H1><FONT color=\"red\">La connexion a échoué!</Font></H1>\n");
      	print("<BR><H2>Arrêt immédiat!</H2>\n") ;
      	exit() ;
      	}
          if ( !(mySql_select_db("csv_db",$Lien))){
           print("<H1><FONT color=\"red\">Erreur Interne</Font></H1>\n") ;
           print("<BR><H2>Arrêt immédiat!</H2><BR>\n") ;
           print("<H3>" . mySql_errno()." : ". mySql_error(). "</H3>\n") ;
           exit() ;
          }
          $Requete = "DELETE FROM parc_informatique WHERE NomCalife IN (";
      
      	for($i=0;$i<count($Ref)-1;$i++)
          $Requete .= $Ref[$i] . ",";
          $Requete .= $Ref[count($Ref)-1] . ")";
          
          if(!$Resultat = mySql_query($Requete,$Lien)){
           print("<H1><FONT color=\"red\">Erreur Interne</Font></H1>\n") ;
           print("<BR><H2>Arrêt immédiat!</H2><BR>\n") ;
           print("<H3>" . mySql_errno()." : ". mySql_error(). "</H3>\n") ;
           exit() ;
          } else {
           print("<H1><FONT color=\"red\">Commande réussie</Font></H1>\n") ;
           print("<BR><H2>Vos données sont effacées</H2><BR>\n") ;
      exit() ;
          }
      
      }
      
      ?>
      </html>
      


      Voila j'ai mis en gras les deux erreurs que me trouve easyphp
      les variables $Php_self et $confirmation ne sont pas définies et je suis bloqué, mon tableau représentant ce qu'il y a dans ma base s'affiche bien mais pour la demande de confirmation et la requête de suppression rien ne s'effectue ...

      merci d'avance !

      cordialement
      1. Bonjour,

        Tu ne peux pas utilisé de variable non déclaré dans des conditions.
        Ici $confirmation est utilisé dans un if sans être déclaré, d'où l'erreur.
        La ligne if($confirmation == "oui") signifie que l'on effectue un test sur la valeur de $confirmation or dans ton code on ne voit aucun éléments qui la définissent.

        Ensuite pour ta variable $PHP_self, ça ne serait pas plutôt $_SERVER['PHP_SELF'] ? Qui indiquerait que ton formulaire doit agir sur la page en cours.

        Au plaisir.
        1. Concernant la variable $confirmation ce que je voudrais faire en fait c'est demander une confirmation (!) à l'utilisateur et que selon sa réponse, oui ou non, la variable $confirmation prendra la valeur oui ou non selon le choix de l'utilisateur , comme ça il suffirait de tester cette variable à la publication du formulaire ...
          je débute en php je pensais que cela suffirait ... que dois je faire pour qu'elle soit déclarée ?

          concernant la variable $php_self , j'ai effectivement testé $_server['php_self'] mais j'obtiens cette erreur :

          Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in D:\Program Files\EasyPHP-5.3.3\www\suppression'z.php on line 53

          Je pensais aussi qu'en mettant $_server['php_self'] ça fonctionnerait mais ça n'est pas le cas ...

          Merci pour ton aide !
          1. Pour confirmation tu peux le faire en javascript...
            Ou, plus simble si tu ne connais pas le js, faire un petit formulaire de confirmation :D

            /* l'adresse de ta page */
            $ou = $_SERVER['PHP_SELF']; /

            /* Ton formulaire */
            echo "<form action='$ou' method='POST'>";
            echo "<select name='choix'>";
            echo "<option value='oui'>Oui</option>";
            echo "<option value='non'>Non</option>";
            echo "</select>";
            echo "<input type='submit' /></form>";

            /* Déclaration de $confirmation */
            if(isset($_POST['choix']))
            {
            $confirmation = $_POST['choix'];
            }

            Pour ton autre erreur, il faut - impérativement - mettre les caractères en majuscule sinon ça ne fonctionne pas : $_SERVER['PHP_SELF'] puisque cette variable est déjà défini, il faut donc l'écrire correctement ^^
            1. rectification :
              $_server['php_self'] fonctionne je devais rajouter des accolades car la variable est dans une chaine de caractères je ne l'avais pas différencié ...

              Me reste toujours le probleme pour définir $Confirmation...

              Actuellement le code pour afficher le tableau avec les cases à cocher a l'air de bien fonctionner mais je doute pour celui de la demande de confirmation à l'utilisateur et celui de la suppression ...
              1. je suis étonné que ça fonctionne sous la forme $_server['php_self'] oO
              2. nonon ne t'en fais pas je l'ai évidemment écrit en majuscules dès le début , c'est juste que ici je ne l'ai pas fait ^^
                merci pour ton petit code je ne sais pourquoi je n'y ai pas pensé enfin encore merci à toi !!
                il me reste une dernière erreur, pas la moins chiante malheureusement ...
                j'ai du oublier une accolade ou un guillemet quelque part car j'obtiens "unexpected $end" lol j'ai plus qu'a chercher!
                encore merci a toi
              3. De rien ^^
                Pour ton erreur, la ligne doit être indiqué ;)
              4. non ça me donnait la toute dernière ligne alors qu'il n'y a rien ...
                mais j'ai trouvé et il me manquait bien une accolade ;)
                Je n'ai plus d'erreur (détectée) en revanche quand j'essaie de supprimer une ligne rien ne se passe je n'ai même pas la demande de confirmation et encore moins la suppression =(
                Ma page ne fait que se recharger sans rien modifier
                je ne sais pas pourquoi et ou est mon erreur ...