[base de données ]ajout de HTML dans un billet

Guillaumedu73
Invité n'ayant pas de compte PHPfrance

08 oct. 2011, 17:37

Bonjour
je vous présente mon problème : j'ai crée un script de 2 pages permettant de créer des News(=billets) . Or quand je veux mettre par exemple intégrer une vidéo youtube :
<iframe width="560" height="315" src="*********************" frameborder="0" allowfullscreen></iframe>
Je n'y arrive pas , il y'a un carré blanc 'assez grand" avec comme fond la page d'erreur D'IE quand il trouve pas la vidéo.

Voici le code de la page d'ajout du billet:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
        <title>Mon blog</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		
    </head>
        
    <body>
<?php
if(!isset($_POST['rajout']))
{
?>
<form method="post" action="billetducon.php">
<p>
<input type="text" name="titre" id="titre" value="titre"/>
<br/>
<textarea name="rajout" rows="10" cols="45">
Entrez votre texte
</textarea>
<input type="submit" value="valider"/>
<?php
}


else
{
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=;dbname=', '', '', $pdo_options);
//rajout connexiion
$req=$bdd->prepare('INSERT INTO ducon(titre,contenu,date_creation) VALUES (:titre,:contenu,NOW())');
$req->execute(array('titre'=>$_POST['titre'],'contenu'=>$_POST['rajout']));

$req->closeCursor();

}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
}
?>
</body>
</html>
La page d'affichage:
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Poliboolold-groupe</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <link rel="stylesheet" media="screen" type="text/css" title="poli2" href="style.css" />

          </head>
 
   <body>

       <div id="banniere">
       

       </div>
 
       <div id="barreprojet">        
             <a href="warning.php">Docteur Ducon</a>   <a href="warning.php">Polipeople</a>   <a href="warning.php">Polilogiciel</a>   <a href="warning.php">Politribale</a>    <a href="tchat/mini_chat.php">Tchat</a>    <a href="warning.php">Forum</a>    <a href="warning.php">Aide</a>    <a href="warning.php">Suggestions</a>    <a href="warning.php">livre d'or</a>    <a href="warning.php">newlester</a>        
       </div>
 
 
 


<div id=membre>
<?php
if(isset ($_SESSION['id']) AND isset ($_SESSION['pseudo']))
{
echo "Bonjour ";
echo $_SESSION['pseudo'];

?>
<br/>
<a href="warning.php">Aller sur votre espace membre</a>
<br/>
<a href="membres/deconnexion.php">Déconnectez-vous</a>

<?php
}
else
{
?>
<h2>Espace-membre</h2>
<p>Veuillez vous connecter <br/>
<form method="post" action="membres/connexion.php">
<p>
<label for="pseudo">Pseudo:</label>
<input type="text" name="pseudo" id="pseudo" value="Pseudo"/>
<br/>
<label for="Mot de passe">Mot de passe:</label>
<input type="password" name="Motdepasse" id="Motdepasse" value="Mot de passe"/>
<br/>
<input type="submit" value="Valider" />

</p>
</form>
<p>
<br/>
Pour vous inscrire , cliquez <a href="membres/membres_inscription.php">Ici</a>
</p>
<?php
}
?>
</div>
<div id="actu">

<?php
// Connexion à la base de données
try
{
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
	$bdd = new PDO('mysql:host=;dbname=', '', '',$pdo_options);
}
catch(Exception $e)
{
        echo '<p>Erreur PDO dans '.$e->getFile().' L.'.$e->getLine().' : <br/> '.$e->getMessage().'<br /></p>';
}

$compter= $bdd->query('SELECT COUNT(id) AS nombre FROM ducon');
$resultat= $compter->fetch();


$nombre_article=$resultat['nombre'];
$perpage=4;
$numpage= ceil($nombre_article/$perpage);


if(isset($_GET['p'])AND $_GET['p']>0 AND $_GET['p']<=$numpage)
{
$pagecourante=$_GET['p'];
}
else
{
$pagecourante=1;
}

$compter->closeCursor();



// On récupère les 5 derniers billets
$req = $bdd->query('SELECT id, titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM ducon ORDER BY date_creation DESC LIMIT '.(($pagecourante-1)*$perpage).','.$perpage.'') or die(print_r($bdd->errorInfo()));


while ($donnees = $req->fetch())
{
?>
<div class="news">
    <h3>
        <?php echo htmlspecialchars($donnees['titre']); ?>
        <em>le <?php echo $donnees['date_creation_fr']; ?></em>
    </h3>
    
    <p>
    <?php
    // On affiche le contenu du billet
    echo nl2br($donnees['contenu']);
    ?>
    <br />
    <em><a href="commentaires.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em>
    </p>
</div>
<?php
} // Fin de la boucle des billets
$req->closeCursor();

for($i=1;$i<=$numpage;$i++)

