Pb suite changement serveur

Anne
Invité n'ayant pas de compte PHPfrance

06 mai 2010, 11:31

Bonjour,
J'avais des programmes php qui fonctionnait sous EasyPHP 1.8.
Je veux le transférer sur un serveur avec EasyPHP 5.3.1
Problème : les lignes de codes s'affichent...

Code : Tout sélectionner

<html> <head> <title>Liste des réservations d'un mois</title> <body bgcolor="#9999cc" link="white" vlink="white"> <? include "../../grr/include/connect.inc.php"; include "../../grr/include/config.inc.php"; include "../../grr/include/misc.inc.php"; include "../../grr/include/mrbs_sql.inc.php"; include "../../grr/include/functions.inc.php"; include "../../grr/include/$dbsys.inc.php"; include "../../grr/include/mincals.inc.php"; include 'recherche_mois.php'; $annee=date("Y"); //selection des champs de la table grr_enty $result=mysql_query("select grr_entry.room_id, grr_entry.start_time, grr_entry.end_time, grr_entry.beneficiaire, grr_entry.name, grr_entry.overload_desc, grr_room.id, grr_room.room_name, grr_utilisateurs.nom, grr_utilisateurs.prenom from grr_entry, grr_room, grr_utilisateurs where grr_entry.room_id=grr_room.id and grr_entry.beneficiaire=grr_utilisateurs.login and grr_entry.room_id<=6 order by grr_entry.start_time, grr_entry.room_id"); $enregistrement=mysql_num_rows($result); $mois[1]='JANVIER'; $mois[2]='FEVRIER'; $mois[3]='MARS'; $mois[4]='AVRIL'; $mois[5]='MAI'; $mois[6]='JUIN'; $mois[7]='JUILLET'; $mois[8]='AOUT'; $mois[9]='SEPTEMBRE'; $mois[10]='OCTOBRE'; $mois[11]='NOVEMBRE'; $mois[12]='DECEMBRE'; $toto=$HTTP_POST_VARS["nomois"]; echo "<font size=3><br><center><b>RESERVATIONS DU MOIS DE ",$mois[$toto]," ",$annee,"</center><br></font>"; echo "<table border=1>"; echo "<tr bgcolor=#ADEAE><td colspan=9><center><b>RESERVATION</b></center></td><td colspan=3 bgcolor=FFFF99><center><b>REPAS</center></b></td><td colspan=8 bgcolor=99FFCC><center><b>CONSOMMATIONS</center></b></td><td colspan=3 bgcolor=FFCC66><center><b>MATERIEL</center></b></td></tr>"; echo "<tr> <td bgcolor=#ADEAE>SALLE</td> <td bgcolor=#ADEAE>N°sem</td> <td bgcolor=#ADEAE>Date</td> <td bgcolor=#ADEAE>Heure<br>début</td> <td bgcolor=#ADEAE>Heure<br>fin</td> <td bgcolor=#ADEAE>Responsable</td> <td bgcolor=#ADEAE>Objet</td> <td bgcolor=#ADEAE>Nb<br>part</td> <td bgcolor=#ADEAE>Commentaire</td> <td bgcolor=FFFF99>Nb<br>repas</td> <td bgcolor=FFFF99>Type repas</td> <td bgcolor=FFFF99>Societe</td> <td bgcolor=99FFCC>Eau</td> <td bgcolor=99FFCC>Café</td> <td bgcolor=99FFCC>The</td> <td bgcolor=99FFCC>Jus de<br>fruit</td> <td bgcolor=99FFCC>Kir</td> <td bgcolor=99FFCC>Vin</td> <td bgcolor=99FFCC>Petits<br>gateaux</td> <td bgcolor=99FFCC>Petits<br>dej</td> <td bgcolor=FFCC66>Dispo<br>ciné</td> <td bgcolor=FFCC66>Rétro</td> <td bgcolor=FFCC66>Paper<br>board</td></tr>"; while ($enregistrement=mysql_fetch_array($result)) { //Formatage de la date de début et fin de réservation en date et heure/minutes $date= date("d-m-y",$enregistrement['start_time']); $heure_deb=date("H",$enregistrement['start_time']); $min_deb=date("i",$enregistrement['start_time']); $heure_fin=date("H",$enregistrement['end_time']); $min_fin=date("i",$enregistrement['end_time']); $num_sem = date("W",$enregistrement['start_time']); $num_mois = date("m",$enregistrement['start_time']); $num_annee = date ("Y",$enregistrement['start_time']); $annee=date("Y"); //Données des champs additionnels dans un tableau et suppression des @ $var = $enregistrement['overload_desc']; $nbre1 = count($var); $string = ereg_replace('@@', '@', $var); $test = explode("@", $string); $nbre = count($test); for($a = 0 ; $a < $nbre1 ; $a++){ if ($num_mois==$HTTP_POST_VARS["nomois"] && $num_annee==$annee){ //affichage des couleurs if ($enregistrement['room_id']==1) {echo "<tr bgcolor=#FF0000>"; } else {if ($enregistrement['room_id']==2) {echo "<tr bgcolor=#00FF00>"; } else {if ($enregistrement['room_id']==3) {echo "<tr bgcolor=#C000FF>"; } else {if ($enregistrement['room_id']==4) {echo "<tr bgcolor=#FFFFFF>"; } else {if ($enregistrement['room_id']==5) {echo "<tr bgcolor=#FFBB20>"; } else {if ($enregistrement['room_id']==6) {echo "<tr bgcolor=#FFFF00>"; } } } } } } //affichage des données echo "<td><font size=2>",$enregistrement['room_name'],"</font></td>"; echo "<td><font size=2>",$num_sem,"</font></td>"; echo "<td><font size=2>",$date,"</font></td>"; echo "<td><font size=2>",$heure_deb,"H",$min_deb,"</font></td>"; echo "<td><font size=2>",$heure_fin,"H",$min_fin,"</font></td>"; echo "<td><font size=2>",$enregistrement['prenom']," ",$enregistrement['nom'],"</font></td>"; echo "<td><font size=2>",$enregistrement['name'],"</font></td>"; for($i = 0 ; $i < $nbre ; $i++){ $test[$i] = ereg_replace('/*', '', $test[$i]); $test[$i] = urldecode($test[$i]); if ($i==2 | $i==5 | $i==8 | $i==11 | $i==14 | $i==17 | $i==20 | $i==23 | $i==26 | $i==29 | $i==32 | $i==35 | $i==38 | $i==41 | $i==44 | $i==47){ if ($test[$i]!="Aucun" && $test[$i]!="Non"){ echo "<td>".$test[$i]."</td>";} else echo "<td></td>"; } } echo "</tr>";}} } echo "</table>"; ?> </body> </head> </html>
Par exemple pour la ligne de code :
echo "<font size=3><br><center><b>RESERVATIONS DU MOIS DE ",$mois[$toto]," ",$annee,"</center><br></font>";
Le résultat à l'écran est : RESERVATIONS DU MOIS DE ",$mois[$toto]," ",$annee,"

Merci de votre aide...

Anne

ViPHP
ViPHP | 4039 Messages

06 mai 2010, 11:50

Serveur ? Easyphp ?

Easyphp est un environnement de développement, au mieux. Ce n'est en aucun cas un serveur de production.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

anne
Invité n'ayant pas de compte PHPfrance

06 mai 2010, 13:30

Mais ça ne résoud pas mon problème...

Anne

ViPHP
ViPHP | 5462 Messages

06 mai 2010, 13:36

normal faut mettre <?php et non pas <?
:wink:

anne
Invité n'ayant pas de compte PHPfrance

06 mai 2010, 17:08

Merci, ça marche mieux...
Mais il me reste une erreur avec la fonction ereg_replace qu'il faut apparemment ne plus utiliser.
J'ai essayé de la remplacé par preg_replace mais je n'y arrive pas...

Il s'agit de cette ligne (ligne 119 environ):
$test[$i] = ereg_replace('/*', '', $test[$i]);

Anne

ViPHP
ViPHP | 5462 Messages

06 mai 2010, 17:11

comme ca :wink:
$test[$i] = preg_replace('/\/*/', '', $test[$i]);

