IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Grand concours pour debugger unexpected T_CASE


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut Grand concours pour debugger unexpected T_CASE
    Salut à tous les codeurs chevronnés.

    A gagner: ma gratitude éternelle !!!

    Ca fait désormais 2j que je parcours et re-re-re-re-parcours mon code de fond en comble, sans pouvoir mettre la main sur le problème :

    Parse error: syntax error, unexpected T_CASE in /homez.443/opbphoto/www/HomeB.php on line 35

    Code complet HomeB.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
     
    <?php
    			$con = mysql_connect('server', 'login', 'pass');
    				if(!$con)
    				{
    				  	header("Location: index.html");
    					exit;	
    				}
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <script type="text/javascript" src="zoom/jquery.js"></script>
    <script type="text/javascript" src="zoom/thickbox.js"></script>
    <link rel="stylesheet" href="zoom/thickbox.css" type="text/css" media="screen" />
     
    <link rel="icon" type="image/png" href="opbfavicon.png" />
     
     
    <title>OPB Photography - Daily life contemporary work</title>
    <meta name="keywords" content="OPB.Photography, OPB, photography, photographie, modern photographie, contemporan, photographie contemporaine, street art, argentique, photographie argentique">
     
    <link rel="stylesheet" type="text/css" href="default.css" />
    <link rel="stylesheet" type="text/css" href="dspGalerie.css" />
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     
    <script type="text/javascript">
     
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'XXX-ID']);
      _gaq.push(['_trackPageview']);
     
      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();
     
    </script>
     
    <script type="text/javascript" src="dspScript.js"></script>
     
    </head>
    <body bgcolor="#FFFFFF">
    <div id="contentWrapper">
     
     
    	<div id="leftSidebar" class="medium">
    	<a name="page-up"></a>
    	<font class="bodyTitle">OPB Photography</font>
    	<p>
     
    	<br>PORTFOLIO
    	<br><font size="-2">//////////////////////////////////</font>
     
    	<?php
     
    			$con = mysql_connect('server', 'login', 'pass');
    				if(!$con)
    				{
    					exit;	
    				}
     
    				mysql_select_db("db", $con);
     
    				// SERIES Menu 
     
    				$result = mysql_query("SELECT * FROM Serie ORDER BY serie_pos ASC;");
    				while($row = mysql_fetch_array($result))
    				{  
    					echo "<br><A HREF=\"Home.php?page=".$row['serieID']."\">".$row['titre']."</A>";
    				}
    				mysql_close($con);
    	?>
     
     
    	<p>
    	<br>THIS IS ME
    	<br><A HREF="Home.php?page=about">About</A>
    	<br><A HREF="Home.php?page=contact">Contact</A>
    	</div>
    	<div id="mainContent">
    	<div id="rightSidebar" align="justify">
     
    	<?php
    				$pageURL = ereg('[[:digit:]]', $_GET['page']);
    				if($_GET['page']) 
    					$page = $_GET['page'];	
    				else 
    					$page= "";
     
    				if($pageURL)
    				{
    					// SERIE description
    					// Cas d'une sÈrie (page = numÈro)
     
    					$con = mysql_connect('server', 'login', 'pass');
    					if(!$con)
    					{
    						  exit;	
    					}
     
    					mysql_select_db("db", $con);
     
    					$result = mysql_query("SELECT * FROM Serie WHERE serieID=".$page.";");
    					while($row = mysql_fetch_array($result))
    					{  
    						echo $row['description'];
    					}
     
    				mysql_close($con);
    				}
    				else
    				{
    					// Pages en chargement autre qu'une s»rie
     
    					switch($page) 
            			{				
    						case 'about':	       
    									echo "<b>Analogic/film photography.</b><br>Home processing (D76, Ilfosol, C41). Cameras :";
    									echo "<p><br>. Bessa R3A";
    									echo "<br>. Yashica 35 Electro";
    									echo "<br>. Rollei 35 SE";
    									echo "<br>. Mamiya 645 (now rarely used)";
    									echo "<br>. Kiev 88 (OoS *not happy*)";
    									echo "<p><br>";
    									echo "<p><br>";
    									echo "<p><br><p>&nbsp; &nbsp;<img src=\"opb-big.jpg\" width=\"85%\" height=\"85%\"/></center>";
    									break;
     
    						case 'contact': 	require 'flickRsign.html';
    											break;
     
    						default:		break;
    					}
    				}
    	?>
    	</div>	
     
     
     
    	<?php	
     
    			$pageURL = ereg('[[:digit:]]', $_GET['page']);
    				if($_GET['page']) 
    					$page = $_GET['page'];	
    				else 
    					$page= "";
     
    				if($pageURL)
    				{
     
    					$con = mysql_connect('server', 'login', 'pass');
    					if(!$con)
    					{
    					  exit;	
    					}
    					mysql_select_db("db", $con);
     
    					// SERIE description
    					// Cas d'une sÈrie (page = numÈro)
     
    					$result = mysql_query("SELECT * FROM Photo WHERE serieID=".$page." ORDER BY photo_pos ASC;");
    					$serieT = mysql_query("SELECT * FROM Serie WHERE serieID=".$page.";");
    					$serieTitle = mysql_fetch_array($serieT);
     
     
    					echo "<div id=\"galerie\">";
      					echo "<ul id=\"galerie_mini\">";
     
    					$pos1 = true;
    					$pos1_src = null;
    					$pos1_alt = null;
     
    					while($row = mysql_fetch_array($result))
    					{  
     
    						if($pos1)
    						{
    							$pos1_src = "Serie".$i."/".$row['fichier'];
    							$pos1_alt = $row['commentaire'];
    							$pos1 = false;	
    						}
     
        					echo "<li>";		
    				  		echo  "<a href=\"Serie".$page."/".$row['fichier']."\" title=\"".$serieTitle['titre']."\" class=\"thickbox\"><img src=\"Serie".$page."/".$row['fichier']."\" width=\"25%\" height=\"25%\" alt=\"".$row['commentaire']."\" border=\"0\" /></a>";
    				  		echo "</li>";
     
    					}
     
    						echo "</ul>";	
     
    						echo "<dl id=\"photo\">";
    				  		echo "<dt>".$pos1_alt."</dt>";
        					echo "<dd><img id=\"big_pict\" src=\"".$pos1_src."\" alt=\"".$pos1_alt."\" /></dd>";
      						echo "</dl>";
    						echo "</div>";
     
     
    				mysql_close($con);
    				}
    				else
    				{
    						// Pages en chargement autre qu'une sÈrie
     
    						switch($page) 
            				{
    							case 'about': 		require 'About.php';
    												break; 
     
    							case 'contact': 	require 'Contact.php';
    												break;
     
    							default:			break;
    						}
    				}
     
    	?>
     
    	</div>
     
     
     
    </div>
    </body>
    </html>


    J'ai récupéré la partie javascript pour la disposition des photos de mes galeries sur un autre site.

    Mais l'erreur ne provient pas de l'inclusion de ce code, ni du css qui va avec, car l'erreur date d'avant cet ajout.


    Si celà peut vous aider, mon site est online et le layout html donne ce résultat (pour le moment, sans la prise en compte du tutoriel javascript):

    www.opb-photography.com



    Merci infiniment !



    EDIT >>>


    Mon problème provenait en fait des MaJ des fichiers sur mon serveur ftp hébergé, les sauvegardes en transfert de fichiers en mode "automatique" sous Filezilla n'étant apparemment pas fiables.
    J'ai dû changer pour le mode "binaire", et là, aucun soucis pour la MaJ de mes fichiers sur mon ftp, ca écrase tout comme il faut et prend en compte les modifs.

    Cf. plus bas mon message #10, qui a mis sur la piste pour mon problème identifié par le membre du forum RunCodePhp , dans son message #12 !

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 391
    Points
    9 391
    Par défaut
    C'est une erreur PHP, donc code Javascript ou non cela ne vient pas de ça.
    Et au passage... C'est quoi tous ces mysql_connect() ? O_o
    Un seul suffit amplement ! Là tu ouvres pleins de connexions à la bdd sans jamais les fermer.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Ouais mais bon, la flemme de définir une variable globale...
    j'ai plusieurs portions <?php ?> dans la page, voilà pourquoi il y a plusieurs mysql_connect.

    Pas si grave, j'ai pas 150.000 visiteurs par jour, ce n'est pas un site marchand, comme vous l'aurez constaté !

    Mais quoiqu'il en soit, tu as raison, et promis une fois le code "réparé" je m'attèle à le rendre plus concis et performant.

  4. #4
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 391
    Points
    9 391
    Par défaut
    4 connexions dans un script, aucune déconnexion.
    Pour la majorité des hébergements standard il suffirait de 3 visiteurs pour provoquer un engorgement et des erreurs sur le nombre de connexion simultanées.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par transgohan Voir le message
    4 connexions dans un script, aucune déconnexion.
    Pour la majorité des hébergements standard il suffirait de 3 visiteurs pour provoquer un engorgement et des erreurs sur le nombre de connexion simultanées.

    et ca c'est quoi :

    mysql_close($con);


    P.S: mon site est UP, malgré ces aberrations. Je viens pas ici pour çà. Tu l'as dit, c'est bon, j'ai compris.

    C'est un peu la dernière chance, ptet que j'ai raté un truc mais ca m'étonnerait... ca fait un paquet de fois que je relis le code ligne après ligne.

  6. #6
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 391
    Points
    9 391
    Par défaut
    Bah écoutes moi je peux t'assurer que c'est pas le code que tu nous montres qui génère cette erreur PHP.
    Vu que c'est du plain text à la ligne concernée.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Avec les erreurs de type syntax error ( UNEXEPECTED T_CASE , END...), le n° de ligne d'erreur indiqué n'est pas relevant.

    Pour t'en convaincre :

    http://php.syntaxerrors.info/index.p...28something%29


    C'est la chienlit, et faut se taper tout le code au crible pour détecter tout oublie d'un ';' , d'un " , ( , ) , } ...

    Mais bon, sur le T_CASE c'est normalement lié aux switch.
    Pourtant, dans mon cas il ne me semble pas que j'aie fait n'importe quoi ??!

    Je test ma variable $page qui est de type string (contient du texte), et si c'est lié à NULL, par défaut je lui alloue $page ="" avant de rentrer dans les switch :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
                                    if($_GET['page']) 
    					$page = $_GET['page'];	
    				else 
    					$page= "";
     
                                    // ... 
     
     
                                    switch($page) 
            			{				
    						case 'about':	       
    									// instructions ...
    									break;
     
    						case 'contact': 	require 'flickRsign.html';
    											break;
     
    						default:		break;
    				}


    HELP !!!!!!!!!

  8. #8
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Je test ma variable $page qui est de type string (contient du texte), et si c'est lié à NULL, par défaut je lui alloue $page ="" avant de rentrer dans les switch
    Ce que tu soupçonne ce trouverait vers la ligne 118 ou 207 par rapport au code que tu as mis au début.

    Parse error: syntax error, unexpected T_CASE in /homez.443/opbphoto/www/HomeB.php on line 35
    Or, Php détecterait une erreur vers la ligne 35.

    Cette ligne 35 contiendrait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    Ce qui à première vu n'a strictement rien avoir avec un switch().

    Faudrait peut être faire le point sur le N° de ligne du code qui causerait problème.
    Au passage, j'ai rarement vu Php se tromper ou perdre les pédales au niveau des erreur, raison de plus sur une erreur de syntaxe.


    Admettons malgré tout que l'erreur viendrait de ce switch, remplace les par un simple : if/elseif
    D'autant plus qu'il n'y a que 2 conditions : about ou contact.


    Par ailleurs, si le switch/case n'effectue strictement rien par défaut, il est en toute logique inutile de mettre des :
    default: break;

    Au même titre que de faire 10 connexions à MySQL, qui au passage n'a absolument pas besoin de créer une variable globale, c'est d'ailleurs la grande particularité des fonction mysql_* (du driver), ce qui n'est pas le cas de PDO ou MySQLi.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Slt.

    Je peux vous garantir qu'il y a là l'intégralité du code, ligne par ligne, et que le n° de ligne incriminé réfère à la même ligne dans mon éditeur de texte qu'ici-même.

    C'est une aberration de l'interpréteur php sur ce type d'erreur. Croyez-moi, ca fait 1 semaine que je parcours google avec "php unexpected t_case" ...

    Le plus étrange, c'est que j'avais effectivement remplacé les switch par des if...else if... else, comme tu l'as intelligemment suggéré. Mais l'erreur persistait.

    Donc en effet, on ne peut pas vraiment présager que ca provienne des switchs à proprement parlé.


    Je remercie infiniment la personne qui sera assez attentive pour pointer l'erreur de syntaxe qui bloque tout !!!!

  10. #10
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Est-ce que ca pourrait être dû à un fichier caché ? ou à une configuration côté serveur ???

    Mon hébergeur est OVH.


    Dans ma racine ftp, j'ai un fichier .htacces dans lequel j'ai :

    SetEnv PHP_VER 5
    SetEnv REGISTER_GLOBALS 0
    DirectoryIndex Home.php

    Aussi je précise, le Home.php que j'ai déjà pu modifier, m'avait aussi valu ce type d'erreur incontrôlée... Et j'avais dû utiliser la fonction "restaurer backup" d'OVH, car même en replaçant moi-même par l'ancien fichier qui fonctionnait sur leur serveur, hé bien l'erreur persistait !

  11. #11
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Je porte à votre connaissance une autre piste éventuelle ?

    Il semblerait que la fonction ereg() pour vérifier des expressions régulières ne soit PLUS conseillée sous PHP5.

    Lire : http://php.net/manual/fr/function.ereg.php

    Dans mon cas, j'en avais effectivement besoin pour tester la valeur de paramètre dans l'url, Home.php?page=

    pour savoir s'il s'agissait d'un numérique ou non. Test qui ensuite découlerait sur les fameux switch...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                                    $pageURL = ereg("[[:digit:]]", $_GET['page']);
    				if($_GET['page']) 
    					$page = $_GET['page'];	
    				else 
    					$page= " ";
     
    				if($pageURL)
    				{
                                        // ...

    Alors je me dis que c'est peut être ça ?

    Une rapide recherche m'indique qu'il me faut plutôt faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_match('/^[0-9]{1,}$/', $_GET['page']);
    (cf ici : http://www.webdeveloper.com/forum/sh...d.php?t=165159
    et là : http://www.devthought.com/2009/06/09...ors-in-php-53/)


    Donc j'ai fait la modification....
    MAIS le problème n'est toujours pas résolu. Même erreur, mot pour mot, même ligne, ...

  12. #12
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    car même en replaçant moi-même par l'ancien fichier qui fonctionnait sur leur serveur, hé bien l'erreur persistait !
    As tu la certitude que les fichiers sont réellement écrasés ?
    Vu ce que tu dis, on dirait que rien ne serait modifié/écrasé.

    De quelle manière (quel mode), avec quel outil remplaces tu tes fichiers (local vers distant) ?
    Théoriquement il faut le faire en mode binaire.
    Donc en effet, on ne peut pas vraiment présager que ca provienne des switchs à proprement parlé.
    L'erreur évoque tout de même "T_CASE", donc venant d'un switch/case.

    As tu supprimé ces 2 switch/case par de simples if/elseif ?
    D'autant plus qu'ils ne servent pas à grand chose, il n'y a que 2 conditions seulement.

    S'il n'y plus de switch/case, il ne devrait plus avoir la même erreur.


    Il semblerait que la fonction ereg() pour vérifier des expressions régulières ne soit PLUS conseillée sous PHP5.
    Oui, donc cela fait depuis très longtemps déjà.
    D'ailleurs, tu aurais dû avoir un retour d'erreur du fait de l'avoir utilisé, ce qui sous entend que ta gestion des erreurs serait perfectible.
    Pour développer un site le plus fiable possible il faut que tous les retours d'erreurs soient affichés, ça à l'air d'être le cas : display_errors à On.
    Et mettre le niveau des erreurs au max, error_reporting avec E_ALL | E_STRICT.
    ( agir dans le php.ini ou faire un ini_set() )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pageURL = ereg('[[:digit:]]', $_GET['page']);
    Il y nettement plus simple, caster (ou transtyper) cette donnée vu que ça doit être un nombre entier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pageURL = (int)$_GET['page'];

    Aussi, il n'y a pas que les ereg() qui sont obsolètes, les fonctions mysql_* aussi, même si la communauté de Php n'a pas encore décidé que cela retourne une erreur type "DEPRECATED" comme pour le ereg().
    Ces fonctions mysql_* (du moins le driver) n'évolue plus depuis un sacré bout de temps, et depuis un sacré bout de temps aussi il y a 2 autres façons conseillés, PDO ou MySQLi.


    Mais encore, ça fait une paye qu'il est dit de ne plus exploiter le HTML (balises/attributs) pour effectuer de la mise en forme, mais d'exploiter le CSS (dans une feuille de style CSS).
    Donc mettre des balises comme <font>, <b>, etc ... tout comme mettre des attributs bgcolor="", align="", etc ... tout cela est obsolète, à ne plus faire ou à retenir.

    Et pour les code Javascipt, crée un fichier JS et importe le plutôt que de les mettre dans la page.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="/global.js"></script>
    Il faudrait peut être faire attention aux supports que tu utilises pour apprendre à faire un site Web, ils sont loin d'être à jour apriori (même si cela est juste par plaisir, un loisir).

  13. #13
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    As tu la certitude que les fichiers sont réellement écrasés ?
    Vu ce que tu dis, on dirait que rien ne serait modifié/écrasé.

    De quelle manière (quel mode), avec quel outil remplaces tu tes fichiers (local vers distant) ?
    Théoriquement il faut le faire en mode binaire.
    L'erreur évoque tout de même "T_CASE", donc venant d'un switch/case.


    Mon dieu !!! Tu as trouvé......... Mais comment se fait-ce ??!
    J'utilise Filezilla comme client FTP, et effectivement , dans les options, à Transfert, il y 'avait "type de transfert" ayant comme valeur "automatique". Je l'ai passé à "binaire", ai renvoyé mon fichier HomeB.php tel que je l'ai copié/collé ici, et ca passe !!!

    Je suis effectivement curieux de savoir pourquoi ce mode "automatique" n'écrasait pas bien le fichier sur le ftp ???!


    MERCI ENORMEMENT. C'est super vicieux quand même. Depuis le temps que je me prenais la tête sur le code, alors qu'en réalité j'avais sans doute corrigé l'erreur depuis un bout de temps, mais l'upload du fichier ne le mettait pas bien à jour alors ! WOW!!!!

    Je te réponds sur les autres points juste après. Je vais aller tester le site etc :

    EDIT >>>

    Bon, maintenant ca va être le casse-tête chinois avec les pages de CSS -

    Voici ce que ca donne actuellement :
    http://opb-photography.com/HomeB.php?page=1

    Alors que je voudrais que la disposition des miniatures se fassent en fil indienne de gauche à droite, et non verticalement.

  14. #14
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Je suis effectivement curieux de savoir pourquoi ce mode "automatique" n'écrasait pas bien le fichier sur le ftp ???!
    Je n'ai pas vraiment d'explication, juste une idée assez vague, donc au risque de dire des "conn***" je m'abstiens.

    Si un autre membre à une explication, ça fera au moins 2 à en avoir une idée plus précise du problème.

  15. #15
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pageURL = ereg('[[:digit:]]', $_GET['page']);
    Il y nettement plus simple, caster (ou transtyper) cette donnée vu que ça doit être un nombre entier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pageURL = (int)$_GET['page'];
    Oui, j'y ai pensé qu'après coup, sauf que je dois caster en (string) , puisque Home.php?page= peut valoir un numérique comme un mot clé (en l'occurrence, 'about', et 'contact').


    Aussi, il n'y a pas que les ereg() qui sont obsolètes, les fonctions mysql_* aussi, même si la communauté de Php n'a pas encore décidé que cela retourne une erreur type "DEPRECATED" comme pour le ereg().
    Ces fonctions mysql_* (du moins le driver) n'évolue plus depuis un sacré bout de temps, et depuis un sacré bout de temps aussi il y a 2 autres façons conseillés, PDO ou MySQLi.

    Citation Envoyé par RunCodePhp Voir le message
    Mais encore, ça fait une paye qu'il est dit de ne plus exploiter le HTML (balises/attributs) pour effectuer de la mise en forme, mais d'exploiter le CSS (dans une feuille de style CSS).
    Donc mettre des balises comme <font>, <b>, etc ... tout comme mettre des attributs bgcolor="", align="", etc ... tout cela est obsolète, à ne plus faire ou à retenir.
    J'ai voulu bien faire au début, mais ça ne rendait pas comme ça l'aurait dû (je suivais des exemples écrits noir sur blanc depuis un bouquin). Maintenant qu'on a trouvé cette aberration de Filezilla, je me sens bien con... Ca se trouve même soucis, les MaJ n'étaient pas systématiquement prises en compte quand je modifais et uploadais mon fichier .css !


    Citation Envoyé par RunCodePhp Voir le message
    Il faudrait peut être faire attention aux supports que tu utilises pour apprendre à faire un site Web, ils sont loin d'être à jour apriori (même si cela est juste par plaisir, un loisir).
    Oui, le danger d'internet et des sources qui compilent mais qui ne sont plus suivies. C'est vrai que lorsque je trouve des infos pertinentes mais qui datent du 2008 , 2009 , ... je sais bien que ça risque de pas être très "up-to-date", mais bon.

    Par ailleurs, l'exemple utilisant la fonction ereg('[[:digit:]]' , $var) venait d'ici, sur un tuto developpez.net !

  16. #16
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Oui, j'y ai pensé qu'après coup, sauf que je dois caster en (string) , puisque Home.php?page= peut valoir un numérique comme un mot clé (en l'occurrence, 'about', et 'contact').
    Faudrait peut être revoir la logique concernant cette partie, peut être même tout le principe.
    Un coup c'est un identifiant qui doit être obtenu, tantôt un nom, sans compter que ce qui est prévu de faire avec me semble assez différent, c'est pas très zen, vois tu.
    Il serait peut être bon de faire un choix : Soit inclure du contenu selon un identifiant, soit un nom.
    Ou alors créer 2 paramètres différents pour ces 2 choses différentes.
    Faut voir.

    Sinon, peut être faire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    $page = '';
    if (is_numeric($_GET['page']) && (int)$_GET['page'] > 0) {
        $page = (INT)$_GET['page'];
     
        // traitements lié
    }
    elseif ($_GET['page'] == 'about') {
        $page = 'About';
     
     
        // traitements lié
    }
    elseif ($_GET['page'] == 'contact') {
        $page = 'Contact';
     
     
        // traitements lié
    }
    ?>

  17. #17
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 391
    Points
    9 391
    Par défaut
    Le problème est qu'un client ftp ne se soucie pas de la date de modification du fichier, il compare le contenu.
    Or en ASCII certains caractères ne sont pas pris en compte. Alors qu'en binaire bah... On peut pas sauter un bit.

    One of the least-understood aspects of FTP transfers is the difference between ASCII and Binary mode data transfers. ASCII stands for American Standard Code for Information Interchange, and is a type of character encoding based on the English language used on devices that handle information stored in text. It includes 33 non-printed control characters and 94 printed characters such as letters and punctuation.

    When files are transferred in ASCII mode, the transferred data is considered to contain only ASCII formatted text. The party that is receiving the transferred data is responsible for translating the format of the received text to one that is compatible with their operating system. The most common example of how this is applied pertains to the way Windows and UNIX handle newlines. On a Windows computer, pressing the "enter" key inserts two characters in an ASCII text document - a carriage return (which places the cursor at the beginning of the line) and a line feed (which places the cursor on the line below the current one). On UNIX systems, only a line feed is used. ASCII text formatted for use on UNIX systems does not display properly when viewed on a Windows system and vice versa.

    Binary mode refers to transferring files as a binary stream of data. Where ASCII mode may use special control characters to format data, binary mode transmits the raw bytes of the file being transferred. In this way, the file is transferred in its exact original form.

  18. #18
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par transgohan
    il compare le contenu.
    Or en ASCII certains caractères ne sont pas pris en compte
    Merci pour ces précisions.

    Petite question, un peu hors sujet il est vrai.
    Si le fichier est encodé en UTF-8, comportera t-il plus de risque d'erreur si on le fait en mode ASCII ?
    Voire même que ce serait impossible, totalement incompatible (je pense à du contenu en tout genre : Russe, Chinois, etc ...).

    Ou alors ceci ne serait pas du tout lié à l'encodage du fichier et de son contenu mais uniquement d'une compatibilité entre les 2 OS (local/distant) ?

  19. #19
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Okay merci aussi transgohan pour la précision !

    Tant qu'on est dans les HS ( j'plaisante, faites, faites!) , j'en profite pour vous dire que la "correction" de mon site continue dans la section CSS cette fois :

    http://www.developpez.net/forums/d12...pb-layout-div/


    Désolé

  20. #20
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 391
    Points
    9 391
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Merci pour ces précisions.

    Petite question, un peu hors sujet il est vrai.
    Si le fichier est encodé en UTF-8, comportera t-il plus de risque d'erreur si on le fait en mode ASCII ?
    Voire même que ce serait impossible, totalement incompatible (je pense à du contenu en tout genre : Russe, Chinois, etc ...).

    Ou alors ceci ne serait pas du tout lié à l'encodage du fichier et de son contenu mais uniquement d'une compatibilité entre les 2 OS (local/distant) ?
    L'incompatibilité rendra certains caractère illisibles et qui seront ignorés. C'est le problème que je citais.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/05/2011, 01h29
  2. Google lance un grand concours d'applications pour Chrome
    Par Gordon Fowler dans le forum Google Chrome
    Réponses: 5
    Dernier message: 02/05/2011, 11h30
  3. Réponses: 0
    Dernier message: 19/03/2010, 02h11
  4. [Debutant]Probleme pour Debugger sours JCreator
    Par Flam dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 1
    Dernier message: 12/05/2004, 20h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo