Ajout d'articles

omlaly - 6 févr. 2013 à 10:50
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 - 6 févr. 2013 à 14:11
Bonjour,

Je cherche à faire une page qui sera disponible que pour l'administrateur (moi) qui consistera à créer des articles dans des catégories différentes pour des villages différents.
J'ai créé trois tables SQL :

articles (id_article (primary key) int(11), nom_village varchar(255), nom_categorie varchar(255), datedepot datetime, titre_article varchar(255), texte_article text, auteur_article varchar(255))
categories (id_categorie (primary key) int(11), id_village int(11), nom_categorie varchar(255))
villages (id_village (primary key) int(11), nom_village varchar(255))

Est-ce que quelque chose vous choque dans ces tables ? Si oui, dites-moi quoi...

Jusque là, je n'ai pas rencontré de soucis mais c'est pour faire la page d'administration PHP que j'ai du mal. J'aimerais faire des listes déroulantes dans lesquelles les données seront issues de la base de données. Je vous donne un exemple :

CATEGORIES : liste déroulante avec les catégories issues de la base de données
VILLAGES : liste déroulante avec les villages issus de la base de données
et des champs texte pour écrire l'article (titre, contenu, etc...)

En attendant vos réponses, je continue mes recherches...
Cordialement

3 réponses

Bonjour,

J'ai fait ça , ça marche :

<?php
$categories = "SELECT nom_categorie FROM categories";
$result = mysql_query($categories) or die("Erreur sur la requête SQL concernant les catégories.");

echo "<form action='' method='POST'>
Catégories :
<select name='categorie'>";
while ($row=mysql_fetch_array($result))
{
echo"<option>$row[0]</option>";
}
echo"</select>

</form>";
?>
<?php
$villages = "SELECT nom_village FROM villages";
$result = mysql_query($villages) or die("Erreur sur la requête SQL concernant les villages.");

echo "<form action='' method='POST'>
Villages :
<select name='villages'>";
while ($row=mysql_fetch_array($result))
{
echo"<option>$row[0]</option>";
}
echo"</select>

</form>";
?>

Quelque chose vous choque ou pas ?
Cordialement
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
6 févr. 2013 à 12:19
alert("Bonjour");


Quelque chose vous choque ou pas ?


Oui, le fait que le concepteurs de ce site mettent à disposition des outils de mise en forme du code et que ceux qui posent des questions ne prennent pas la peine de les utiliser, considérant que c'est à ceux à qui ils demandent de l'aide de faire le travail à leur place (mettre en forme leur code non colorisé et non indenté sur une page blanche).



echo "Cordialement";
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
6 févr. 2013 à 14:11
Bonjour, grosse parenthèse, je soutien la demande d'AlexN car ce type de forum à été créé pour les programmeurs débutants et professionnels. Il convient de respecter cette méthode de communication.

La table article n'est pas correct car tu as dupliqué les champs nom_village et nom_categorie de leurs tables respective.
De plus, si tu as créé une table catégorie, c'est pour qu'un article soit lié directement à cette table.
Et tu as fait la même erreur pour la table village, car une catégorie doit être lié directement à la table village.

Très important, il faut prendre une habitude d'ajouter une courte abréviation dans la nomenclature de chaque champs dans la table.
Exemple pour la table categories, l'id se nommera c_id, le nom de la catégorie se nommera c_nom.
Et si cela ne tenait qu'à moi, en anglais c_name.
Pourquoi, par-ce-que si il y jointure, vous serez obligé de renommer le champ avec un AS pour éviter les confits et doublon.
Un exemple de jointure avec la table villages et categories.
Résultat : v_id, v_name, c_id, c_name seront retournés par enregistrement.

Les modifications, il te faut un c_v_id dans la table catégorie et un a_c_id dans la table article et tu récupères les noms avec une jointure ou comme tu veux.
Donc, le premier SELECT à comme request :

$categories = "SELECT v_id,v_nom FROM villages";


Par la suite, tu dois récupérer le v_id pour l'utilisé dans le second request.
$categories "SELECT categories.c_id,categories.c_nom FROM categories WHERE categories.c_v_id $v_id";


Tu as compris que categories.c_v_id est égal à ($v_id) villages.v_id car la table villages est la table parente de catégories.

Bon, pour la sécurité, je te propose de regarder vers PDO.
Tu pourras retrouver des conseils dans cette discussion.

stéph
0
Rejoignez-nous