URL: https://linuxfr.org/forums/programmation-php/posts/probleme-de-cat%C3%A9gories Title: Probleme de catégories... Authors: Aurélie Date: 2005年08月07日T16:47:52+02:00 Tags: Score: 0 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.

AltStyle によって変換されたページ (->オリジナル) /