Probleme PHP message d'erreur

[913]
Invité n'ayant pas de compte PHPfrance

02 janv. 2012, 21:52

Bonjour a tous !
J'ai un probleme avec un mon code PHP, étant un débutant dans ce millieu j'aurai besoin de votre aide.

Le message d'erreur:

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /mnt/142/sda/5/8/toursfcweb/sondage.class.php on line 4

mon code:
<?php
class Sondage
{
	public $Question = "" ;//Question du sondage [b][color=#00BFFF] ligne avec l'erreur[/color] [/b]
	public $Choix = array() ;//Contient les différents choix possibles du sondage
	public $DejaVote = false;//True si le visiteur a déjà  voté, false (par défaut) sinon
	public $ListeIp = array() ;//Contient l'IP des visiteurs ayant déjà  voté (extrait de $this->FichierIp)
	public $Resultats = array() ;//Contient les résultats des votes (extrait de $this->FichierResultats)
	
	public $FichierIp ;//Adresse du fichier (avec .php pour extension impérativement) contenant les IP des visiteurs ayant déjà  votés (séparées par des ;)
	public $FichierResultats ;//Adresse du fichier (avec .php pour extension impérativement) contenant les résultats du sondage  (séparés par des ; et dans l'ordre de l'array $this->Choix)
		
	//Constructeur de la classe
	public function __construct ( $Question, $Choix, $FichierIp, $FichierResultats )
	{
		$this->Question = $Question ; 
		$this->Choix = $Choix ;
		$this->FichierIp = $FichierIp ;
		$this->FichierResultats = $FichierResultats ;
		
		//Si les fichiers IP et Resultats n'existent pas : les crée (possibilité de supprimer cette partie si vous créez les fichiers manuellement)
		if(!file_exists($FichierIp) OR !file_exists($FichierResultats)) {
			touch($FichierIp) ;
			touch($FichierResultats) ;
		}
		
		//Vérifie si le visiteur a déjà  voté (Vérification Cookie + IP)
		if(isset($_COOKIE['vote']) OR $this->VerifierIp($_SERVER["REMOTE_ADDR"]) === false) {
			$this->DejaVote = true ;
		}
	}
	//Vérifie si l'IP du visiteur est déjà  présente dans dans le fichier $FichierResultats
	private function VerifierIp ($ip)
	{
		$this->ListeIp = explode(";", file_get_contents($this->FichierIp, NULL, NULL, 16));
		if(!empty($this->ListeIp) AND in_array($ip, $this->ListeIp)){
			return false ;
		}
		return true ;
	}
	//Comptabilise le vote du Choix n° $NumVote : A UTILISER AVANT toute sortie (avant les balises <html><head> ...) car utilisation de la fonction setcookie()
	public function AjoutVote ($NumVote)
	{
		if($this->DejaVote === true) {
			return false ;
		}
		$this->Resultats = explode(";", file_get_contents($this->FichierResultats, NULL, NULL, 16));
		//Si premier vote : initialisation de $this->Resultats avec 0 votes pour chaque choix
		if(!isset($this->Resultats[0]{0})) {
			$Nb = sizeof($this->Choix) ;
			for($n=0;$n<$Nb;$n++) $this->Resultats[$n] = '0';
		}
		$this->Resultats[$NumVote]++ ;//Incrémentation du choix pour lequel le visiteur a voté
		
		$this->ListeIp[] = $_SERVER["REMOTE_ADDR"] ;//Ajout de l'IP du votant à  la liste
		
		//Ecriture des Résultats et des IP dans les fichiers
		if( !file_put_contents($this->FichierResultats, '<?php exit(); ?>'.implode(";", $this->Resultats) ) 
		OR !file_put_contents($this->FichierIp, '<?php exit(); ?>'.implode(";", $this->ListeIp) ) ) {
			return false ;
		}
		$this->DejaVote = true ;
		setcookie('vote', true, time()+3*30*24*60*60) ; //Mise en place d'un cookie valide 3 mois
		return true;
	}
	//Affiche les résultats du vote
	public function AfficherResultats ()
	{
		//Si $this->Resultats est vide : il n'a pas encore été recherché dans le fichier $this->FichierResultats (ou 0 votes : voir ci-dessous)
		if(empty($this->Resultats))
		{
			$this->Resultats = explode(";", file_get_contents($this->FichierResultats, NULL, NULL, 16));
			
			//Si $this->Resultats est toujours vide : 0 votes : initialisation de $this->Resultats
			if(empty($this->Resultats)) {
				$Nb = sizeof($this->Choix) ;
				for($n=0;$n<$Nb;$n++) $this->Resultats[] = 0;
			}
		}
		$TotalVotes = array_sum($this->Resultats) ;//Fait la somme de tous les valeurs de $this->Resultats pour avoir le nombre total de votant
		
		echo '<div style="border:1px solid black;padding:0 10px;width:450px;"><p<b>'.$this->Question.'</b></p><table style="margin-left:10px;">' ;
		
		//Parcourt l'array $this->Choix afin d'écrire les résultats en utilisant $id pour obtenir le résultat correspondant au choix
		foreach($this->Choix as $id=>$choix)
		{
			@$pourcentage = $this->Resultats[$id]*100/$TotalVotes ;
			echo '<tr><td><u>'.$choix.'</u> : </td><td><img src="bar.gif" height="10" width="'.(2*$pourcentage).'" />  '.number_format($pourcentage, 2, ',', '').' % ('.$this->Resultats[$id].')</td></tr>' ;
		}
		echo '</table><p><b>Total des votes : </b> '.$TotalVotes.'</p>' ;	
		if($this->DejaVote === true) {
			echo '<p>Vous avez d&eacute;j&agrave; vot&eacute; !</p>' ;
		}
		else {
			echo '<p><a href="?">Retourner au formulaire de vote</a></p>';
		}
		echo '</div>' ;
	}
	//Affiche le formulaire du vote
	public function AfficherFormulaire ()
	{
		echo '<div style="border:1px solid black;padding:0 10px;width:450px;"><form method="post"><p><b>'.$this->Question.'</b></p><table style="margin-left:10px;">' ;
		$disable = '';
		if($this->DejaVote === true) {
			$disable = ' disabled="disabled"';//Si le visiteur a déjà  voté : grise le formulaire si nécessaire
			echo '<p>Vous avez d&eacute;j&agrave; vot&eacute; !</p>' ;
		}
		foreach($this->Choix as $id=>$choix)
		{
			echo '<tr><td><input type="radio" name="choix" value="'.$id.'"'.$disable.' /></td><td><u>'.$choix.'</u></td></tr>' ;
		}
		echo '</table><p><input type="submit" value="Votez!" '.$disable.'/></p><p><a href="?resultats=1">Voir les r&eacute;sultats</a></p></form></div>' ;	
	}
}?>

