Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Probleme de catégories...
Envoyé par: Fann

Bonjour à tous.

Voiloà, je suis en train de refaire mon site afind e me débarrasser de xoops, et j'ai un souci avec un formulaire qui fait appel à une table autre que celle dans laquelle on insert les valeur, dans une liste déroulante.

Voici le code du formulaire :

[...]
<form action="liste_dossier.php" method="post">
<p>Titre :<input type="text" size="30" name="titre" value="<? echo $titre; ?>"></p>

<p>Rubrique : <?
// Pour afficher la liste
print(html_select_rubrique());
?></p>

<p>Texte d'info (qui s'affichera sur la page affichant la liste des dossiers) :<br>
<textarea name="pre_contenu" cols="100" rows="10"><? echo $pre_contenu; ?></textarea></p>

<p>Contenu :<br>
<textarea name="contenu" cols="100" rows="15"><? echo $contenu; ?></textarea></p>

<p>
<input type="hidden" name="id_dossier" value="<? echo $id_dossier; ?>">
<input type="submit" value="Envoyer">
</p>
</form>
[...]

Voici le code de la foction a laquelle fait appel le formulaire :

function html_select_rubrique($parent = false, $spacer=false){
if($parent){
$ret = '';
$sql = "SELECT * FROM `rub_dossiers` WHERE id_parent='".$parent."' ORDER BY titre";
}else{
$ret = '<select name="rub_select">';
$sql = "SELECT * FROM `rub_dossiers` WHERE id_parent='0' OR id_parent='' ORDER BY titre";
}
$res = mysql_query($sql);
if(mysql_num_rows($res) == 0){
return;
}
while($row = mysql_fetch_array($res)){
$ret .= '<option value="'.$row["id"].'">'.$spacer.$row["titre"].'</option>';
if($row["id"]){
$ret .= html_select_rubrique($row["id"],($spacer.'&nbsp;'));
}
$ret .= html_option_dossier($row["id"],($spacer.'&nbsp;-'));
}
if(!$parent){
$ret .= '</select>';
}
return $ret;
}
function html_option_dossier($rid, $spacer){
$ret = '';
$sql = "SELECT * FROM `dossiers` WHERE rid='".$rid."'";
$res = mysql_query($sql);
if(mysql_num_rows($res) == 0){
return;
}
while($row = mysql_fetch_array($res)){
$ret .= '<option value="d'.$row["id"].'">'.$spacer.$row["titre"].'</option>';
}
return $ret;
}

Et enfin le fichier qui insert les données dans les tables : (un partie)

<?
// Vérification : peut-on poster une news ?

if (isset($_POST['titre']) AND isset($_POST['pre_contenu']) AND isset($_POST['contenu']))
if (empty($_POST['titre']) OR empty($_POST['contenu']))
{
echo ('Attention ! Seuls les champs suite et liens peuvent être vides !');
}
else
{
$titre = addslashes($_POST['titre']);
$contenu = addslashes($_POST['pre_contenu']);
$contenu = addslashes($_POST['contenu']);
// vérification modif ou pas
if ($_POST['id_dossier'] == '')
{
// pas de modif donc nouvelle entrée
$sql = "INSERT INTO dossiers (titre, time, rid, pre_contenu, contenu) VALUES('".$_POST['titre']."', '".time()."', '".$_POST['id']."', '".$_POST['pre_contenu']."', '".$_POST['contenu']."')";
if( !mysql_query($sql) ) {
die('Erreur SQL !'.$sql.'<br>'.mysql_error());
} else {
echo 'Votre dossier a été ajoutée.';
}
}
elseif(is_numeric($_POST["id_dossier"]))
{
//modif donc maj
mysql_query("UPDATE dossiers SET titre='".$_POST['titre']."', rid='".$_POST['rid']."', pre_contenu='".$_POST['pre_contenu']."', contenu='".$_POST['contenu']."' WHERE id=".$_POST['id_dossier']);
}
}

[...]

En fait ce qu'il se passe lorsque j'ajoute un dossier, c'est qu'il met la valeur 0 dans le champ rid.

le champ rid, c'est le champ qui permet de dire à quelle rubrique appartient ce dossier.

De plus, les rubriques sont rangées par groupe. En gros il y a des sous-rubriques. D'où la fonction.

Quelqu'un pourrait-il m'aider svp ?

Merci d'avance.

Poste le Sunday 7 August 2005 16:44:17
Répondre     Citer    
Re: Probleme de catégories...
Envoyé par: Fann

Personne ne sait ? :-/

Poste le Monday 8 August 2005 07:35:32
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Probleme de catégories...
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons