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

PHP & Base de données Discussion :

Sauts de ligne intempestifs sur une page générée via php


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 21
    Points
    21
    Par défaut Sauts de ligne intempestifs sur une page générée via php
    Bonjour à tous,

    Après d’infructueuses recherches googlesques et developpez.comesques, je fais appel à la communauté.

    J'ai un petit problème. Cette page :
    http://www.telkur-station.com/?timel...idbooktype=81#
    contient des sauts de lignes intempestifs aux endroits indiqués sur le screen ci-dessous, et facilement repérable avec FireBug qui affiche une ligne blanche. Et encore, là je suis sous firefox, j'ai essayé avec IE, et le saut de ligne se transforme en une multitude de saust de ligne, ça fait du vide dans la page, c'est moche. Très moche.
    Nom : problem.jpg
Affichages : 121
Taille : 520,6 Ko

    A signaler, que cette partie de page (tout ce qui est dans le div #timeline pour ceux qui souhaiteraient aller firebugger eux mêmes) est générée en php (un petit peu d'AJAX appelant la page).

    Des fois que ça aide, voici le php, encodé en ANSI sous notepad++

    Code php : 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
    228
    229
    230
    231
    232
    233
    234
    235
     
    <?php
    include_once ('bdd_connect.php');
    include_once('php_functions/timeline_functions.php');
     
     
    if(isset($_GET['mod']))
    {
    session_start(); //cas où on appelle le script avec AJAX
    $mod=(int)$_GET['mod'];
    }
    elseif(isset($_SESSION['modtimeline']))
    {
    $mod=$_SESSION['modtimeline'];
    }
    else
    {
    $mod=0;
    }
     
    $_SESSION['modtimeline']=$mod;
     
    //===========================================
    //requête globale
    //===========================================
    //on récupère les résultats du $_GET du menu afin de filtrer
    	if(isset($_GET['idbooktype']) and !empty($_GET['idbooktype']))
    	{
    		$idbooktype=(int)$_GET['idbooktype'];
    		$concat=" AND book.idbooktype = $idbooktype";
    	}
    	else
    	{
    	$concat='';
    	}
    	//requête pour récupérer tous les livres
    	//=======================================
       $sqlall='SELECT book.idbook FROM book WHERE book.displayed=1 ' . $concat . ' ORDER BY book.iuyear, book.ordering';
       $queryall=$dbbooks->query($sqlall);
     
       //initialisation des valeurs à comparer
       $iderabefore=0;		//ère précédente
       $iuyearbefore=0;		//année précédente
       $idseriebefore=0;	//série précédente
       $diffiuyear=true; 	//initialisation de diffiuyear à true pour afficher la première série
    	$k=1;
     
       include_once('class/book.class.php');
    //===========================================
    //Affichage sous forme de la timeline Del Rey
    //===========================================	
       while($arrayall=$queryall->fetch())
       {
    		//Informations principales sur chaque bouquin
    		//===========================================
    		$idbook=$arrayall['idbook'];
    		$book=new Book($idbook);
    		//Informations du bouquins
    		$bookinfo=$book->getInfo();
    			$content=GetNFirstWords(stripslashes($bookinfo['content']),100);
    			$bookname=$bookinfo['bookname'];
    			$erapath=$bookinfo['erapath'];
    			$eraname=$bookinfo['eraname'];
    			$eradescription=$bookinfo['eradescription'];
    			$idcurrentera=$bookinfo['idera'];
    			$iuyear=$bookinfo['iuyear'];
    		//Couverture principale
    		$maincover=$book->getMainCover();
    			if(empty($maincover)){$maincover='no_cover.jpg';}
    		//Série éventuelle
    		$series=$book->getSeries();
    			$idserie=$series[0]['idserie'];
    			$seriename=$series[0]['name'];
    		$isthereanyserie=$book->isThereAnySerie();
    		//===========================================
     
     
    		//Si l'ère est différente du bouquin d'avant alors on affiche le cadre ère
    		//========================================================================
           if($iderabefore!=$idcurrentera) //voir si l'on a vraiment besoin de refermer le div
           {
    	   $id_eraname=str_replace(" ","_",strtolower($eraname));
     
    		if($iderabefore!=0)
    		{
    			//à la première itération de iderabefore, on a pas besoin de refermer les html tag table et div era_content
    			//on referme l'ère précédente avant d'en recommencer une autre
    			echo "</table></div>";
    		}
     
    	   $div_era="<div class=\"timeline_era_title\" id=\"$id_eraname\">
    					<img src=\"$erapath\" alt=\"$eraname Era\" />
    					<p class=\"title\">$eraname</p>
    					<p class=\"description\">$eradescription</p>
    				</div><div class=\"era_content\"><table>";
    		echo $div_era;
           }
           $iderabefore=$idcurrentera;
     
     
     
    	   //construction du div book (sans l'afficher, afin de pouvoir gérer les cases derrière)
    	   //====================================================================================
    	   //ligne de titre
    	   $linetitle="<a href=\"?idbook=$idbook\">$bookname</a>";
    	   if(empty($idserie))
    	   {$classline='standalone';
    	   }
    	   else
    	   {$classline='bookname';
    		$linetitle="<a href=\"?idserie=$idserie\" class=\"serie\">$seriename</a>: $linetitle";
    	   }
     
    		//ligne artsites
    		$artists=$book->getArtists();
    		$stringartists='';//init
    		foreach($artists as $artist)
    		{
    		$artistname=$artist['ArtistName'];
    		$artistsurname=$artist['surname'];
    		$idartist=$artist['idartist'];
    		$stringartists=$stringartists . "<a href=\"index.php?idartist=$idartist\">$artistname $artistsurname</a>, ";
    		}
    		$stringartists=substr($stringartists,0,strlen($stringartists)-2);
     
    	   $div_book_classic="
    	   <tr class=\"bookline\">
    			<td class=\"firstcol\"></td>
    			<td class=\"secondcol\"></td>
    			<td></td>
    			<td colspan=\"3\" class=\"$classline\"><a href=\"index.php?idbook=$idbook\" class=\"booklink\" onmouseover=\"timerIn($idbook)\" onmouseout=\"timerOut()\">$bookname</a></td>
    		</tr>";	   
     
     
     
     
    	   $div_book_full="<tr class=\"full_timeline_line\">
    				<td class=\"cover_of_timeline\">
    					<p>$iuyear</p>
    					<img src=\"img/covers/$maincover\" alt=\"$bookname\" />
    				</td>
    				<td class=\"timeline_book_info\">
    					<h3>$linetitle</h3>
    					<p>By $stringartists</p>
    					<p>$content <a href=\"?idbook=$idbook\" class=\"more_info\">>>More info</a></p>
    				</td>
    	   </tr>
    	   ";
     
     
     
    	   //Si l'année est différente du bouquin d'avant alors on affiche l'année
    	   //=====================================================================
    			//--test non pertinent dans le cas d'un affichage complet
           if($iuyearbefore!=$iuyear and $mod==0)
           {
    			//ligne de titre
    			if($iuyear<0)
    			{
    			$word='BEFORE';
    			$displayiuyear=-$iuyear;
    			}
    			else
    			{
    			$displayiuyear=$iuyear;
    			$word='AFTER';
    			}
    			$printiuyearline=	"<tr class=\"nextyear\">
    									<td class=\"firstcol\"></td>
    									<td class=\"secondcol\"></td>
    									<td colspan=\"3\"></td>
    								</tr>
    								<tr>
    									<td class=\"firstcol\"></td>
    									<td colspan=\"2\" class=\"timeline_year\">$displayiuyear</td>
    									<td colspan=\"2\" class=\"timeline_subtitle\">YEARS $word STAR WARS: A New Hope</td>
    								</tr>
    								<tr class=\"nextyear\">
    									<td class=\"firstcol\"></td>
    									<td class=\"secondcol\"></td>
    									<td colspan=\"3\"></td>
    								</tr>";
    			echo $printiuyearline;
           $iuyearbefore=$iuyear;
    	   $diffiuyear=true;
           }
           else
           {
           $diffiuyear=false; //si les séries sont identiques, pemettra de faire le test pour savoir si l'on réaffiche ou pas
           }
    	   //======================================================================================
     
     
     
           //Si idserie n'est pas vide alors on vient afficher le nom de la série
    	   //======================================================================================
    			//-- test non pertinent dans le cas d'un affichage complet
           if(!empty($idserie) and ($idseriebefore!=$idserie or $diffiuyear==true) and $mod==0)
           {
     
    		$printserieline=	'<tr class="serieline">
    								<td class="firstcol"></td>
    								<td class="secondcol"></td>
    								<td></td>
    								<td colspan="3" class="seriename"><a href="index.php?idserie=' . $idserie . '">' . $seriename . '</a></td>
    							</tr>';	
    	   echo $printserieline;
    	   $idseriebefore=$idserie;
    	   $standalone=0;
           }
       	   //======================================================================================
     
     
     
           //On affiche le bouquin
       	   //======================================================================================
    		if($mod==0)
    		{
    		echo $div_book_classic;
    		}
    		elseif($mod==1)
    		{
    		echo $div_book_full;
    		}
       	   //======================================================================================
     
       $k++;//compteur bouquin
       }
       $queryall->closeCursor();
       //on referme une dernière fois le tableau et le div de era
    ?>
    	</table>
    	</div>
    	</div>
    </div>

    En vous remerciant.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    quand on fait un copier-coller du code html généré, on trouve des ???? intempestifs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    </tr>????<tr class="nextyear">
    Il faut trouver d'où ça provient...

    - caractères invisibles ?
    - problème d'encodage du fichier ? (-> convertir en UTF-8 sans BOM)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 21
    Points
    21
    Par défaut
    Effectivement, merci pour l'astuce copier/coller, il y a bien des points d'interrogation qui semblent correspondre à chaque occurrence de "echo" dans mon code php.

    Emmerdant.

    Du coup, j'ai converti en UTF-8 without BOM et ça ne marche pas... même en repartant d'une page vierge...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 21
    Points
    21
    Par défaut
    Double post mais c'est pour la bonne cause, je crois que ça marche.

    Je me suis "amusé" à nettoyer tous mes fichiers php en enlevant les caractères "é" "è" "à" "ù" et "ê" et j'ai tout re-re-re-converti en UTF-8 sans BOM.

    Il semblerait que ça marche. Si quelqu'un pouvait me confirmer que ce n'est pas un miracle chez moi et que ça marche pour tout le monde ce serait super

  5. #5
    Invité
    Invité(e)
    Par défaut
    C'est bon pour moi (Firefox / IE9)

    Bon Noël !

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 46
    Points : 21
    Points
    21
    Par défaut
    Bon, ça a marché !

    BON NOËL en retard.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Récapitulatif de 12 lignes maximum sur une page
    Par joubk dans le forum Excel
    Réponses: 8
    Dernier message: 02/11/2012, 12h32
  2. [MySQL] créer et gérer un espace publicitaire sur une page web dynamique (php, js, etc)
    Par taftchap dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/08/2011, 18h12
  3. Afficher image sur une page html via c
    Par Relyss dans le forum Réseau
    Réponses: 3
    Dernier message: 17/12/2009, 11h40
  4. [RegEx] Remplacement de caractères sur une page générée en php
    Par _Alain_ dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2007, 13h18

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