Anne
Invité n'ayant pas de compte PHPfrance

10 mai 2010, 14:57

Bonjour,

C'est bon je n'ai plus les messages d'erreurs par contre ma ligne :
$test[$i] = preg_replace("/\/*/", '', $test[$i]);
ne doit pas être correcte...
je m'explique :
- la valeur que je récupère est du genre $var= @17@15+%28nbre+%E0+confirmer+par+toto@/17@@16@A+confirmer+par+toto@/16@@1@A+confirmer+par+toto@/1@@2@standard@/2@@3@societe@/3@@5@Oui@/5@@6@Oui@/6@@7@Oui@/7@@8@Non@/8@@9@Non@/9@@10@Non@/10@@11@Non@/11@@12@Non@/12@@13@Aucun@/13@
cette valeur regroupe plusieurs données dont la première est : @17@15+%28nbre+%E0+confirmer+par+toto@/17@
la suivante : @16@A+confirmer+par+toto@/16@
et ainsi de suite
Je veux donc récupérer les données qui sont entre @17@ et @/17@ pour la première donnée, entre @16@ et @/16@ pour la deuxième, etc
Je fais donc :
$string = preg_replace('@@', '@', $var);
$test = explode("@", $string);
puis $test[$i] = preg_replace("/\/*/", '', $test[$i]);
mais là je ne récupère pas le contenu. J'ai regardé sur le net et je ne comprend pas cette fonction...
Merci d'avance à quiconque voudrais m'aider...

