revenir sur une ancienne version php

Eléphant du PHP | 150 Messages

17 sept. 2012, 21:19

bonjour

j'utilise un script de devi facturation "fait sur mesure"
le serveur actuel ou il se trouve est en :

PHP Version 4.4.9 "serveur mutualisé"
Système Linux 3.2.2-web1183.60gp.ha.ovh.net grsec-mutu-grs-ipv6-64 # 1 SMP Jeu Jan 26 14:55:34 UTC 2012 x86_64


et il me faut le changer de serveur
mon nouveau serveur est en

PHP version 5.2.17 "serveur mutualisé"
Système Linux infong 2.4 # 1 SMP Ven Mai 18 17:32:59 UTC 2012 i686 GNU / Linux

si je met mon script sur ce nouveau serveur j'ai des fonctions qui ne marche pas

ex : le classement automatique par nom , par ville , etc quant je clique sur l’entête d'une colonne il y a quelque chose qui charge mais rien qui ne se classe
Liste de Devis

Nom de client------------- N°-------------Date------------Type--------------Commercial
robert----------------------5-------------20/12/2012------install--------------bill
hulk------------------------ 7-------------10/10/2010----montage------------bob


donc est t'il possible de faire en sorte qui sa fonctionne sur mon nouveau serveur




merci d'avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

17 sept. 2012, 23:44

salut

donc est t'il possible de faire en sorte qui sa fonctionne sur mon nouveau serveur

oui :mrgreen: :mrgreen: :mrgreen:

quels sont les problèmes exactement ?

y' a pas de <?php mais des <? si oui remplace <? pa r <?php



@+
Il en faut peu pour être heureux ......

ViPHP
ViPHP | 2577 Messages

18 sept. 2012, 09:14

Bonjour,

Il serait bien que tu mettes la ligne error_reporting(E_ALL); en début de tes pages. Le plus simple est de l'ajouter au début d'un fichier inclut dans dans toutes les pages (genre config.php).

Ca te permettra de voir pas mal de problèmes potentiels avec des messages d'erreur qui s'affichent.

La remarque de Moogli reste valable. Tu peux regarder le source html de la page pour voir s'il y a <? au début ce qui cache beaucoup de choses lors de l'affichage dans le navigateur.

Eléphant du PHP | 150 Messages

18 sept. 2012, 20:01

bonjour j'ai mis

<?php au lieu de <? sur toutes mes pages et
error_reporting(E_ALL);
dans mon fichier INIT.php
et voici ce qui m’apparaît dans la partie liste des devis

Notice: Undefined variable: REQUEST_URI in /homepages/mon_site/www/init.php on line 40

la ligne 40 de init.php :
$ou=$REQUEST_URI;
---------------------------------------------------------------


Notice: Undefined index: time_tri in /homepages/ mon_site /www/liste_devis.php on line 11
if($_GET['time_tri'])
Notice: Undefined index: time_tri in /homepages/ mon_site /www/liste_devis.php on line 16
if($_GET['time_tri']=="last")
Notice: Undefined index: full in /homepages/ mon_site /www/liste_devis.php on line 22
if($_GET['full']==1)
Notice: Undefined variable: tri in /homepages/ mon_site /www/liste_devis.php on line 40
case 'user': $req="select * from devis,clients where $admin_tri client_devis=id_client and fin_devis !=1 $time_tri order by user_devis"; break;
Notice: Undefined variable: tri in /homepages/ mon_site /www/liste_devis.php on line 41
case 'num': $req="select * from devis,clients where $admin_tri client_devis=id_client and fin_devis !=1 $time_tri order by num_devis"; break;
Notice: Undefined variable: tri in /homepages/ mon_site /www/liste_devis.php on line 42
case 'date':$req="select * from devis,clients where $admin_tri client_devis=id_client and fin_devis !=1 $time_tri order by date_devis desc"; break;
et ainsi dessuite ce qui reste :

Notice: Undefined variable: full_tri in /homepages/ mon_site /www/liste_devis.php on line 51

Notice: Undefined variable: full_tri in /homepages/ mon_site /www/liste_devis.php on line 59

Notice: Undefined variable: full_tri in /homepages/ mon_site /www/liste_devis.php on line 60

Notice: Undefined variable: full_tri in /homepages/ mon_site /www/liste_devis.php on line 61

Notice: Undefined variable: id in /homepages/ mon_site /www/liste_devis.php on line 82





