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 :

Problème compatibilité PHP4 et PHP5


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut Problème compatibilité PHP4 et PHP5
    Bonjour,

    Je tente la migration MySQL 3.23 PHP4 vers PHP5 et MySql5.

    J'ai un problème sur une fonction dont les variables sont envoyés d'une certaine manière.

    Voici un exemple concret, variable à suivre : $query ($str_query dans la fonction du dessous).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if (!res_setSearchQuery($query = ''))												//requête de recherche
    		{
    			err_set(__FILE__, __LINE__);
    			return SHARED_FALSE;
    		}
    		$res = false;
     
    		if (!$res = mysql_query($query))													//extrait les infos des lots et agence, pas tarifs
    		{
    			db_mysql_trace($dg);
    			$dg['query'] = $query;
    			err_set(__FILE__, __LINE__, 'ERR_MYSQL_QUERY', $dg);
    			return SHARED_FALSE;
    		}
    Il semblerait que la fonction res_setSearchQuery renvoie vrai alors que la variable $query reste vide.

    Code : 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
    38
    39
    40
    41
    function res_setSearchQuery(&$str_query)
    	{
    		static $_f = 'res_setSearchQuery';
     
     
    		if (!res_setSyndStr($syndstr = ''))											//ids agences d'un syndicat
    		{
    			err_set(__FILE__, __LINE__);
    			return SHARED_FALSE;
    		}
     
    		//lib_trace_var($_f, 'syndstr', $syndstr);
     
    		$vn_searchtype = $vn_net_id = $vn_agency_id = '';
    		$sharedstr = '';
     
    		$vn_searchtype	= &$GLOBALS['vn_searchtype'];
    		$vn_net_id		= &$GLOBALS['vn_net_id'];
    		$vn_agency_id	= &$GLOBALS['vn_agency_id'];
     
    		$sharedstr		= "SELECT lots.RefAgence,lots.No_Lot,lots.Ref_Lot,lots.No_Tarif,lots.Type_Bien,lots.Type_Caution,lots.Taux_Caution,lots.DateBlocage,lots.Lot_Bloque,lots.Nb_Couchages,lots.Surf_Totale,lots.AfficherPrixInternet,lots.Abattement,agence.RaisonSociale,agence.TauxAcompte,agence.TypeArrondi,agence.Mail,agence.MailFormat,agence.Adresse1,agence.Adresse2,agence.MenageIntegre FROM lots LEFT JOIN agence ON agence.RefAgence=lots.RefAgence";
     
     
    		//
    		//Recherche par le formulaire client (pour les sites clients)
    		//
    		if($_POST['searchtype'] == 'form_client')
    		{
    			//echo "Formulaire client";
    			$_SESSION['agency_id'] = $_POST['RefAgence'];
     
    			$str_query = "$sharedstr WHERE (lots.RefAgence = '".$_POST['RefAgence']."'";
     
    			res_setCritStr($critstr = '');
     
    			if (!lib_emp_str($critstr))
    						$str_query .= " AND $critstr";
     
    			$str_query .= ')';
    		}
    else ... je coupe la
    Ce code se répète avec des else et si aucun cas de $_POST['searchtype'] n'est accepté une erreur est renvoyé sinon ca renvoie vrai.

    Donc théoriquement pour arriver jusqu'à l'exécution de $res = mysql_query($query) $query ne peux pas être vide.

    Pourtant il l'est d'après l'erreur retourné par MySQL. J'en déduis que la méthode par référence utilisé pour le transfert du contenu de la variable $query n'est plus supporté avec PHP5 ?

    Merci

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour Harry,

    Pour le passage par référence, seules les variables, les nouveaux objets et les retour de référence par une fonction doivent être utilisés. Or, dans ton code, c'est une expression qui est passée. Il faut donc que tu initialises $query avant d'appeler ta fonction.

    Un exemple peut-être plus parlant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    function test(&$var)
    {
        $var = 'ok';
    }
     
    // pas bon
    test($var = 'ko');
    echo 'test($var = \'ko\') : '.$var;
     
    // bon ! ;-)
    $var = 'ko';
    test($var);
    echo '<br/>$var = \'ko\'; test($var) : '.$var;

  3. #3
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    ok, merci Eusebe !

    Si ce n'est que ça je pourrais arranger la centaine de fonctions qui ont été faites comme ça très rapidement !

    Je ne peux pas encore faire le test, mais lundi je refais basculer sur le nouveau serveur et je met en oeuvre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compatibilité du Zend Framework avec PHP4 et PHP5
    Par metrax dans le forum Zend Framework
    Réponses: 1
    Dernier message: 05/11/2007, 20h28
  2. [POO] Compatibilité PHP4 et PHP5
    Par Neuromancien2 dans le forum Langage
    Réponses: 2
    Dernier message: 21/04/2007, 07h30
  3. [Wamp] problème entre php4 et php5
    Par zit_zit dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 22/02/2007, 10h34
  4. [DOM XML] Compatibilité xml php4 et php5
    Par brasco06 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 14/12/2006, 11h48

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