[RESOLU] Un problème qui dépasse mon entendement...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Un problème qui dépasse mon entendement...

Re: Un problème qui dépasse mon entendement...

par Sirian » 18 févr. 2022, 15:11

Merci pour votre réponse ;) J'utilise Notepad++ et Filezilla ^^.

Ouais j'utilise des trucs obsolètes (et un jour ça va probablement me retomber dessus le jour où le serveur ne supportera plus ces facéties). En tous cas, content de savoir que mon hypothèse est fausse ^^

Concernant l'encodage des pages, tout est en UTF8 (j'ai déjà eu des soucis de ce côté-là, mais c'était il y a longtemps, et ça ne provoquait que des problèmes d'accents, ce genre de choses, jamais un souci comme celui-là).

CELA DIT, votre message m'a donné une idée : et si je créais un nouveau fichier, en copiant/collant le code dessus ? Je l'ai fait et... ça fonctionne. Plus de souci oO... Donc "problem solved" :D Même si c'est toujours inquiétant d'avoir un problème et de ne pas savoir comment il est apparu et pourquoi il a disparu...

Mais bon, c'est le style de la maison de ne pas trop s'en préoccuper ^^

Merci encore ;)

Re: Un problème qui dépasse mon entendement...

par @rthur » 18 févr. 2022, 13:29

Mon hypothèse est que la version de php a changé sur le serveur depuis le temps, et que tant que le fichier était "vieux", il acceptait de l'afficher en ancienne version mais maintenant que le fichier est à jour, il force la dernière version
La version de PHP ne peut pas changer en fonction de la date d'upload d'un script PHP.
Donc tu peux évacuer cette hypothèse.


En revanche il est certain que tu es sur une version de PHP très ancienne puisque les fonctions mysql_* n'existent plus.

En l'occurence, pour ton problème, je pense à un problème de caractères spéciaux, d'UTF8 ou de mauvais transfert via ton logiciel FTP (ou à vause de ton antivirus/parefeu).
Quel éditeur de code utilises-tu ? Quel logiciel FTP ?

Essaye SublimeText et Filezilla en désactivant ton firewall si besoin.

Un problème qui dépasse mon entendement...

par Sirian » 18 févr. 2022, 10:52

Bonjour,

Tout d'abord, je ne suis absolument pas un professionnel du web. Je développe le site en auto-didacte, en reprenant des trucs à droite et à gauche. Souvent, j'opte pour une solution "moche mais efficace" car mon but n'est pas d'être un expert, pas d'avoir des trucs ultra propre pour le plaisir mais simplement avoir quelque chose qui fonctionne. Et jusqu'à présent, ça fonctionne ^^ Et aussi, btw, je ne fais pas de programmation objet (oui c'est génial, toussa, mais je n'y arrive pas. Et pas le courage d'assimiler le truc. Focus on efficacité et je m'en sors en procédural).

Habituellement, je ne poste pas sur les forums d'aide. Car, quand j'ai un souci, je lis le message d'erreur, je repère la ligne, je regarde la ligne, je bidouille, je trouve le ";" manquant et puis tout va bien. Ou le problème est plus complexe, je recherche sur le web, je trouve un post (souvent en anglais) de quelqu'un qui a le même souci, et puis voilà.

Mais aujourd'hui, je suis tombé sur un problème qui dépasse vraiment mon entendement. Voici la situation : un membre de mon club me demande de modifier un texte sur mon site (en HTML, un truc lamda à la con). Je fais la modif, sans rien toucher au PHP, je fais une copie du fichier (qui est un .php) que je transfère du serveur sur mon site (je le mets dans un dossier "SAVE"), puis j'envoie le fichier modifié. Il me répond un bug étrange :

Code : Tout sélectionner

Parse error: syntax error, unexpected '$tournoi' (T_VARIABLE) in ... on line 1
Je me dis "Bon, ok". Alors je remets le fichier que j'ai mis dans mon dossier SAVE sur le serveur, c'est EXACTEMENT LE MÊME FICHIER QU'À L'ORIGINE, c'est-à-dire le fichier .php qu'il y avait à la base du serveur, un fichier qui n'avait aucun souci jusque là. La seule différence notable étant qu'il s'agissait d'un fichier que je n'avais plus touché depuis 2016. Et là...

