[help request] conception de formulaire

Répondre
Himself
le 04/08/2006 à 12:29
Himself
Bonjour à tous & toutes,
voici mon premier message sur votre forum en temps que débutant php :) (je vais donc éssayer d'être clair :p

Bon voila, afin de faciliter mon référencement dans les annuaires, je suis occupé à me créer une page regroupant une liste de tous les annuaires que je connais.

Pour cela j'ai deux pages :

add-liens.php & index.php

add-liens est la page sur laquelle je vais ajouter des annuaires à ma liste, & index.php la page ou je vais consulter ma liste.

ma page add-liens.php est composée d'un formulaire incluant :

- 3 champs inputs (nom, url, urlsubmit)
- 1 liste de thème tirée de la base de donnée

Ma question : quel est pour vous le moyen le plus facil d'enregistrer le choix du thème dans ma base de donnée, afin de réaficher ce thème à côté du nom de l'annuaire sur ma page index ?

au niveau base de donnée, j'ai donc actuellement 2 tables : liens, & theme.

Je pense que dans ma table liens je devrais creer un champ "theme" dans lequel on enregistre un n° en fonction du theme.

theme 1 = 1
theme 2 = 2
& ainsi de suite, pour que sur ma page index, quand je liste les différents annuaires, il affiche chaque thème en fonction du n°

mais je suis trop débutant, je ne vois pas du tout comment réaliser ça, actuellement j'en suis arrivé à ceci :

<?php 
mysql_connect("****", "***", "****") or die(mysql_error());
mysql_select_db("annuaire") or die(mysql_error());

// Ajout du lien dans la base de donnée

$result = mysql_query("SELECT url FROM liens WHERE url = '" . $url . "'") or die(mysql_error());

if(mysql_num_rows($result) == 0)
{
//ajouter l'url
mysql_query("INSERT INTO liens
VALUES('','" . $url . "','" . $nom . "', '" . $type . "'
, '" . $urlsubmit . "')");

echo 'l\'annuaire <u><b>'.$nom.'</b></u> à été ajouté dans la liste';
}

else {
echo 'L\'annuaire <u><b>'.$nom.'</b></u> est déja présent dans la liste';

}

?>

<form action="add-liens.php" method="post" enctype="multipart/form-data">
<p><b>Nom de l'annuaire</b> : <input type="text" size="30" name="nom" value="" />
&nbsp;&nbsp;&nbsp;

<b>type d'annuaire</b> :

<?php

$i = 0;
$req = mysql_query('select `id`, `genre` from choix');

echo '<select name="type">';
while($choix = mysql_fetch_array($req))

{
$tableau[$i] = $choix[0];
echo '<option value="'.$choix[0].'">'.$choix[1].'</option>';
$i++;
}

echo '</select>';
?>
</p>

<p><b>Url de la page d'accueil de l'annuaire</b> :
<textarea name="url" cols="50" rows="1"></textarea>
<b>Url de la page de soumission de l'annuaire</b> :
<textarea name="urlsubmit" cols="50" rows="1"></textarea>
</p>
<input type="hidden" name="id" value="<?php echo $id; ?>" />
<input type="submit" value="poster" />

</form>


Seulement je crois que je suis à côté de la plaque... car je n'arrive pas à récuperer le choix utilisé lors de l'ajout, & je ne vois pas comment réafficher ce choix sur la page d'accueil :(

Please help me :$
sparh
le 04/08/2006 à 15:51
sparh
si je comprends bien tu veux:
1: une page formulaire qui permet d'envoyer le nom de l'annuaire, son adresse et sa catégorie.
2: récupérer c info dans une page index et faire une liste de lien avec le nom des annuaires ainsi que leurs catégories?
Si c ca, je peut t'aider (contact moi en MP), si c pas ca, j'ai pas bien compris tes explications (moi aussi je suis débutant, peut être plus que toi ;)!
zebden
le 04/08/2006 à 16:57
zebden
sparh, un forum doit être profitable à tout le monde, donc on résoud les problèmes ici et non en MP (sauf exeception).

Himself,

Oui tu étais bien parti, il faut donc une clé qui lie les deux tables dans la table annuaire. une identifiant unique qui permettra de joindre le thème associé.

Tu as donc ton select ou tu choisis les type (si c'est bien de cela dont tu parlais) qui renvoie l'indentifiant que tu vas inserer dans la table annuaire genre type_id.

Ensuite à la récupération, il suffira de faire une jointure

SELECT `ta`.`nom`, `ta`.`url`, `tt`.`type` FROM `annuaire` AS `ta`
LEFT JOIN `type` AS `tt` ON ( `ta`.`type_id` = `tt`.`type_id` )

`ta` étant l'alias de la table annuaire et `tt` celui de la table type.

Bon courage ^^
zebdinou pour les intimes / Blog : http://www.zebden.fr
Himself
le 04/08/2006 à 17:07
Himself
Je ne comprends rien à ton charabiat, c'est gentil à toi de vouloir m'aider, mais la ca ne m'avance pas :(

en fet, j'ai conclu, que je suis obliger de garder mes deux tables. une dans laquelle j'ai l'id, & le nom du theme, & dans ma table liens, un champ "theme" qui stockera pour chaque annuaire le n° de référence du theme.

donc il me manque maintenant juste le

choix 1 = 1
choix 2 = 2
etc...

+ comment enregistrer ce n° dans le champs "theme" de ma table "lien"

+ comment interpreter le n° stocké dans le champs "theme" vers le id de ma table choix

(j'ai l'impression (depuis le temps que je cherche) de vouloir faire l'impossible alors que cela me parait si bête :o
sparh
le 04/08/2006 à 17:32
sparh
Bon ma réponse va peut être vous paraitre nul mais vos solutions me paraisse bien compliquées si l'objectif eSt de récupérer les valeures, pourquoi ne pas créer qu'une seule table avec nom, adrese et catégorie?
Tu pourras ainsi:
1 récupérer la liste des annuaires enregistrés avec leur catégorie
2 les trier par catégorie ou autre
C'est peut être un peu simplet mais ca marche!!

désolé pour le MP mais c que je ne suis pas sur de moi!
Himself
le 04/08/2006 à 18:01
Himself
J'aime bien ton idée,

mais comment fais tu pour mettre "plusieurs" catégories dans "un seul" champ ?

car dans le menu déroulant j'ai actuellement 3 valeurs, & d'autres vont venir s'ajouter.

j'ai je pense donc bien besoin de ma deuxieme table, avec un id, & un champ, pour lister plusieures valeurs...

non ?

peux tu donner un exemple de code stp ?
sparh
le 04/08/2006 à 18:43
sparh
non pas plusieurs catégorie dans un seul champ mais 1 champ catégorie qui liste t différentes catégorie:
voilà un ex:
le formulaire:

<form name="formulaire" action="VE_Upload.php" method="post" onsubmit="return verif_formulaire()" enctype="multipart/form-data">
<p align="center">
Nom de votre source:
<input name="titre" type="text" id="titre" value="Titre de votre source">

Description:
<textarea name="texte" cols="40" rows="4" id="texte" description="Petite description">Petite description de votre source.</textarea>

Cat&eacute;gorie :
<select name="cat">
<option value="categorie">Cat&eacute;gories</option>
<option value="france">France</option>
<option value="international">International</option>
<option value="economie">Economie</option>
<option value="culture">Culture</option>
<option value="sport">Sport</option>
</select>
L'adresse de votre lien rss (fichier xml)
<input type="text" name="adresse" id="adresse"/>
<input type="submit" name="Submit" value="Envoyer" />
</p>

</form>


Voilà la requete qui insére les données dans ma table (ici Actualite)
$enregistrement = "INSERT INTO `Actualite` (`nom`, `description`, `pseudo`, `date`, `adresse`, `categorie`) 
VALUES ('$titre', '$texte', '$pseudo', '$date', '$adresse', '$cat')";


Voilà, après tu récupére tes données et tu les tries comme tu en as envi!
J''éspère que ca iras, sinon je suis dispo ;)
Himself
le 04/08/2006 à 19:08
Himself
Salut
je vais tester cela

mais ce qu'il ya surtout c'est que je voudrais aussi pouvoir gerer les catégories par la base de donnée...
(oui, très éxigeant, mais cette liste risque de servir à mes collegues qui n'y conaissent rien en html, je voudrais pouvoir leur permettre d'en ajouter/supprimer à leur guise) & c'est pourquoi je les avais isolée dans une table externe

Je te tiens au courant
Himself
le 04/08/2006 à 19:13
Himself
Salut je viens de penser à un truc.

yaurai t'il moyen que dans $cat il me récupere le texte stocké dans mon autre table correspondant à ce que je liste avec

<?php 

$i = 0;
$req = mysql_query('select `id`, `genre` from choix');

echo '<select name="type">';
while($choix = mysql_fetch_array($req))

{
$tableau[$i] = $choix[0];
echo '<option value="'.$choix[0].'">'.$choix[1].'</option>';
$i++;
}

echo '</select>';
?>
</p>
sparh
le 04/08/2006 à 19:26
sparh
Pour ton idée c un peu compliqué pour moi ;)

Mais tu peu tjrs rajouter un champ dans ton formulaire pour que l'utilisateur propose une catégorie.
Pour le menu déroulant (des catégories existante) tu le génére avec une requête.

voilà ++
Répondre
LoadingChargement en cours