Erreur PHP incompréhensible

Résolu
petitmarco Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
petitmarco Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Depuis que j'ai déplacé le site intranet de mon entreprise d'un PC à un autre, j'ai cette erreur qui apparaît


Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in C:\Program Files\EasyPHP 2.0b1\www\core\front\category.php on line 74

N'étant pas un as du PHP mais + un bidouiller, est ce que quelqu'un pourrait me porter secours.

6 réponses

Mimiste Messages postés 1149 Date d'inscription   Statut Membre Dernière intervention   206
 
Salut

Apparement c'est un souci entre le code (un passage de parametre) et la configuration du serveur

Comme dis dans l'erreur deux solutions s'offrent a toi :

- Modifier la façon dont le parametre est passé

- Activer le mode de passage actuel grace au fichier INI

Je te conseille la premiere solution etant donné qu'il est aussi precisé que : "However, future versions may not support this any longer" Qui veut dire que dans les futures versions cette fonction ne sera plus du tout supportée !

Si tu ne sais pas trop comment faire colle ici le code qui ce trouve environ ligne 74 de category.php
0
petitmarco Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   7
 
OK, merci de ta réponse voici le code PHP - (pour info, ce n'est pas moi qui l'ai écrit, c'est une source gratuite)

la ligne 74 est en gras en bas
$results=Pager_Wrapper_DB(&$db, $sSQL, $params);

------------------------
<?php

defined( 'IN_KB' ) or die( 'Restricted access' );

// ################### BACK END ######################
require_once 'Pager/Pager.php';
require_once 'Pager/Pager_Wrapper.php';
$id = ( empty($_GET['id']) ) ? 1 : (int)$_GET['id'];

// ################### CATEGORY NAME ######################
$path=$Category->breadcrumb($id,0);
$sSQL='SELECT cName FROM '.PREFIX.'categories WHERE cID='.$id;
$result=$db->query($sSQL);
$rs=$result->fetchRow();
$catTitle=$rs['cName'];
$result->free();

// ################### SUBCATEGORYS ######################
$sSQL='SELECT cID, parent_id, cName,cDescription FROM '.PREFIX.'categories WHERE cDisplay="Y" AND parent_id='. $id.' ORDER BY cORDER ASC, cName ASC';
$result = $db->query($sSQL);
$catrows = $result->numRows();
$category = array();
while ($row = $result->fetchRow())
{
$category[]=$row;
}
$result->free();
$template->assign('category',$category);
$template->assign('catrows',$catrows);

// ################### ARTICLES ######################

$sSQL="SELECT article_id FROM ".PREFIX."article2cat WHERE category_id=".$id;
$result = $db->query($sSQL);
$totalItems = (int)$result->numRows();
$count=1;
$aID='';
while ($row = $result->fetchRow())
{
if($count<$totalItems)
{
$comma=", ";
}
else
{
$comma="";
}
$aID.=$row['article_id']. $comma;
$count++;
}
if($aID<>"")
{
$sSQL='SELECT aID,aTitle,aShortDesc,aDate,aHits FROM '.PREFIX.'articles WHERE aID IN ('.$aID.') AND aDisplay="Y" ORDER BY aDate';
$params = array(
'mode' => 'Sliding',
'perPage' => $KB->settings['max_search'],
'delta' => 2,
'urlVar' => 'num',
'spacesBeforeSeparator' => '1',
'spacesAfterSeparator' => '1',
);
$results=Pager_Wrapper_DB(&$db, $sSQL, $params);
}

$template->assign('data', $results['data']);
$template->assign('maxPage', $results['page_numbers']['total']);
$template->assign('pageNum', $results['page_numbers']['current']);
$template->assign('numrows', $results['totalItems']);
$template->assign('links', $results['links']);

// ################### DISPLAY TEMPLATE ######################
$template->assign('breadcrumb', $path);
$template->assign('catTitle', $catTitle);
$template->assign('body', 'category.tpl');
?>
-------------------------------------------
0
Mimiste Messages postés 1149 Date d'inscription   Statut Membre Dernière intervention   206
 
Effectivement il y a un passage par reference

$results=Pager_Wrapper_DB(&$db, $sSQL, $params);

tu le reconnais au & devant &$db

essai d'enlever le & et regarde si ça ne pose pas de probleme a la fonction Pager_Wrapper_DB sinon il faudra montrer son code aussi ;)
0
toto
 
Bonjour

Il faut modifier la ligne pour remplacer par
results=Pager_Wrapper_DB($db, $sSQL, $params);


mais il faut aussi modifier la déclaration de la fonction Pager_Wrapper_DB dans Pager/Pager_Wrapper.php pour rajouter un '&' avant son 1er paramètre.

Il faut recommencer ça pour chaque appel de fonction avec un paramètre passé par référence (qui commence par &) : le & doit être dans la déclaration de la fonction, pas dans l'appel.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
petitmarco Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   7
 
Merci de vos réponses, je vais essayer les deux et je reviens pour informer du résultats
0
petitmarco Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   7
 
SUPER, la solution de "Mimiste" fonctionne, j'ai enlevé le &, et plus de message d'erreur, et le site fonctionne

Merci encore à vous
;-)
0