au cas ou je met la page complete liste_devis.php en esperant que j'ai le droit !!



<?php
if($_SESSION['id_comm']==3)
	{	$admin_tri="";	}
	else
	{	$admin_tri="user_devis =".$_SESSION['id_comm']." and";	}

$time=time();
$mois12=60*60*24*365;
$time_last=$time-$mois12;

if($_GET['time_tri'])
{	$time_tri="and 	date_devis<$time_last ";	}
else
{	$time_tri="and 	date_devis>$time_last ";	}

if($_GET['time_tri']=="last")
{	$last="<a href=?var_menu=liste_devis>Voir les plus recentes</a>";	}
else
{	$last="<a href=?time_tri=last&var_menu=liste_devis>Voir les plus ancients</a>";	}


if($_GET['full']==1)
{
$full_tri="&full=1";

switch($tri)
	{
		case 'user': $req="select * from devis,clients where $admin_tri client_devis=id_client $time_tri order by user_devis"; break;
		case 'num': $req="select * from devis,clients where $admin_tri client_devis=id_client $time_tri order by num_devis"; break;
		case 'date':$req="select * from devis,clients where $admin_tri client_devis=id_client $time_tri order by date_devis desc"; break;
		default:	$req="select * from devis,clients where $admin_tri client_devis=id_client $time_tri order by nom_client"; break;
	}
$devis_liste="<tr height=50><td align=center colspan=6><a href=?var_menu=liste_devis>Voir la liste de devis en cours</a><br><br>
$last</td></tr>";
}
else
{
	switch($tri)
	{
		case 'user': $req="select * from devis,clients where $admin_tri client_devis=id_client and fin_devis !=1 $time_tri order by user_devis"; break;
		case 'num': $req="select * from devis,clients where $admin_tri client_devis=id_client and fin_devis !=1 $time_tri order by num_devis"; break;
		case 'date':$req="select * from devis,clients where $admin_tri client_devis=id_client and fin_devis !=1 $time_tri order by date_devis desc"; break;
		default:	$req="select * from devis,clients where $admin_tri client_devis=id_client and fin_devis !=1 $time_tri order by nom_client"; break;
	}
$devis_liste="<tr height=50><td align=center colspan=6><a href=?var_menu=liste_devis&full=1>Voir la liste complete pour 12 derniers mois</a><br><br>
$last</td></tr>";

}
if($_SESSION['id_comm']==3)
{
	$comm_titre="<a href=?tri=user&var_menu=liste_devis$full_tri><b>Commercial</a></b>";
	$width="width=100";
}

echo "<table width=700 border=0 align=center cellspacing=0>
<tr><td colspan=6 align=center class=titre_section>Liste de Devis<BR>&nbsp;</td></tr>
<tr>
<td><a href=?tri=nom&var_menu=liste_devis$full_tri><b>Nom de client</b></a></td>
<td><a href=?tri=num&var_menu=liste_devis$full_tri><b>N°</b></a></td>
<td><a href=?tri=date&var_menu=liste_devis$full_tri><b>Date</b></a></td>
<td><b>Type</b></td><td></td><td $width>$comm_titre</td></tr>";



$count=0;