meci d'avance !

ViPHP
ViPHP | 2287 Messages

02 janv. 2012, 23:06

Hello,

Que donne un
<?php die(phpversion());
enregistré dans un nouveau fichier (que tu peux appeler nouveaufichier.php par exemple), quand tu le consultes ? Ça affiche quoi ?
if(!@work()){ Nespresso(); } else { what(); }
______________________________

[913]
Invité n'ayant pas de compte PHPfrance

03 janv. 2012, 01:39

Merci de ta réponse mais malheureusement ce que j'ai fait ne marche pas !
j'ai enregistré ce bout de code dans une page nouveau.php puis l'ai mis dans mon serveur mais rien ne se passe.
je n'ai peut etre pas compris la démarche a suivre j'ai eu des doutes ( je suis débutant )

[913]
Invité n'ayant pas de compte PHPfrance

03 janv. 2012, 01:43

j'ai essayer aussi de mettre ton code en haut du mien a la place de <?php dans une autre page nouveau.php . j'ai consulté et j'ai toujours le meme message d'erreur

ViPHP
ViPHP | 2287 Messages

03 janv. 2012, 03:00

EDIT : ok, j'ai trouvé le site et l'erreur qui va avec : http://toursfcweb.free.fr/

Le script que tu as installé sur ton compte Free nécessite php5 pour fonctionner. Free te propose php4 (vieux et obsolète) par défaut, c'est pas cool.

Pour activer php en version 5 il existe une procédure (spécifique à free) qui est expliquée dans ce post : hebergement/free-php-php-disponibles-t8 ... tml#p71704
if(!@work()){ Nespresso(); } else { what(); }
______________________________

[913]
Invité n'ayant pas de compte PHPfrance

03 janv. 2012, 16:16

Ha merci ! Et crois tu que si je fait passer ce site sur son serveur officiel dont le site est : http://backstagecorp.fr
et non pas sur ce vieux serveur free récupérer d'un acnien site , cela fonctionnerai ?
je ne peux pas essayer pour l'instant mais je te demande ton avis

ViPHP
ViPHP | 2287 Messages

03 janv. 2012, 16:25

Ha merci ! Et crois tu que si je fait passer ce site sur son serveur officiel dont le site est : http://backstagecorp.fr
et non pas sur ce vieux serveur free récupérer d'un acnien site , cela fonctionnerai ?
je ne peux pas essayer pour l'instant mais je te demande ton avis
Oui si ton hébergement est compatible php5... Ce qui est le cas de la très grande majorité des hébergements actuels, sauf free :)

Mais regarde quand même pour free, c'est un tout petit fichier texte à créer normalement, c'est très simple.
if(!@work()){ Nespresso(); } else { what(); }
______________________________