Forum Programmation.php Probleme de catégories...

Posté par  .
Étiquettes : aucune
0
7
août
2005
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 :

[...]

Titre :

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

Texte d'info (qui s'affichera sur la page affichant la liste des dossiers) :
<? echo $pre_contenu; ?>

Contenu :
<? echo $contenu; ?>






[...]

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 = '';
$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"].'';
if($row["id"]){
$ret .= html_select_rubrique($row["id"],($spacer.' '));
}
$ret .= html_option_dossier($row["id"],($spacer.' -'));
}
if(!$parent){
$ret .= '';
}
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"].'';
}
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.''.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.
  • # Problème de formulaire?

    Posté par  . Évalué à 1.

    Dans ton INSERT et ton UPDATE, tu utilises $_POST['id'] ET $_POST['rid']. Je ne connais pas la tête de ton formulaire HTML, mais je pense qu'il y a déjà un problème ici.

    Pour vérifier ce que tu récupères, insert ça au début de ton code PHP:
    foreach($_POST as $key=>$value) echo "POST:: $key=>$value<BR>";


    Sinon, tu as juste au-dessus:
    $contenu = addslashes($_POST['pre_contenu']);
    $contenu = addslashes($_POST['contenu']);

    $contenu es valué 2 fois et ne sert jamais.
  • # Burk

    Posté par  . Évalué à 1.

    Ton code est horrible sans retour à la ligne!

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.