Anne

ViPHP
ViPHP | 5462 Messages

10 mai 2010, 15:17

ouai je vois, pas oubliger de coupé la chaine juste 1 seul preg_match_all peu faire l'affaire, et afficher les clés-valeurs
	
$var = '@17@15+%28nbre+%E0+confirmer+par+toto@/17@@16@A+confirmer+par+toto@/16@@1@A+confirmer+par+toto@/1@@2@standard@/2@@3@societe@/3@@5@Oui@/5@@6@Oui@/6@@7@Oui@/7@@8@Non@/8@@9@Non@/9@@10@Non@/10@@11@Non@/11@@12@Non@/12@@13@Aucun@/13@';

preg_match_all('/@(\d+)@([^\/]*)@\/\d+@/u', $var, $matches);
	
$values = array();
	
foreach($matches[1] as $key => $item)
{
    $values[$item] = $matches[2][$key];
}
	
print_r($values);
/*
Array
(
    [17] => 15+%28nbre+%E0+confirmer+par+toto
    [16] => A+confirmer+par+toto
    [1] => A+confirmer+par+toto
    [2] => standard
    [3] => societe
    [5] => Oui
    [6] => Oui
    [7] => Oui
    [8] => Non
    [9] => Non
    [10] => Non
    [11] => Non
    [12] => Non
    [13] => Aucun
)
*/
mais a mon avis faudrais revoir ta conception pourquoi avoir choisie des @ ? ca viens d'ou la base ?

Anne
Invité n'ayant pas de compte PHPfrance

14 mai 2010, 13:54

Bonjour,