Parse error: syntax error, unexpected '$tournoi' (T_VARIABLE) in ... on line 1

... c'est le drame !

Évidemment, sur ce fichier, il n'y a pas de variable $tournoi en ligne 1. Il y a :

Code : Tout sélectionner

<?php $long_title = "521 : Palmar&egrave;s du championnat"; include 'base.php';
Le fichier base.php étant un fichier qui contient une série de trucs en commun dans toutes les pages du site. Mais ce n'est vraisemblablement pas ce qui pose problème, car toutes les pages du site utilisent ce fichier, y compris des pages où j'ai travaillé récemment. Aussi, j'ai affiché la page en supprimant une bonne partie mais en gardant la partie supérieure (c'est-à-dire toutes les lignes au-dessus de la ligne que j'ai identifiée comme buggée, voir plus loin) et là, pas de souci d'affichage. D'ailleurs, par acquis de conscience, j'ai des modifications sur une autre page que j'avais travaillé récemment et il n'y a aucun souci.

Alors peut-être que "ma manière de coder" probablement dégueulasse serait à l'origine, mais a priori, j'ai eu la même manière de coder pour toutes les pages alors pourquoi là, ça déconne et pas ailleurs ?

Bon ! Je décide creuser le problème. Je fais un test sur une autre page : Palmarès Coupe. Par prudence, sur le serveur, je renomme le fichier "OLD" pour avoir une copie "d'origine" du fichier. Bien m'en fait puisque ce fichier "OLD" fonctionne, alors que si je fais le transfert serveur > PC > serveur, ça ne va plus.

Là, sur ce fichier, c'est l'array $tab_jp_an qui pose problème. Ce qui est amusant, c'est que l'erreur change en fonction de ce que je juge être un détail :

Code : Tout sélectionner

<?php $tab_jp_an = array(); // ONLY IF GET : liste des équipes où a participé le joueur if ($highlight != '') { $equipes_get = mysql_query("SELECT joueur, DATE_FORMAT(date,'%Y') as an, date, place FROM palmares WHERE tournoi = '".$tournoi."' AND joueur = '".$highlight."' ORDER BY date DESC, place ASC"); while ($e_g = mysql_fetch_assoc($equipes_get)) { $tab_jg_an[$e_g['date']] = $e_g['joueur']; $tab_jp_an[$e_g['date']] = $e_g['place']; } } ?>
Le souci sera : Parse error: syntax error, unexpected '$tab_jp_an' (T_VARIABLE) in ... on line 1

Alors que si je fais ça :

Code : Tout sélectionner

<?php $tab_jp_an = array(); // ONLY IF GET : liste des équipes où a participé le joueur if ($highlight != '') { $equipes_get = mysql_query("SELECT joueur, DATE_FORMAT(date,'%Y') as an, date, place FROM palmares WHERE tournoi = '".$tournoi."' AND joueur = '".$highlight."' ORDER BY date DESC, place ASC"); while ($e_g = mysql_fetch_assoc($equipes_get)) { $tab_jg_an[$e_g['date']] = $e_g['joueur']; $tab_jp_an[$e_g['date']] = $e_g['place']; } }
(Pour les moins attentifs, j'ai mis $tab_jp_an à côté du <?php et pas une ligne en dessous) Le bug devient :
Parse error: syntax error, unexpected '}' in /home/echiquiez/www/palmares_coupe.php on line 1. Dans ce cas-là, c'est le if ($highlight... qui semble poser problème.

Mon hypothèse est que la version de php a changé sur le serveur depuis le temps, et que tant que le fichier était "vieux", il acceptait de l'afficher en ancienne version mais maintenant que le fichier est à jour, il force la dernière version et il y a un truc qui déconne dans cette version. Mais je suis vraiment perdu : qu'est-ce qui cloche ? Que dois-je faire ?...