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 :

PHP 5.5 en local est devenu obsolète


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 16
    Par défaut PHP 5.5 en local est devenu obsolète
    Bonjour à tous,

    Je travail sur un site web en local qui est un clone de la version en ligne. Le site est actuellement hébergé chez OVH et il m'est indiqué que je dois mettre à niveau PHP mais je ne peux pas puisque je dois revoir toutes les fonctions de mon code. En effet, j'ai encore beaucoup de fonctions à base de mysql_query qui sont obsolètes. Tout fonctionnaient pour le mieux et du jour au lendemain j'ai eu ce message sur mon site en local :
    Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in ...
    Je comprends totalement le message comme quoi je dois revoir mes fonctions, car elles sont obsolètes et que je dois passer par PDO. Mais je ne vois pas en quoi cela apparaît sur le site en local. À ce que je sache, MAMP me permet de travailler avec pratiquement n'importe quelle version de PHP.

    Certaines variables ne sont plus du tout reconnu, et j'ai ce message d'erreur :
    Notice: Undefined index: titre in /Applications/MAMP/htdocs/Site/www/recherche.php on line 134
    Pourtant, quand je vais à la ligne indiquée, j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($_POST['titre']))
    {
         $titre = $_POST['titre'];
    }
    Je ne comprends vraiment pas pourquoi du jour au lendemain ça ne fonctionne plus.

    Auriez-vous une idée svp ?

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Quand j’ai été confronté au même problème j’ai fait comme ça.

    https://www.developpez.net/forums/d1...-mysql-mysqli/

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 16
    Par défaut
    Et disons dans le cas où je souhaite vraiment passer au PHP 7.x est-ce qu'il m'est recommandé de passer d'abord par mysqli ou direct en PDO ? Je tiens également à préciser que le projet en cours à uniquement été écrit en procédural.

  4. #4
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Pour une nouvelle application, je recommande fortement de démarrer avec PDO, mais si tu veux juste rendre ta vieille application compatible PHP7, mysqli fera très bien l'affaire. Fondamentalement, mysqli en mode procédural a été conçu pour permettre de remplacer facilement l'ancienne API mysql.
    Quant à pourquoi tu vois les messages sur ton environnement local, tu as peut-être tout simplement monter le niveau d'erreur affiché. (mysql est obsolète depuis PHP 5.5, donc les messages sont présents à partir de cette version)

    @Badaze : c'est une bonne technique ton système. Évidemment, ça n'apprend pas au dev à coder avec les nouvelles API, mais pour un patch sur de l'existant, ça suffit très bien.
    Il manque juste la fonction d'échappement mysql_real_escape_string. Au passage, si c'est pour une application PHP7, tu n'as même pas besoin de renommer les fonctions en x_mysql, vu que les fonctions mysql n'existent plus.
    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]

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 16
    Par défaut
    Citation Envoyé par Celira Voir le message
    Pour une nouvelle application, je recommande fortement de démarrer avec PDO, mais si tu veux juste rendre ta vieille application compatible PHP7, mysqli fera très bien l'affaire. Fondamentalement, mysqli en mode procédural a été conçu pour permettre de remplacer facilement l'ancienne API mysql.
    Quant à pourquoi tu vois les messages sur ton environnement local, tu as peut-être tout simplement monter le niveau d'erreur affiché. (mysql est obsolète depuis PHP 5.5, donc les messages sont présents à partir de cette version)
    Et ça ne gêne en rien de réécrire l'application en utilisant PDO pour les échanges avec la BDD et tout en restant en procédural? J'ai beaucoup trop de fichiers pour passer tout en POO.

  6. #6
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Citation Envoyé par Celira Voir le message
    ...
    @Badaze : ...
    Il manque juste la fonction d'échappement mysql_real_escape_string. Au passage, si c'est pour une application PHP7, tu n'as même pas besoin de renommer les fonctions en x_mysql, vu que les fonctions mysql n'existent plus.
    Effectivement. Dans mon cas les paramètres passés aux requêtes sont normés et donc facilement contrôlés et je n’ai pas de fonction de recherche.

    J’ai dû mettre un x_ devant les noms de fonctions car j’ai fait les évolutions alors que j’était encore en 5.x en local et en prod.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par getPrenom() Voir le message
    Et ça ne gêne en rien de réécrire l'application en utilisant PDO pour les échanges avec la BDD et tout en restant en procédural? J'ai beaucoup trop de fichiers pour passer tout en POO.
    Basiquement, PDO est une classe, donc tu vas forcément faire un tout petit peu de POO. Mais l'avantage de PHP c'est que tu peux tout à fait utiliser des objets dans un code procédural
    Si tu fais un remplacement simple, tu peux très bien passer de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query = 'SELECT * FROM foo WHERE bar=1;';
    $result = mysql_query($query);
    $arr = mysql_fetch_assoc($result);
    à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query = 'SELECT * FROM foo WHERE bar=1;';
    $result = $pdo->query($query);
    $arr = $result->fetch();
    Cela dit, la grande force de PDO, ce sont les requêtes préparées et là, il va te falloir pas mal de réécritures. Si tu t'intéresses à PDO tu peux lire le mini-tuto : PDO une soupe et au lit ! et son grand-frère Comprendre PDO.
    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]

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 16
    Par défaut
    Merci, et dans le cas ou je souhaite remplace ce code $affiche_last_edition=mysql_fetch_array($exec_select_last_edition);, je fais comment ?

    Je sais que je peux faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while($affiche_annee=$exec_select_annee->fetch()){
          //code quelconque
    }
    Mais il y a des moments dans le code ou je vois uniquement le fetch array sans qu'il n'y ait de while. Est-ce que cela sert à quelque chose de faire $affiche_last_edition=mysql_fetch_array($exec_select_last_edition); sans boucle while ? J'ai de voir si ça me retourne quelque chose et il n'y a rien d'intéressant. Je suis désolé d'insister avec mes questions mais j'ai vraiment besoin de comprendre.

Discussions similaires

  1. (Easy PHP) sur un réseau locale
    Par Furius dans le forum Développement
    Réponses: 17
    Dernier message: 19/08/2011, 10h23
  2. Réponses: 0
    Dernier message: 19/03/2010, 11h02
  3. [AJAX] Éxécuter du php lorsque qu'un tableau est cliqué
    Par tyarak dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 10/10/2006, 18h24
  4. [PHP-JS] Mettre si il est vide
    Par kevinf dans le forum Langage
    Réponses: 4
    Dernier message: 05/10/2006, 09h34
  5. IE est devenu fou :(
    Par kagura dans le forum IE
    Réponses: 13
    Dernier message: 06/08/2006, 15h19

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