par
spirou » 31 déc. 2005, 18:33
Bonjour à tous !!
J'ai divers problèmes avec le formulaire et l'insertion d'un petit bbcode et je n'arrive pas à les résoudre
Je les énumère :
1- Mon textarea n'est pas considéré comme vide, et si je l'inialise à 0, il n'y a plus d'affichage.
2- J'ai une variable $titre dans ma page qui doit avoir la valeur d'un input text, mais je ne comprends pas pourquoi, il prend la valeur du get (edition) de l'adresse de ma page (seulement en ligne, en local ça ne le fait pas).
3- Il y a un contrôle pour savoir si ma variable $titre est différente de rien, et le cas échéant, affichage dans mon textarea, mais lorsque je fais plusieurs submit, elle s'affiche une nouvelle fois dans mon textarea, donc j'obtiens plusieurs fois, $titre dans mon textarea.
4- Lorsque je clique sur un bouton de bbcode, et que je me place entre les 2 balises et que je clique sur un autre bouton de bbcode, l'affichage se fait à coté.
Cela le fait en ligne, car en local c'est bon.
Ex:
En local [ b][bleu][/bleu][/b ] ==> ok
Et en ligne [ b][/b ][bleu][/bleu]
Voilà pour les principaux bugs de mon code.
Comme je ne sais pas d'où viennent les problèmes, je vous mets tout le code, désolé
if($_GET['astuce'] == "edition")
{
?>
<?php
if(isset($_POST['pseudo']) && isset($_POST['titre']) && isset($_POST['desc']) && isset($_POST['mail']) &&
isset($_POST['nom_lien']))
{
if(!empty($_POST['pseudo']) && !empty($_POST['titre']) && !empty($_POST['desc']) && !empty($_POST['mail']) &&
!empty($_POST['nom_lien']))
{
$pseudo = htmlentities($_POST['pseudo']);
$titre = htmlentities($_POST['titre']);
$astuce = nl2br(htmlentities($_POST['desc']));
$mail = htmlentities($_POST['mail']);
$nom_lien = htmlentities($_POST['nom_lien']);
}
else
{
$erreur_champ = "";
if(empty($_POST['pseudo']))
{
$erreur_champ = "Vous devez indiquez votre pseudo";
}
if(empty($_POST['titre']))
{
$erreur_champ = $erreur_champ . "<br />Vous devez donnez un titre à votre astuce";
}
if(empty($_POST['mail']))
{
$erreur_champ = $erreur_champ . "<br />Vous devez fournir une adresse e-mail";
}
if(empty($_POST['nom_lien']))
{
$erreur_champ = $erreur_champ . "<br />Vous devez donnez un nom pour la génération d'un lien pour votre astuce";
}
if(empty($_POST['desc']))
{
$erreur_champ = $erreur_champ . "<br />Vous devez donnez une description de votre astuce";
}
echo '<p style="color: #cc0000">' . $erreur_champ . '</p>';
}
if(isset($_FILES['image']) && !empty($_FILES['image']['tmp_name']) )
{
unset($erreur);
$extension_tolere = array('png', 'jpg', 'jpeg', 'gif', 'PNG', 'JPG', 'JPEG', 'GIF'); // extension d'images autorisées
$poids_max = 80000;
$dossier_upload = "../images/upload/";
if( !in_array( substr(strrchr($_FILES['image']['name'], '.'), 1), $extension_tolere ) ) // si l'extension n'est pas de type $extension_tolere
{
$erreur = 'Votre image doit-être de type png, jpeg ou jpg.';
}
elseif( file_exists($_FILES['image']['tmp_name']) // si le fichier existe
&& filesize($_FILES['image']['tmp_name']) > $poids_max) // et si son poids est supérieur à poids_max
{
$erreur = 'Votre image doit être inférieure à 80Ko !';
}
if(!isset($erreur)) // s'il n'y pas d'erreur
{
$dest_img = basename($_FILES['image']['name']); // name signifie le nom de l'image sur la machine du visiteur
$dest_img = strtr($dest_img,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); // remplace les caractères spéciaux
$dest_img = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_img); // remplace les autres caractères spéciaux
move_uploaded_file($_FILES['image']['tmp_name'], $dossier_upload . $dest_img); // tmp_name chemin temporaire du fichier
$chemin = $dossier_upload . $dest_img;
}
if(isset($erreur))
{
echo '<p>' . $erreur .'</p>';
}
}
}
?>
<form name="form" action="astuces.php?astuce=edition" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="80000" />
<div id="haut_form">
<div id="hg"></div>
<div id="hd"></div>
</div>
<div id="contour">
<fieldset>
<legend>Vos identifiants</legend>
<p class="input_text" style="margin-top: 15px">
<input id="pseudo" class="text" type="text" name="pseudo" maxlength="12" <?php if(isset($pseudo)) { echo 'value="' .$pseudo . '"'; } ?> />
<label for="pseudo">
Votre pseudo
</label>
</p>
<p class="input_text">
<input id="mail" class="text" type="text" name="mail" maxlength="50" <?php if(isset($mail)) { echo 'value="' .$mail . '"'; } ?> />
<label for="mail">
Votre e-mail
</label>
</p>
</fieldset>
<fieldset>
<legend>Titre et nom du lien de votre astuce</legend>
<p class="input_text" style="margin-top: 15px">
<input id="titre" class="text" type="text" name="titre" maxlength="50" <?php if(isset($titre)) { echo 'value="' .$titre . '"'; } ?> />
<label for="titre">
Titre de votre astuce
</label>
</p>
<p class="input_text">
<input id="nom_lien" class="text" type="text" name="nom_lien" maxlength="20" <?php if(isset($nom_lien)) { echo 'value="' .$nom_lien . '"'; } ?> />
<label for="nom_lien">
Nom du lien de votre astuce
</label>
</p>
</fieldset>
<fieldset style="margin-bottom: 0">
<legend>Votre astuce</legend>
<p class="input_text">
<span style="margin-left: 15px">
Ajouter une image
</span>
<input type="file" name="image" /><input type="submit" value="envoyer" style="width: 100px" />
<?php
if(isset($chemin) && !empty($chemin))
{
if(file_exists($chemin))
{
echo "
<SCRIPT type=\"text/javascript\">
function ajout(img)
{
document.form.desc.value += '[img]". $dest_img . "[\/img]';
}
</SCRIPT>
";
echo '<input type="button" value="ajouter l\'image" style="padding: 0 5px;
text-decoration: blink; color: #6600cc" onclick="ajout(\'img\')" />';
}
}
?>
</p>
<p id="menu_form">
<span id="bouton_couleur">
<span style="color: #000; font-weight: 700">Couleur</span>
<input type="button" id="coul_bleu" onclick="bbcode('bleu')" />
<input type="button" id="coul_rouge" onclick="bbcode('rouge')" />
<input type="button" id="coul_vert" onclick="bbcode('vert')" />
<input type="button" id="coul_gris" onclick="bbcode('gris')" />
<input type="button" id="coul_violet" onclick="bbcode('violet')" />
</span>
<input type="button" value="Gras" style="width:50px; font-weight: 700" onclick="bbcode('b')" />
<input type="button" value="Italique" style="width:70px; font-style:italic" onclick="bbcode('i')" />
<input type="button" value="Souligné" style="width:70px; text-decoration: underline" onclick="bbcode('u')" />
<textarea name="desc">
<?php if(isset($titre))
{
echo '[titre]' . $titre .'[/titre]';
}
if(isset($astuce))
{
echo $astuce;
}
?>
</textarea>
<input type="submit" value="apercu" style="width: 100px" />
</p>
</fieldset>
</div>
<div id="bas_form">
<div id="bg"></div>
<div id="bd"></div>
</div>
</form>
<?php
/************************************************/
/* conversion du bbcode en balise html */
/************************************************/
if(isset($astuce) && !empty($astuce))
{
$bbcode = array("[i]", "[/i]", "[b]", "[/b]", " [u]", "[/u]", "[titre]", "[/titre]", "[img]",%20"[/img]",
"[bleu]", "[rouge]", "[vert]", "[gris]", "[violet]", "[/bleu]", "[/rouge]", "[/vert]", "[/gris]",
"[/violet]");
$html = array("<i>","</i>","<b>","</b>","<u>","</u>","<h3>","</h3>", "<img src=\"../images/upload/", "\" />",
"<span style=\"color: #00f\">", "<span style=\"color: #cc0000\">", "<span style=\"color: #266868\">",
"<span style=\"color: #999999\">", "<span style=\"color: #948ec6\">", "</span>", "</span>", "</span>",
"</span>", "</span>");
$astuce_html = str_replace($bbcode, $html, $astuce);
echo '<div id="prevualisation">' . $astuce_html . '</div>';
}
?>
Je peux vous donner un lien par MP pour que vous visualisiez concrètement les problèmes, je ne le mets pas sur le site car ce n'est pas présentable à mon goût et le design est super nul
Merci

