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 :

Formulaire après passage de PHP 5.0.4 à 5.5.10 (<?php echo $PHP_SELF; ?>)


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    ingénieur biologie
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur biologie
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Formulaire après passage de PHP 5.0.4 à 5.5.10 (<?php echo $PHP_SELF; ?>)
    Bonjour,

    Je suis nouveau sur ce forum et j'ai besoin de vos lumières.
    Dans notre labo nous avons un logiciel de gestion qui tourne sur notre site. Tout allait bien jusqu'au passage PHP 5.5.10. Tout ce qui est formulaires ne fonctionnent plus et je ne sais pas comment régler ce problème. Malgré mes recherches sur internet, je sèche.

    Voici le code qui me pose problème:

    Code PHP : 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 
    if (!$db) require ('connect.php') ; 
    ?>
    </div>
    <div align="left"> 
      <form name="form1" method="post" action="<?php echo $PHP_SELF; ?>">
        <p align="center"> 
          <input name="choix" type="radio" value="0" checked>
          <font size="+1">Afficher les offres surveillées<br>
          <input type="radio" name="choix" value="1" >
          Afficher les offres NON surveillées </font></p>
        <p align="center"><font size="+1"> 
          <input type="submit" name="Submit" value="Afficher">
          </font> </p>
      </form>
    </div>
    <hr>
    <?php /* Génération de la liste */
    if ($Submit) {
    	$result = mysql_query ("select * from fiches WHERE choix ORDER BY titre ASC");
    	while ($myrow = mysql_fetch_array ($result))  {?>
    <a href="edition.php?ident=<?php echo $myrow["identifiant"] ;?>"><?php echo $myrow["identifiant"] ;?> 
    <?php echo $myrow["titre"]; ?></a><BR>
    <?php }
    }?>
    <
    <?php mysql_close ($db);
    $db='0'; 
    exit();?>

    Pour informations si j'enlève la partie formulaire. Cela fonctionne.
    Merci de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    remplacer $PHP_SELF par $_SERVER['PHP_SELF'].

    Voir $_SERVER[...].

  3. #3
    Candidat au Club
    Homme Profil pro
    ingénieur biologie
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur biologie
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci de la réponse
    Cela ne marche toujours pas mais cela avance un peu. En remplaçant $PHP_SELF par $_SERVER['PHP_SELF'] maintenant en affichant le code source dans mon navigateur je n'ai plus action="" vide, j'ai mon lien qui apparait.
    Un peu plus de précision quand je fais "Afficher" normalement une liste de noms doit apparaître sur ma page construit à partir de la table "fiches". Doit apparaître: l'identifiant "identifiant" et le nom de l'organisme "titre" à surveiller ou pas. La surveillance se fait par le formulaire en fonction de la valeur dans la colonne "choix" qui est 0 ou 1.
    Je ne vois pas où est le problème. Une autre idée?
    Merci

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ligne 19 c'est $_POST['Submit'] et non $Submit
    Mais bon ton code doit être truffé de problème dans ce genre. Ca fait 10 ans que ton script aurait du être mis à jour

    Ligne 1 je ne vois pas a quoi sert le test if

    Ta requête n'utilise pas le "choix" selectionné mais ça ce n'est pas un problème de version de PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = mysql_query ("select * from fiches WHERE choix = " . intval($_POST['choix']) . " ORDER BY titre ASC");
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "select * from fiches WHERE choix ORDER BY titre ASC"
    WHERE choix quoi ?

    As-tu activé l'affichage des erreurs PHP ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php error_reporting(E_ALL); 	// en TEST !! ?>
    + vérifié que la connexion est OK ?

    L'extension mysql_ est obsolète aussi. (mais ça ne devrait pas être ça)
    => utiliser mysqli_ ou PDO.

  6. #6
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    En fait, ton code ressemble davantage à du PHP 4. Comme PHP 5.0 acceptait beaucoup de choses du PHP 4, c'était transparent. Mais PHP 5.5 n'est plus franchement compatible avec PHP 4, du coup ça t'explose à la figure. Comme l'a dit sabotage, tu es en train de rattraper (plus de) 10 ans et 5 versions majeures d'un coup et forcément ça prend du temps.
    En gros, tu avais une carriole à chevaux et d'un coup, tu as le dernier modèle de voiture avec boite automatique et assistance au parking, et tu essayes de la démarrer en criant "Hue !".

    Une piste pour tes formulaires : à vue de nez, ton code fonctionnait avec la directive register_globals à "on". Autrement dit, toutes les variables gobales devenaient automatiquement des variables.
    Typiquement $_SERVER['PHP_SELF'] devenait $PHP_SELF et les champs de formulaire étaient récupérés dans des variables correspondant au "name" du champ "input" (par exemple $Submit pour <input type="submit" name="Submit" value="Afficher">)
    Sauf que register_globals a disparu en PHP 5.4 pour des raisons de sécurités (après avoir été passé à Off par défaut en 4.2, c'est dire si ton code est dans les choux)

    Tu as deux possibilités pour régler ce problème:
    • La rapide mais moche : ajouter un appel à extract sur $_SERVER, $_GET $_POST au début de chaque script, ce qui a aura grosso-modo le même effet que register_globals. ça devrait fonctionner mais je déconseille fortement cette solution. En dehors des considérations de sécurité (non négligeables), ça reviendrait à atteler les chevaux de la carriole à ta voiture pour la faire avancer.
    • La correcte, mais qui va prendre du temps : passer en revue chaque formulaire et transformer toutes les variables $inputName en $_POST['inputName'], les $PHP_SELF en $_SERVER['PHP_SELF'] et ainsi de suite. Bref, apprendre à conduire ta voiture avec boite auto.


    Pour le reste, tu peux regarder du côté de la doc : Migration de PHP 5.0.x à PHP 5.1.x, Migration de PHP 5.1.x à PHP 5.2.x, Migration de PHP 5.2.x vers PHP 5.3.x, Migration de PHP 5.3.x à PHP 5.4.x et Migration de PHP 5.4.x à PHP 5.5.x, en te focalisant sur les rubriques "ce qui ne va plus marcher dans la nouvelle version".
    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]

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bref. Comme le dit si bien Celira :

    Il faut passer du "Salon de l'Agriculture" au "Salon de l'Auto" !

  8. #8
    Candidat au Club
    Homme Profil pro
    ingénieur biologie
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur biologie
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci ça avance pour information, je ne suis pas programmeur ☺.
    Un peu d’histoire. J’ai repris le site de la fac qui date de 10 ans et je les refais sur Joomla. Il y a juste ce logiciel de suivi d’appels d’offre fait maison par une personne dont nous n’avons plus contacte qui me pose problème. Je désire le faire fonctionner comme les gestionnaires avaient l’habitude c.à.d. mise à jour des nouvelles offres et les faire apparaître en popup à l’ouverture du site (comme sur l’nacien). Mais je me suis heurté comme vous avez pu le voir à plein de problème de langage PHP obsolète d’où mon appel. Appel qui porte ces fruits car cela avance. Encore merci.
    Revenons aux dernières modifications :
    Concernant la colonne choix, je pensais que cela allait être plus clair pour vous mais en fait elle s’appelle « copernic ». Et dans cette colonne il y a soit chiffre 1 qui correspond « afficher les offres surveillées » soit le chiffre 0 pour les non surveillées.
    Les dernières modifications ont permis de faire apparaître les offres surveillées. Super ! Mais quand je coche non surveillées j’ai la même chose. Cela ne prend pas en compte le 0

    Rappel :
    Code de départ avec plein d’instructions obsolètes
    Code PHP : 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
    <?php 
    if (!$db) require ('connect.php') ; 
    ?>
      <font color="#0000FF" size="+3"><strong>Entr&eacute;es surveill&eacute;es (ou non) par Copernic</strong></font> 
      <hr>
    </div>
    <div align="left"> 
      <p><font size="+1">Ce script va afficher les numero d'identifiant des entr&eacute;es 
        d&eacute;clar&eacute;es comme &eacute;tant surveill&eacute;es ou non (menu) 
        par Copernic Agent, suivis des titres respectifs de ces entr&eacute;es. Il 
        suffit de cliquer sur l'un de ces titres pour consulter ou modifier l'entr&eacute;e 
        en question. <em>Ce script est une initiative personnelle : les offres apparaitront 
        class&eacute;es par ordre alphab&eacute;tique. Me contacter pour affiner (modifier 
        l'ordre, afficher les liens web, ajouter un menu de choix de classement...).</em></font></p>
      <hr>
     
      <form name="form1" method="post" action="<?php echo $PHP_SELF; ?>">
        <p align="center"> 
          <input name="coper" type="radio" value="<?php echo $myrow["copernic"] ?>" checked>
          <font size="+1">Afficher les offres surveill&eacute;es.<br>
          <input type="radio" name="coper" value="(NOT copernic)" >
          Afficher les offres NON surveill&eacute;es. </font></p>
        <p align="center"><font size="+1"> 
          <input type="submit" name="Submit" value="Afficher">
          </font> </p>
      </form>
      >
    </div>
    <hr>
    <?php /* Génération de la liste */
    if ($Submit) {
    	$result = mysql_query ("select * from fiches WHERE $coper ORDER BY titre ASC");
    	while ($myrow = mysql_fetch_array ($result))  {?>
    <a href="edition.php?ident=<?php echo $myrow["identifiant"] ;?>"><?php echo $myrow["identifiant"] ;?> 
    <?php echo $myrow["titre"]; ?></a><BR>
    <?php }
    }?>

    Code qui fonctionne presque après modifications:

    Code PHP : 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
    <?php 
    Require ('connect.php') ; 
    ?>
      <font color="#0000FF" size="+3"><strong>Entr&eacute;es surveill&eacute;es (ou non) par Copernic</strong></font> 
      <hr>
    </div>
    <div align="left"> 
      <p><font size="+1">Ce script va afficher les numero d'identifiant des entr&eacute;es 
        d&eacute;clar&eacute;es comme &eacute;tant surveill&eacute;es ou non (menu) 
        par Copernic Agent, suivis des titres respectifs de ces entr&eacute;es. Il 
        suffit de cliquer sur l'un de ces titres pour consulter ou modifier l'entr&eacute;e 
        en question. <em>Ce script est une initiative personnelle : les offres apparaitront 
        class&eacute;es par ordre alphab&eacute;tique. Me contacter pour affiner (modifier 
        l'ordre, afficher les liens web, ajouter un menu de choix de classement...).</em></font></p>
      <hr>
     
      <form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <p align="center"> 
          <input name="coper" type="radio" value="copernic" checked>
          <font size="+1">Afficher les offres surveill&eacute;es.<br>
          <input type="radio" name="coper" value="(NOT copernic)" >
          Afficher les offres NON surveill&eacute;es. </font></p>
        <p align="center"><font size="+1"> 
          <input type="submit" name="Submit" value="Afficher">
          </font> </p>
      </form>
      >
    </div>
    <hr>
    <?php /* Génération de la liste */
    if ($_POST['Submit']) {
    	$result = mysql_query ("select * from fiches WHERE copernic ORDER BY titre ASC");
    	while ($myrow = mysql_fetch_array ($result))  {?>
    <a href="edition.php?ident=<?php echo $myrow["identifiant"] ;?>"><?php echo $myrow["identifiant"] ;?> 
    <?php echo $myrow["titre"]; ?></a><BR>
    <?php }
    }?>

    J'ai changé par car c'était une erreur signalée

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je t'ai déjà indiqué la correction dans mon dernier message.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Candidat au Club
    Homme Profil pro
    ingénieur biologie
    Inscrit en
    Mars 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur biologie
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci ça marche . Plus qu'une 15aine de fichiers à modifier. Néophyte que je suis, Je vais essayer d'appliquer vos remarques. J'en ai déjà un (le principale) qui fourmille d'erreurs.

Discussions similaires

  1. [MySQL] Tri après passage en php 5.4
    Par genesia dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 21/04/2015, 22h57
  2. Réponses: 2
    Dernier message: 15/02/2011, 15h12
  3. Réponses: 4
    Dernier message: 12/03/2007, 11h48
  4. Réponses: 1
    Dernier message: 04/06/2006, 00h35

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