//$req="select * from devis,clients where client_devis=id_client order by nom_client";
$res=Cnx_bd($req,0);
while($rep=mysql_fetch_object($res))
	{
		$reduc=0;
		if($count%2==1)
			{	$color="bgcolor=#e9e8e8";	}
					else
			{	$color=" f";			}

		if($rep->entreprise_client&&$rep->entreprise_client!="Entreprise")
		{	$corpo= "$rep->entreprise_client<br>";	}
		else
		{	$corpo= "";	}
		
		if($rep->id_client!=$id)
		{ 
			$client="$corpo $rep->prenom_client $rep->nom_client<br>$rep->ville_clients";	
			$saut="<tr><td>&nbsp;</td></tr>";
		}
		else
		{	
			$client="";	
			$saut="";
		}
		echo $saut;
		echo "<tr height=25><td width=150>$client</td><td width=60 $color>$rep->num_devis-$rep->num_sub_devis</td>";
		
		$req2="select prix_devis from equi_devis where equi_num_devis=$rep->num_devis  and equi_sub_devis=$rep->num_sub_devis and id_equi_devis=0";
		$res2=Cnx_bd($req2,0);
			while($rep2=mysql_fetch_object($res2))
			{	$reduc=$rep2->prix_devis;	}

		if($rep->type_devis==1)
			{	$action="action=genesol_pdf.php";	$type="Solaire";	}
			else
			{	$action="action=genepac_pdf.php";	$type="PaC";	}

		$id_comme=$rep->user_devis;

		echo "<td $color width=100>".strftime("%d %B %Y",$rep->date_devis)."</td><td $color>$type</td>";
		echo "<td $color width=100><form method=post $action target=\"_blank\">
		<input type=hidden name=devis_num value=".$rep->num_devis.">
		<input type=hidden name=devis_sub_num value=".$rep->num_sub_devis.">
		<input type=hidden name=reduc value=$reduc>

		<input type=submit value=Imprimer></form></td>";
		if($rep->fin_devis==1)
		{	$fin="<td $color width=50>Paiment enregistré</td>";	}
		else
		{	$fin="<td $color></td>";				}
		
		if($_SESSION['id_comm']==3)
		{	$req2="select * from administration where id=$id_comme";
			$res2=Cnx_bd($req2,0);
			while($rep2=mysql_fetch_object($res2))
				{	$comm=$rep2->login;	}
		}
		else
		{	$comm="";					}

		echo "<td $color>$comm</td>$fin</tr>";		
		$id=$rep->id_client;
		$count++;

	}
echo $devis_liste;
?>
<tr height=50><td align=center colspan=6><a href=?var_menu=0>Retour</a></td></tr></table>


ViPHP
ViPHP | 2577 Messages

19 sept. 2012, 08:37

Bonjour,

Pour $REQUEST_URI, il faut le remplacer par $_SERVER['REQUEST_URI']

Pour les les variables $_GET, à priori, il faut traiter différemment le premier affichage et les suivants. Mais ca demande de comprendre le script et de faire des tests. Une solution est d'attribuer des valeurs par défaut lorsque la variable n'est pas définie.

Pour la variable $tri, j'ai du mal à comprendre. $tri est utilisé 2 fois et on n'y met jamais rien dedans. J'ai du mal à imaginer que le script ait fonctionné comme ca. As tu récupéré les scripts sur le serveur ou des scripts sensés être la copie de ceux du serveur ?

Edit :
Pour prendre l'exemple du premier problème :
<?PHP
if($_GET['time_tri'])
{       $time_tri="and  date_devis<$time_last ";        }
else
{       $time_tri="and  date_devis>$time_last ";        }
?>
Si $_GET['time_tri'] n'existe pas, c'est équivalent à ce qu'il est la valeur '', O ou false.
Le plus simple est de faire :
<?PHP
if(!empty($_GET['time_tri']))
{       $time_tri="and  date_devis<$time_last ";        }
else
{       $time_tri="and  date_devis>$time_last ";        }
?>
empty() vérifie si la variable existe et si elle est vide. Autrement il y a isset() pour voir si la variable existe

Il faut que tu fasses ce travail pour chaque message.

ViPHP
ViPHP | 2577 Messages

19 sept. 2012, 09:03

Eventuellement, tu peux tenter un ini_set(register_globals,1) en début et supprimer le error_reporting(E_ALL). Si ca ne marche pas (ini_set interdit par l'hébergeur), tu peux faire extract($_GET) et extract($_POST) à la place.

C'est très très sale ! mais ca peut te dépanner.

Il faudra que tu revoies le code ensuite pour pouvoir te passer du register_globals (ou extract) en traitant chaque message que je viens de te faire cacher. Par exemple, pour $tri, ajouter en début :
<?PHP
If (isset($_GET['tri']) ( 
   $tri = $_GET['tri'];
} else {
   $tri = '';
}
?>
Ca reste un gros boulot pour tout traité,

Eléphant du PHP | 150 Messages

22 sept. 2012, 20:07

bonjour

je viens d'essayer d'effectuer vos recommandation mais sa ne change malheureusement rien

y a t'il plus simple pour que sa fonctionne ?? " que sa tris les colonne selon notre choix "

avec par exemple un champ a choix multiple :
<SELECT name="tri">
		<OPTION VALUE="nom">PAR NOM</OPTION>
		<OPTION VALUE="date">PAR DATE</OPTION>
		<OPTION VALUE="commercial">PAR COMMERCIAL</OPTION>
		<OPTION VALUE="id_dev">PAR ID DEVIS</OPTION>
</SELECT>
ps : je debute en PHP #-o