PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 27-10-2019 18:00:31

steph-ero
Membre
Inscription : 27-10-2019
Messages : 3

migration de mon application php 4 en php 7.3

Bonjour à tous,
Je vais avoir besoin d'un coup de main, voila !!! avec les fêtes qui approche mes enfants m ont demandé (comme tous les ans) de remettre en ligne une petite application php "mygift" que j'avais trouvé sur le web il y a quelques années et qui leur plait beaucoup . Seulement voilà j'ai mis à jour ma debian cette année et évidemment l'application ne marche plus avec le php 7.3.
Donc je vais avoir besoin de vous pour corriger tout les soucis (enfin j'espère).
J'ai donc commencé par chercher un outil pour me permettre de trouver et lister toutes les [error] et [warning] que php 7.* me trouvent et j'ai trouvé .
J'ai donc maintenant une liste de 4 pages d'erreurs qui s'affiche comme ça :


> Line 9: [Error] PHP 4 constructors are now deprecated
    function GiftList($listId)
    {
    }


File: /var/www/html/cadeaux/includes/Database.sqlite.class.php
> Line 12: [Error] PHP 4 constructors are now deprecated
    function Database($server, $user, $password, $database)
    {
    }


File: /var/www/html/cadeaux/includes/Category.class.php
> Line 8: [Error] PHP 4 constructors are now deprecated
    function Category($id = '')
    {
    }


File: /var/www/html/cadeaux/includes/Database.class.php
> Line 13: [Error] PHP 4 constructors are now deprecated
    function Database($server, $user, $password, $database)
    {
    }
> Line 69: [Error] Removed function "mysql_num_rows" called
    mysql_num_rows($result);
> Line 70: [Error] Removed function "mysql_fetch_assoc" called
    mysql_fetch_assoc($result);
> Line 76: [Error] Removed function "mysql_free_result" called
    mysql_free_result($result);
> Line 89: [Error] Removed function "mysql_fetch_assoc" called
    mysql_fetch_assoc($result);
> Line 93: [Error] Removed function "mysql_free_result" called
    mysql_free_result($result);
> Line 105: [Error] Removed function "mysql_fetch_assoc" called
    mysql_fetch_assoc($result);
> Line 106: [Error] Removed function "mysql_free_result" called
    mysql_free_result($result);
 

etc.......

n'étant vraiment pas très fort en PHP je m'adresse à vous pour m'aider à corriger .

Merci d'avance à qui voudra bien m'aider

Hors ligne

#2 27-10-2019 18:07:05

steph-ero
Membre
Inscription : 27-10-2019
Messages : 3

Re : migration de mon application php 4 en php 7.3

J'ai peut être un début de réponse pour la première erreur :

Les constructeurs de style PHP 4 (les méthodes qui portent le même nom que la classe dans laquelle elles sont définies) sont obsolètes et seront supprimés dans le futur. PHP 7 émettra E_DEPRECATED si un constructeur PHP 4 est le seul constructeur défini dans une classe. Les classes qui implémentent une méthode __construct () ne sont pas affectées.

Ce qui veux donc dire je suppose qu'il faut que je change soit le nom de la classe soit le nom de la fonction ?

(j'écrit au fur et à mesure de mes recherches vous m'excuserez)

Ahhh!!!! non !!!  y a une histoire de (__construct)  mais j'ai pas tout compris  ?

en effet si je remplace  function GiftList($listId)  par function __construct($listId) que je relance mon "utilitaire" de debbugage  cette erreur n'apparait plus, mais étant donnée que je change le nom de cette fonction je sent pointer d'autres erreurs à venir !!   non ?
d'autant plus que j'ai d'autres fonctions définies dans cette class et que pour le coup j'ai pas d'erreurs sur ces autres fonctions ?????   , bon j'attend vos réactions !

je vous joint ci-dessous le contenu du fichier d'origine en question :


<?php

class GiftList {

  var $listId;
  var $gifts;
  var $ownerName;
 
  function GiftList($listId)
  {
    global $database, $user;
   
    if (empty($listId))
      $listId = $user->id;
     
    $this->listId = $listId;
    $sqlQuery =   "SELECT g.*, ".$database->timestamp("g.created")." as ts_created, ".$database->timestamp("g.updated")." as ts_updated, u.id as claimerId, u.name as claimerName, o.name as ownerName, cat.category as category_name  FROM gft_category cat, gft_gift g
             LEFT OUTER JOIN gft_user o ON g.owner=o.id
             LEFT OUTER JOIN gft_claim c ON c.giftId=g.id
             LEFT OUTER JOIN gft_user u ON c.userId=u.id ";
    $whereClause =  "WHERE forUser = '".addslashes($listId)."' AND g.category = cat.id ";
    if ($listId != $user->id) {
      $sqlQuery .= "LEFT OUTER JOIN gft_visibility v ON (v.giftId=g.id AND v.userId = '".addslashes($user->id)."') ";
      $whereClause .= "AND (restricted = 0 OR v.userId is not null) ";
    }
    $whereClause .= "ORDER BY offered, offeredOn, cat.category, g.name";

    $tmpGifts = $database->fetch($sqlQuery.$whereClause);
    $curTime = time();
    foreach ($tmpGifts as $tmpGift) {
      if (!is_array($this->categories) || !in_array($tmpGift["category_name"], $this->categories))
        $this->categories[] = $tmpGift["category_name"];

      if ($curTime-$tmpGift["ts_created"] < 4*24*3600)
        $tmpGift["new"] = true;
      else if ($curTime-$tmpGift["ts_updated"] < 4*24*3600)
        $tmpGift["recent"] = true;
      $this->gifts[$tmpGift["category_name"]][] = $tmpGift;
    }    
    $database->loadObject($this, "select name as ownerName from gft_user where id='".addslashes($listId)."'");
  }

  function numFree() {
    $numFree = 0;
    foreach ($this->gifts as $giftArr) {
      if (empty($giftArr["claimerId"]))
        $numFree++;
    }
    return $numFree;
  }
   
  function sendByEmail($to, $format = "")
  {
    global $user, $strings;
   
    //ob_start();
    $message = Controler::processTemplate("emailTextList", $user, $this);
    //$message = ob_get_contents();
    //ob_end_clean();  
    $result = $user->sendMail($to, $strings["LANG_EMAIL_SUBJECT"], $message, "X-Mailer: myGifts/PHP");
    //echo "$message";
    return $result;
  }
 
  function getParams()
  {
  }
}

Controler::registerHandler("giftList", "display", "GiftList", array("id"));
Controler::registerHandler("myList", "display", "GiftList", array("user"), 1);
Controler::registerHandler("sendByEmail", "all", "GiftList", array("user", "to"));

?>

Merci de votre aide et bonne soirée

Dernière modification par steph-ero (27-10-2019 18:40:24)

Hors ligne

#3 28-10-2019 13:18:34

tof73
Membre
Inscription : 21-12-2014
Messages : 156
Site Web

Re : migration de mon application php 4 en php 7.3

steph-ero a écrit :

en effet si je remplace  function GiftList($listId)  par function __construct($listId) que je relance mon "utilitaire" de debbugage  cette erreur n'apparait plus, mais étant donnée que je change le nom de cette fonction je sent pointer d'autres erreurs à venir !!   non ?

non
le constructeur est bien appelé, qu'il s'appelle __construct ou GiftList

https://www.linuxtricks.fr/wiki/php-pas … es-de-base

Hors ligne

#4 30-10-2019 09:36:40

steph-ero
Membre
Inscription : 27-10-2019
Messages : 3

Re : migration de mon application php 4 en php 7.3

tof73 a écrit :

non
le constructeur est bien appelé, qu'il s'appelle __construct ou GiftList

Ok merci pour ton aide

Hors ligne

Pied de page des forums