Je n'ai pas choisi les @, c'est dans le logiciel GRR (http://grr.mutualibre.org/) toutes les valeurs des champs additionnels sont stockées dans un seul champ de la bdd et séparés par des @.

J'ai éssayé ta solution et à l'affichage j'obtiens bien :
Array ( [17] => 5 [16] => RAS [1] => nc [2] => Aucun [3] => Aucun [5] => Non [6] => Non [7] => Non [8] => Non [9] => Non [10] => Non [11] => Non [12] => Non [13] => Aucun [14] => Non [15] => Non ) Array ( [17] => 4 [16] => RAS [1] => 4 [2] => standard [3] => Eclosion [5] => Oui [6] => Oui [7] .......

Comme avant chaque valeur était encadrée de son identifiant (@17@valeur@17@) je les avaient éclatées dans un tableau et je n'affichait que celle qui m'intéressaient avec ces lignes :
if ($i==2 | $i==5 | $i==8 | $i==11 | $i==14 | $i==17 | $i==20 | $i==23 | $i==26 | $i==29 | $i==32 | $i==35 | $i==38 | $i==41 | $i==44 | $i==47){
if ($test[$i]!="Aucun" && $test[$i]!="Non"){

echo "<td>".$test[$i]."</td>";}
else echo "<td></td>";

Je n'arrive pas à les remplacer par l'une des variables données dans ta solution. Rien ne s'affiche dans mon tableau.
Voici ce que j'essaie de faire :
if ($values[$item]!="Aucun" && $values[$item]!="Non"){

echo "<td>".$item."</td>";
}
else echo "<td></td>";
}

J'ai vraiment du mal avec cette fonction.
Merci encore pour votre aide...

Anne

ViPHP
ViPHP | 5462 Messages

14 mai 2010, 14:19

tu fais
$keys = array(2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47);
foreach($values as $key => $item)
{
    if(in_array($key, $keys)
    {
        if(!($item == 'Aucun' || $item == 'Non'))
        {
            echo "<td>$item</td>";
        }
        else
        {
            echo "<td></td>";
        }
    }
}
je doute que ca marchait ca
if ($i==2 | $i==5 | $i==8 | $i==11 | $i==14 | $i==17 | $i==20 | $i==23 | $i==26 | $i==29 | $i==32 | $i==35 | $i==38 | $i==41 | $i==44 | $i==47){
parce que c'est pas | mais || :wink:

Anne
Invité n'ayant pas de compte PHPfrance

14 mai 2010, 15:47

Maintenant avec pre_match_all, je récupère bien que les valeurs dont j'ai besoin, il n'est plus utile de laisser certaine cellule du tableau.
Seulement je dois les afficher dans un ordre différent que celui renvoyer par la fonction.
Et ça donne ça :

Code : Tout sélectionner

for($i = 0 ; $i < $nbre1 ; $i++) { echo "<td>".$values[17]."</td>"; echo "<td>".$values[16]."</td>"; echo "<td>".$values[1]."</td>"; if ($values[2]!="Aucun" && $values[2]!="Non") { echo "<td>".$values[2]."</td>"; } else { echo "<td></td>"; } if ($values[3]!="Aucun" && $values[3]!="Non") { echo "<td>".$values[3]."</td>"; } else { echo "<td></td>"; } if ($values[5]!="Aucun" && $values[5]!="Non") { echo "<td>".$values[5]."</td>"; } else { echo "<td></td>"; } if ($values[6]!="Aucun" && $values[6]!="Non") { echo "<td>".$values[6]."</td>"; } else { echo "<td></td>"; } if ($values[7]!="Aucun" && $values[7]!="Non") { echo "<td>".$values[7]."</td>"; } else { echo "<td></td>"; } if ($values[8]!="Aucun" && $values[8]!="Non") { echo "<td>".$values[8]."</td>"; } else { echo "<td></td>"; } if ($values[9]!="Aucun" && $values[9]!="Non") { echo "<td>".$values[9]."</td>"; } else { echo "<td></td>"; } if ($values[10]!="Aucun" && $values[10]!="Non") { echo "<td>".$values[10]."</td>"; } else { echo "<td></td>"; } if ($values[11]!="Aucun" && $values[11]!="Non") { echo "<td>".$values[11]."</td>"; } else { echo "<td></td>"; } if ($values[12]!="Aucun" && $values[12]!="Non") { echo "<td>".$values[12]."</td>"; } else { echo "<td></td>"; } if ($values[13]!="Aucun" && $values[13]!="Non") { echo "<td>".$values[13]."</td>"; } else { echo "<td></td>"; } if ($values[14]!="Aucun" && $values[14]!="Non") { echo "<td>".$values[14]."</td>"; } else { echo "<td></td>"; } if ($values[15]!="Aucun" && $values[15]!="Non") { echo "<td>".$values[15]."</td>"; } else { echo "<td></td>"; } } echo "</tr>"; }
Par contre dans un champ je récupère : nbre+repas+%E0+confirmer+par+Corinne
Les "espaces" sont remplacés par des + et les "à" par %E0
Je suppose qu'il faut modifier le preg_match_all mais je ne comprend pas ce que signifie '/@(\d+)@([^\/]*)@\/\d+@/u'

Merci de m'aider

Anne

ViPHP
ViPHP | 5462 Messages

14 mai 2010, 16:03

non il faut utiliser urldecode :wink:

Anne
Invité n'ayant pas de compte PHPfrance

14 mai 2010, 16:22

ça marche.

Un grand merci à toi pour ton aide !

Anne