$Php_self ?

kronos12 -  
 kronos12 -
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. DiabloBros
     
    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 -
    0
  2. kronos12
     
    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
    0
  3. tartefion Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   7
     
    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.
    0
  4. kronos12
     
    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 !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. tartefion Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   7
     
    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 ^^
    0
  7. kronos12
     
    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 ...
    0
    1. tartefion Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   7
       
      je suis étonné que ça fonctionne sous la forme $_server['php_self'] oO
      0
    2. kronos12
       
      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
      0
    3. tartefion Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   7
       
      De rien ^^
      Pour ton erreur, la ligne doit être indiqué ;)
      0
    4. kronos12
       
      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 ...
      0