{
if($i==$pagecourante)
{
echo "$i";
}
else
{         
echo "<a href=\"blog.php?p=$i\">$i</a>/";
}
}
?>
</div>



 
       <div id="pagebas">
       <p><a href="mailto:[email protected]">Contact</a>
              </p>

       </div>
 
   </body>
</html>
Merci d'avance

mathiro
Invité n'ayant pas de compte PHPfrance

08 oct. 2011, 19:25

Un problème d'encodage non?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 oct. 2011, 19:39

Si tu as un espace blanc qui t'ouvre une autre page html (même si c'est le message d'erreur de IE), c'est que l'iframe est bien interprétée... ton code est donc bon, le problème vient vraisemblablement de l'url que tu utilises ...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

guillaumedu73
Invité n'ayant pas de compte PHPfrance

08 oct. 2011, 21:06

Je vais sur une vidéo youtube. Je clique sur partager puis sur intégrer.
Pour la version moderne d'intégration : c'est une page d'erreur IE (dans un cadre)
Pour l'anciene version d'intégration : c'est rien qui s'affiche :carrément!!!!

mathiro
Invité n'ayant pas de compte PHPfrance

08 oct. 2011, 22:31

Donne un exemple

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 oct. 2011, 23:05

Contrôle le code source de la page qui est générée pour vérifier qu'il n'y a pas d'erreur... le nl2br() va rajouter des <br /> là où dans ton textarea tu as des retours à la ligne, ça peut peut-être poser problème s'il y a des retours à la ligne dans ta balise...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Guillaumedu73
Invité n'ayant pas de compte PHPfrance

09 oct. 2011, 13:49

It's a chinese language fur me :roll:

Donc concretement je dois changez quoi dans mon script?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 oct. 2011, 14:40

Dans ce cas on va peut être commencer par t'apprendre le chinois ;)

Ton code php sert à générer le code html qui est envoyé au navigateur pour être affiché. Quand dans ton navigateur tu fais afficher le code source de la page, c'est le code html généré qui va apparaître et s'il n'est pas bon, le navigateur ne pourra rien en faire.

Il faut donc commencer par regarder à quoi ressemble le code généré et voir si celui-ci est correct (repère l'endroit du code source où se trouve ton iframe, et vérifie s'il correspond bien au code que tu dois utiliser dans ta page).

S'il ne correspond pas, ben... montre le nous :) en fonction des choses en plus ou en moins ou en travers qu'il contiendra, il sera plus facile de savoir ce qui pose problème dans ton code php et qui empêche de faire apparaître la page attendue :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Guillaumedu73
Invité n'ayant pas de compte PHPfrance

10 oct. 2011, 12:04

Euh attend la tu me raconte du code en abstrait(=francais) , je fais comment dans la pratique?

ViPHP
ViPHP | 2577 Messages

10 oct. 2011, 12:19

En gros, ce qui t'est demandé, c'est comment est prise en compte l'iframe dans la page qui s'affiche.
Tu as saisi :
<iframe width="560" height="315" src="*********************" frameborder="0" allowfullscreen></iframe>
et qu'est ce qui s'affiche en html dans ta page ?

Guillaume73
Invité n'ayant pas de compte PHPfrance

10 oct. 2011, 20:37

On m'affiche un cadre avec la page d'erreur du navigateur utilisé.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 oct. 2011, 21:41

quelle erreur ? une 404 si oui c'est que le lien est pas bon !

@+
Il en faut peu pour être heureux ......

Guillaume73
Invité n'ayant pas de compte PHPfrance

12 oct. 2011, 12:10

Non un erreur du type: http://poliboolold.fr/ducon.php (le premier cadre)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 oct. 2011, 20:53

Si tu regardes le code source de la page que tu génères, celui-ci n'est pas correct :

Code : Tout sélectionner

<iframe width=\"560\" height=\"315\" src=\"http://www.youtube.com/embed/l7ZF7GI5LDw\" frameborder=\"0\" allowfullscreen></iframe> <br />
Il ne devrait pas y avoir de " \ " devant tes guillemets...

Un peu plus loin, c'est encore pire :
<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"http://www.youtube.com/embed/mT7B8OcH-Dw\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>    <br />
Ta page ne peut donc pas s'afficher correctement.

Il te faut donc trouver à quel moment tu ajoutes ces \ dans ta chaine (est-ce à l'affichage, à la lecture des données en base, à l'enregistrement des données, à l'envoi du formulaire...) pour éviter de le faire. Ca devrait te donner un code propre ce qui devrait grandement t'aider à avoir un site qui fonctionne :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Guillaumedu73
Invité n'ayant pas de compte PHPfrance

13 oct. 2011, 21:09

Désolé mais je comprend toujours rien. Je dois changez quoi comme chose , arreter de me sortir la meme chose que c'est moi qui doit trouvé: moi je suis débutant pas php bac +5.
Je dois changer quelque chose dans le code des mes pages (que je vous ai fourni je vous rapelle), ou dans le code d'envoie?

Merci d'avance