Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2014-12-23T13:29:05+01:00Les derniers messages parus sur le forum de Zeste de Savoir.Vérifier si un doctype existe déjà sur la page, message #360462014-12-23T13:29:05+01:00WinXaito/@WinXaitohttps://zestedesavoir.com/forums/sujet/1984/verifier-si-un-doctype-existe-deja-sur-la-page/?page=1#p36046<p>Appeler seul sur la page ? C'est à dire sur une page qui contient que tu PHP ? Si c'est le cas alors oui.</p>Vérifier si un doctype existe déjà sur la page, message #360302014-12-23T11:22:22+01:00Chaopale Lamecarlate/@Chaopale%20Lamecarlatehttps://zestedesavoir.com/forums/sujet/1984/verifier-si-un-doctype-existe-deja-sur-la-page/?page=1#p36030<p>Y a-t-il des cas où error.php serait appelée seule sur la page ? Si non, si elle est dédiée à être inclue à chaque fois, ne lui faire contenir que l'info importante et pas le head etc, ne serait-ce pas mieux ?</p>Vérifier si un doctype existe déjà sur la page, message #357152014-12-22T09:34:02+01:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/1984/verifier-si-un-doctype-existe-deja-sur-la-page/?page=1#p35715<p>J'ai mis un lien vers la doc de la temporisation de sortie.</p>
<p>La réponse est envoyé uniquement quand ob_end_flush() est appelé après ob_start(). Tu peux même appeler plusieurs fois la fonction pour hiérarchisé le traitement.</p>
<p>Il y a aussi la possibilité de "streaming" de ta réponse, c'est-à-dire envoyer une petite partie de ton code avec ob_flush(), sans attendre d'envoyer toute la page (tu peux tester avec sleep).</p>
<p>La doc explique très bien la temporisation.</p>Vérifier si un doctype existe déjà sur la page, message #356392014-12-21T16:25:01+01:00WinXaito/@WinXaitohttps://zestedesavoir.com/forums/sujet/1984/verifier-si-un-doctype-existe-deja-sur-la-page/?page=1#p35639<p>Sur le faite de réfléchir avant, je suis pleinement d'accord.
Et c'est à dire la temporisation de sortie ?</p>Vérifier si un doctype existe déjà sur la page, message #356282014-12-21T15:52:27+01:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/1984/verifier-si-un-doctype-existe-deja-sur-la-page/?page=1#p35628<p>Il s'agit donc d'un problème de structuration. Il faut peut-être remettre en question ta façon de faire. Ou réfléchir un peu plus à la structure du code avant de foncer tête baissée. <img alt=";)" src="/static/smileys/clin.png"></p>
<p>Ou utiliser la temporisation de sortie. <img alt=":D" src="/static/smileys/heureux.png"></p>Vérifier si un doctype existe déjà sur la page, message #355862014-12-21T11:46:04+01:00WinXaito/@WinXaitohttps://zestedesavoir.com/forums/sujet/1984/verifier-si-un-doctype-existe-deja-sur-la-page/?page=1#p35586<p>Oui, c'est plus ça le problème que le doctype en lui même.</p>Vérifier si un doctype existe déjà sur la page, message #355752014-12-21T11:15:20+01:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/1984/verifier-si-un-doctype-existe-deja-sur-la-page/?page=1#p35575<p>Pour répondre à ta question normalement le navigateur s'arrête au premier Doctype, et si c'est le même qui est en double tu ne risques rien. Il s'agit donc juste d'une question de goût du développeur pour qualifier ceci de "propre" ou "pas propre".</p>
<p>Pour la solution d'<a href="http://zestedesavoir.com/forums/sujet/1984/verifier-si-un-doctype-existe-deja-sur-la-page/?page=1#p35571">artragis</a>, c'est assez contraignent d'utiliser une variable. Il faudrait plutôt voir avec <a href="http://php.net/manual/fr/book.outcontrol.php">la temporisation de sortie</a>, regarde <em><a href="http://php.net/manual/fr/function.ob-start.php">ob_start</a>()</em>.</p>
<p><strong>EDIT :</strong>
<em>Tu as posté ta réponse pendant que j'écrivais la mienne. Ce n'est pas très stable de déclarer deux fois les éléments (html, body, head…).</em></p>Vérifier si un doctype existe déjà sur la page, message #355732014-12-21T11:07:32+01:00WinXaito/@WinXaitohttps://zestedesavoir.com/forums/sujet/1984/verifier-si-un-doctype-existe-deja-sur-la-page/?page=1#p35573<p>Bonjour, je ne sais pas si c'est bien ce que j'attend. Je vais essayer de détailler un peu plus:</p>
<p>index.php:</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12</pre></div></td><td class="code"><div class="codehilite"><pre><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html></span>
<span class="nt"><head></span>
<span class="nt"><meta</span> <span class="na">charset=</span><span class="s">"utf-8"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"viewport"</span> <span class="na">content=</span><span class="s">"width=device-width; initial-scale=1.0;"</span><span class="nt">></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="cp"><?php </span>
<span class="cp"> require_once("error.php");</span>
<span class="cp"> ?></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</pre></div>
</td></tr></table>
<p>Un autre fichier php:</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="codehilite"><pre><span class="cp"><?php</span> <span class="k">require_once</span><span class="p">(</span><span class="s2">"error.php"</span><span class="p">);</span><span class="cp">?></span><span class="x"></span>
</pre></div>
</td></tr></table>
<p>Et enfin le fichier error.php:</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10</pre></div></td><td class="code"><div class="codehilite"><pre><span class="cp"><!DOCTYPE html></span>
<span class="nt"><html></span>
<span class="nt"><head></span>
<span class="nt"><meta</span> <span class="na">charset=</span><span class="s">"utf-8"</span> <span class="nt">/></span>
<span class="nt"><meta</span> <span class="na">name=</span><span class="s">"viewport"</span> <span class="na">content=</span><span class="s">"width=device-width; initial-scale=1.0;"</span><span class="nt">></span>
<span class="nt"></head></span>
<span class="nt"><body></span>
<span class="nt"><p></span>ERROR<span class="nt"></p></span>
<span class="nt"></body></span>
<span class="nt"></html></span>
</pre></div>
</td></tr></table>
<p>Comme on peu le voir, avec index.php, le toute l'en-tête et le body sont ajouté à nouveau. </p>Vérifier si un doctype existe déjà sur la page, message #355712014-12-21T10:51:25+01:00artragis/@artragishttps://zestedesavoir.com/forums/sujet/1984/verifier-si-un-doctype-existe-deja-sur-la-page/?page=1#p35571<p>N'ayant pas bien compris ton besoin, je vais tenter de répondre à la question "brute" :</p>
<p>gageons que le contenu de ta page est contenu dans la variable $contenu_page</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4
5
6
7</pre></div></td><td class="code"><div class="codehilite"><pre><span class="cp"><?php</span>
<span class="k">if</span><span class="p">(</span><span class="nv">$contenu_page</span> <span class="o">==</span> <span class="s1">''</span> <span class="o">||</span> <span class="nx">str_pos</span><span class="p">(</span><span class="s1">'DOCTYPE html'</span><span class="p">,</span> <span class="nv">$contenu_page</span><span class="p">)</span> <span class="o">===</span> <span class="k">false</span><span class="p">){</span>
<span class="nv">$contenu_page</span> <span class="o">=</span> <span class="s2">"<! DOCTYPE html >"</span><span class="o">.</span> <span class="p">(</span><span class="k">empty</span><span class="p">(</span><span class="nv">$contenu_page</span><span class="p">)</span><span class="o">?</span><span class="s1">''</span><span class="o">:</span><span class="nv">$contenu_page</span><span class="p">);</span>
<span class="p">}</span>
<span class="cm">/* et à la fin */</span>
<span class="k">echo</span> <span class="nv">$contenu_page</span><span class="p">;</span><span class="c1">//affiche la page entière</span>
</pre></div>
</td></tr></table>Vérifier si un doctype existe déjà sur la page, message #355692014-12-21T10:44:23+01:00WinXaito/@WinXaitohttps://zestedesavoir.com/forums/sujet/1984/verifier-si-un-doctype-existe-deja-sur-la-page/?page=1#p35569<p>Bonjour,</p>
<p>sur ma page, quand j'ai une erreur, j'inclue une page d'erreur.
Mais certaine page possède déjà le "Doctype html", alors que d'autre non. Je voulais savoir si ça posais problème qu'il se mette à double ou non. Le cas échéant, le supprimer ou le détecter si possible.</p>
<p>En vous remerciant, WinXaito.</p>