Bonjour à tous !!
J'ai divers problèmes avec le formulaire et l'insertion d'un petit bbcode et je n'arrive pas à les résoudre :cry:
Je les énumère :
1- Mon textarea n'est pas considéré comme vide, et si je l'inialise à 0, il n'y a plus d'affichage.
2- J'ai une variable $titre dans ma page qui doit avoir la valeur d'un input text, mais je ne comprends pas pourquoi, il prend la valeur du get (edition) de l'adresse de ma page (seulement en ligne, en local ça ne le fait pas).
3- Il y a un contrôle pour savoir si ma variable $titre est différente de rien, et le cas échéant, affichage dans mon textarea, mais lorsque je fais plusieurs submit, elle s'affiche une nouvelle fois dans mon textarea, donc j'obtiens plusieurs fois, $titre dans mon textarea.
4- Lorsque je clique sur un bouton de bbcode, et que je me place entre les 2 balises et que je clique sur un autre bouton de bbcode, l'affichage se fait à coté.
Cela le fait en ligne, car en local c'est bon.
Ex:
En local [ b][bleu][/bleu][/b ] ==> ok
Et en ligne [ b][/b ][bleu][/bleu]
Voilà pour les principaux bugs de mon code.
Comme je ne sais pas d'où viennent les problèmes, je vous mets tout le code, désolé :oops:
[php]
if($_GET['astuce'] == "edition")
{
?>
<?php
if(isset($_POST['pseudo']) && isset($_POST['titre']) && isset($_POST['desc']) && isset($_POST['mail']) &&
isset($_POST['nom_lien']))
{
if(!empty($_POST['pseudo']) && !empty($_POST['titre']) && !empty($_POST['desc']) && !empty($_POST['mail']) &&
!empty($_POST['nom_lien']))
{
$pseudo = htmlentities($_POST['pseudo']);
$titre = htmlentities($_POST['titre']);
$astuce = nl2br(htmlentities($_POST['desc']));
$mail = htmlentities($_POST['mail']);
$nom_lien = htmlentities($_POST['nom_lien']);
}
else
{
$erreur_champ = "";
if(empty($_POST['pseudo']))
{
$erreur_champ = "Vous devez indiquez votre pseudo";
}
if(empty($_POST['titre']))
{
$erreur_champ = $erreur_champ . "<br />Vous devez donnez un titre à votre astuce";
}
if(empty($_POST['mail']))
{
$erreur_champ = $erreur_champ . "<br />Vous devez fournir une adresse e-mail";
}
if(empty($_POST['nom_lien']))
{
$erreur_champ = $erreur_champ . "<br />Vous devez donnez un nom pour la génération d'un lien pour votre astuce";
}
if(empty($_POST['desc']))
{
$erreur_champ = $erreur_champ . "<br />Vous devez donnez une description de votre astuce";
}
echo '<p style="color: #cc0000">' . $erreur_champ . '</p>';
}
if(isset($_FILES['image']) && !empty($_FILES['image']['tmp_name']) )
{
unset($erreur);
$extension_tolere = array('png', 'jpg', 'jpeg', 'gif', 'PNG', 'JPG', 'JPEG', 'GIF'); // extension d'images autorisées
$poids_max = 80000;
$dossier_upload = "../images/upload/";
if( !in_array( substr(strrchr($_FILES['image']['name'], '.'), 1), $extension_tolere ) ) // si l'extension n'est pas de type $extension_tolere
{
$erreur = 'Votre image doit-être de type png, jpeg ou jpg.';
}
elseif( file_exists($_FILES['image']['tmp_name']) // si le fichier existe
&& filesize($_FILES['image']['tmp_name']) > $poids_max) // et si son poids est supérieur à poids_max
{
$erreur = 'Votre image doit être inférieure à 80Ko !';
}
if(!isset($erreur)) // s'il n'y pas d'erreur
{
$dest_img = basename($_FILES['image']['name']); // name signifie le nom de l'image sur la machine du visiteur
$dest_img = strtr($dest_img,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); // remplace les caractères spéciaux
$dest_img = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_img); // remplace les autres caractères spéciaux
move_uploaded_file($_FILES['image']['tmp_name'], $dossier_upload . $dest_img); // tmp_name chemin temporaire du fichier
$chemin = $dossier_upload . $dest_img;
}
if(isset($erreur))
{
echo '<p>' . $erreur .'</p>';
}
}
}
?>
<form name="form" action="astuces.php?astuce=edition" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="80000" />
<div id="haut_form">
<div id="hg"></div>
<div id="hd"></div>
</div>
<div id="contour">
<fieldset>
<legend>Vos identifiants</legend>
<p class="input_text" style="margin-top: 15px">
<input id="pseudo" class="text" type="text" name="pseudo" maxlength="12" <?php if(isset($pseudo)) { echo 'value="' .$pseudo . '"'; } ?> />
<label for="pseudo">
Votre pseudo
</label>
</p>
<p class="input_text">
<input id="mail" class="text" type="text" name="mail" maxlength="50" <?php if(isset($mail)) { echo 'value="' .$mail . '"'; } ?> />
<label for="mail">
Votre e-mail
</label>
</p>
</fieldset>
<fieldset>
<legend>Titre et nom du lien de votre astuce</legend>
<p class="input_text" style="margin-top: 15px">
<input id="titre" class="text" type="text" name="titre" maxlength="50" <?php if(isset($titre)) { echo 'value="' .$titre . '"'; } ?> />
<label for="titre">
Titre de votre astuce
</label>
</p>
<p class="input_text">
<input id="nom_lien" class="text" type="text" name="nom_lien" maxlength="20" <?php if(isset($nom_lien)) { echo 'value="' .$nom_lien . '"'; } ?> />
<label for="nom_lien">
Nom du lien de votre astuce
</label>
</p>
</fieldset>
<fieldset style="margin-bottom: 0">
<legend>Votre astuce</legend>
<p class="input_text">
<span style="margin-left: 15px">
Ajouter une image
</span>
<input type="file" name="image" /><input type="submit" value="envoyer" style="width: 100px" />
<?php
if(isset($chemin) && !empty($chemin))
{
if(file_exists($chemin))
{
echo "
<SCRIPT type=\"text/javascript\">
function ajout(img)
{
document.form.desc.value += '[img]". $dest_img . "[\/img]';
}
</SCRIPT>
";
echo '<input type="button" value="ajouter l\'image" style="padding: 0 5px;
text-decoration: blink; color: #6600cc" onclick="ajout(\'img\')" />';
}
}
?>
</p>
<p id="menu_form">
<span id="bouton_couleur">
<span style="color: #000; font-weight: 700">Couleur</span>
<input type="button" id="coul_bleu" onclick="bbcode('bleu')" />
<input type="button" id="coul_rouge" onclick="bbcode('rouge')" />
<input type="button" id="coul_vert" onclick="bbcode('vert')" />
<input type="button" id="coul_gris" onclick="bbcode('gris')" />
<input type="button" id="coul_violet" onclick="bbcode('violet')" />
</span>
<input type="button" value="Gras" style="width:50px; font-weight: 700" onclick="bbcode('b')" />
<input type="button" value="Italique" style="width:70px; font-style:italic" onclick="bbcode('i')" />
<input type="button" value="Souligné" style="width:70px; text-decoration: underline" onclick="bbcode('u')" />
<textarea name="desc">
<?php if(isset($titre))
{
echo '[titre]' . $titre .'[/titre]';
}
if(isset($astuce))
{
echo $astuce;
}
?>
</textarea>
<input type="submit" value="apercu" style="width: 100px" />
</p>
</fieldset>
</div>
<div id="bas_form">
<div id="bg"></div>
<div id="bd"></div>
</div>
</form>
<?php
/************************************************/
/* conversion du bbcode en balise html */
/************************************************/
if(isset($astuce) && !empty($astuce))
{
$bbcode = array("[i]", "[/i]", "[b]", "[/b]", " [u]", "[/u]", "[titre]", "[/titre]", "[img]",%20"[/img]",
"[bleu]", "[rouge]", "[vert]", "[gris]", "[violet]", "[/bleu]", "[/rouge]", "[/vert]", "[/gris]",
"[/violet]");
$html = array("<i>","</i>","<b>","</b>","<u>","</u>","<h3>","</h3>", "<img src=\"../images/upload/", "\" />",
"<span style=\"color: #00f\">", "<span style=\"color: #cc0000\">", "<span style=\"color: #266868\">",
"<span style=\"color: #999999\">", "<span style=\"color: #948ec6\">", "</span>", "</span>", "</span>",
"</span>", "</span>");
$astuce_html = str_replace($bbcode, $html, $astuce);
echo '<div id="prevualisation">' . $astuce_html . '</div>';
}
?>
[/php]
Je peux vous donner un lien par MP pour que vous visualisiez concrètement les problèmes, je ne le mets pas sur le site car ce n'est pas présentable à mon goût et le design est super nul :mrgreen:
Merci :P