|
Warning: include(..includes/start-product.php) [function.include]: failed to open stream: No such file or directory in /home/ybet/www/hardware/produit-vertical.php on line 26
Warning: include() [function.include]: Failed opening '..includes/start-product.php' for inclusion (include_path='.:/usr/share/php5') in /home/ybet/www/hardware/produit-vertical.php on line 26
HP HP PROBOOK 4730S CI3-2 HP Probook 4730s Ci3-2310M, win7Pro
Prix: 851.99 € TTC |  Portable ACER 7551G P324G32MN
Prix: 655.61 € TTC |  Portable Aspire 5734Z
Prix: 602.92 € TTC |
|
Formations Privées en informatiques
B-6810 Pin - Chiny
|
| Les
chapitres de la formation en ligne PHP - MySQL |
| 1.
Introduction
au cours Php
|
| 2. Installer et
utiliser easyphp, tests en local |
| 3. Première
commande PHP
|
| 4. Fonctions en
PHP
|
| 5. Les tableaux
|
| 6. Fonctions sur
les variables, les principales |
| 7. Formulaires Mail
|
|
8. Base de donnée
MySQL avec easyphp
|
| 9. Première
application de Mysql
|
| 10. Gestion des
tables par PHP
|
| 10.a Exercice:
formulaire de contact
|
| 11. Mise en page
PHP - HTM: include() - require()
|
| 12. Création
automatique de la table utilisateur
|
| 13. Formulaire et
vérification des données
|
| 14. Insertion des
nouveaux membres
|
| 15. Gestion des
catégories
|
| 16. Liste de
choix déroulante
|
|
17. Modification
des tables MySQL
|
|
18. Enregistrer
un fichier via un formulaire
|
| 19. Formulaire
d'insertion
|
| 20. Affichage des
annonces
|
| 21. Filtrage des
annonces, première partie
|
| 23. Exercice: gérer
des news
|
| 24. Utilisation
des Cookies
|
| 25. Gestion
fichiers et Dossiers (source et FTP)
|
| 26. Cryptage et
décryptage de mots de passe
|
| 27. Base
relationnelle, méthodes Left et Join. |
| Divers |
| Formation
référencement en ligne,
positionnez votre site sur Google, MSN, Yahoo, ... |
| Les
feuilles de styles |
| FrontPage
et l'HTML, cours en ligne |
| Le
fichier Apache .htaccess, configuration serveur, URL
Rewriting, accès répertoires. |
|
16. Catégories
dans un liste déroulante à partir de la table MySQL
1 Introduction - 2. Liste déroulante
- 3. Récupération des catégories - sous-catégorie dans
un tableau à partir de la base MySQL - 4. Liste déroulante dans le
formulaire
Nous allons maintenant permettre aux utilisateurs d'insérer leurs annonces dans la
table annonce. Nous
devons non seulement permettre l'insertion d'une annonce mais également
vérifier que l'utilisateur permet l'utilisation des cookies. Cette
formation étant dédiée à des débutants en PHP - MySQL,
nous ferons l'ensemble du développement sur plusieurs parties.
La première partie va être de créer une liste
déroulante reprenant les catégories dans le formulaire
d'entrée. Les catégories sont récupérées à partie de la table MySql (y
compris une description reprenant le nom des catégories supérieures). Avant de gérer les utilisateurs, nous afficherons les annonces (ce
sera la partie suivante) en les intégrant dans notre lay-out du chapitre
11.
L'insertion d'annonces reprendra un formulaire
auto-appelé comme dans le chapitre précédant, un seul fichier php reprenait le formulaire et les vérifications.
Une liste déroulante se code en HTML de la manière
suivante. Elle va être insérée dans le formulaire d'entrée de nos petites
annonces.
| <form method="POST"
name="catégorie">
<p><select size="1"
name="uid">
<option selected value="valeur
1">catégorie 1</option>
<option value="valeur
2">catégorie 2</option>
</select></p>
<p><input type="submit"
value="Envoyer" name="B1"></p>
</form> |
Ce qui affiche:
La difficulté est de reprendre non pas des textes
et des valeurs fixes comme ci-dessus mais bien des valeurs reprises dans la
table.
La première partie va reprendre l'ensemble des
données dans une variable php sous forme de tableaux.
Commençons par créer notre formulaire auto-invoquant:
<?php
if (isset($_POST['go'])){
$uid = $_POST['uid'];
echo$uid;
}
$form = "<table>
<form METHOD=POST>
<form method=\"POST\">
<p><select size=\"1\" name='uid'>
<option selected value=\"valeur 1\">catégorie 1</option>
<option value=\"valeur 2\">catégorie 2</option>
</select></p>
<p><input type=\"submit\" value=\"Envoyer\" name=\"go\"></p>
</form>
</table>
<HR>";
print($form);
?> |
Ce petit programme ne fait qu'afficher la valeur correspondant à la catégorie. Si vous
sélectionnez catégorie 1, il affiche donc valeur 1. Nous allons modifier ce
formulaire plus tard pour qu'il affiche le numéro uid en fonction de l'affichage
de la catégorie. Pour l'instant commençons par récupérer les catégories
avec leur description dans une variable PHP sous forme de tableau que nous
appellerons $categorie-tab
-
La première partie du fichier php ne fait que
créer la requête MySQL qui récupère les données.
-
La deuxième partie va remplir un tableau
($categorie_tab) avec les mêmes valeur correspondante de la table MySQL.
Seule distinction, nous ne récupérons pas les catégories non actives,
seulement toutes celles dont le contenu est différent de "N". A
ce stade, les manipulations sur la table sont terminées et nous pouvons la
fermer.
-
La troisième partie est le coeur de notre
affichage. Nous recherchons dans une boucle les catégories des sous
catégories. Pour une catégorie, la variable 'attachement' de la table
MySQL =0
-
Si c'est une catégorie (en dessous), la cat1
devient le numéro uid., CAT2 et CAT 3 ne sont pas remplis. 'complet'
reprend simplement le nom de la catégorie et nous affichons le nom, et les
différent niveaux de catégorie
$categorie_tab[$i]['cat1']=$categorie_tab[$i]['uid'];
$categorie_tab[$i]['cat2']=0;
$categorie_tab[$i]['cat3']=0;
$categorie_tab[$i]['complet']=$categorie_tab[$i]['nom'];
print("<br>".$categorie_tab[$i]['complet']." ".$categorie_tab[$i]['cat1']."-".$categorie_tab[$i]['cat2']." ".$categorie_tab[$i]['cat3']);
-
La difficulté se situe au niveau des sous
catégorie. Nous distinguons les sous-catégorie niveau 1 (en dessous d'une
catégorie) des sous catégories niveau 2. Dans le cas d'une sous catégorie
niveau 1, 'attachement' de la catégorie supérieure doit être à 0. Ce
tests se fait par la boucle.
while ($j<$ligne){
if(($categorie_tab[$j]['uid']==$k)&&($categorie_tab[$j]['attachement']=="0")){
$l=1;
$categorie_tab[$i]['complet']= $categorie_tab[$j]['complet'];
}
$j=$j+1;
}
// si $l = 1, il s'agit bien d'une sous-catégorie de niveau 1
Nous remplissons ensuite simplement les valeurs. Remarquez que pour
"additionner" deux chaînes ne caractères, nous n'utilisons pas +
mais bien . (comme pour les commandes print() et echo de l'affichage).
-
Dans le cas d'une sous catégorie niveau 2, nous
reprenons deux boucles, une pour récupérer la catégorie, 1 pour la sous
catégorie.
En schématique, la procédure se résume à:
| Récupération des valeurs de la table
dans le tableau $categorie_tab
Rentrée des valeurs uniquement si la catégorie est active
Si sous-catégorie
Si sous-catégorie niveau 1
Boucle de récupération du nom de la
catégorie supérieure
sinon catégorie niveau 2
Boucle de récupération de la sous
catégorie supérieure
Boucle de récupération de la
catégorie
sinon catégorie |
Dans tous les cas, nous remplissons
$categorie_tab['complet'] du nom de la catégorie
<?php
$categorie_tab=array();
$requete="SELECT * FROM categorie";
$valeur=mysql_query($requete);
$i=0;
$ligne=0;
while ($tableau=mysql_fetch_array($valeur)){
// on récupère les données de la table
// print($ligne);
if($tableau['actif']<>"N"){
$categorie_tab[$i]['uid']=$tableau['uid'];
$categorie_tab[$i]['nom']=$tableau['nom'];
$categorie_tab[$i]['description']=$tableau['description'];
$categorie_tab[$i]['attachement']=$tableau['attachement'];
$i=$i+1;
}else{
print('<br>Catégorie non active');
}
}
require('includes/stop.php');
// début du traitement des catégories - sous catégories dans le tableau
$ligne=$i;
print($ligne." lignes dans le tableau");
$i=0;
while ($i<$ligne){
if ($categorie_tab[$i]['attachement']<>0){
// vérification des sous catégories 1: ce n'est pas une catégorie
$k=$categorie_tab[$i]['attachement'];
$nom=$categorie_tab[$i]['nom'];
// on récupère attachement et vérifie si uid est effectivement avec attachement à 0
$j=0;
$l=0;
//
while ($j<$ligne){
if(($categorie_tab[$j]['uid']==$k)&&($categorie_tab[$j]['attachement']=="0")){
$l=1;
$categorie_tab[$i]['complet']= $categorie_tab[$j]['complet'];
}
$j=$j+1;
}
// si $l = 1, il s'agit bien d'une sous-catégorie de niveau 1
if ($l==1){
$categorie_tab[$i]['cat1']=$k;
$categorie_tab[$i]['cat2']=$categorie_tab[$i]['uid'];
$categorie_tab[$i]['cat3']="0";
$categorie_tab[$i]['complet']= $categorie_tab[$i]['complet']." -
".$categorie_tab[$i]['nom'];
}else{
// c'est une catégorie de niveau 2, il faut retrouver les 2 catégories supérieures
$j=0;
$l=0;
while ($j<$ligne){
if(($categorie_tab[$j]['uid']==$k)&&($categorie_tab[$j]['attachement']<>"0")){
$l=$j;
$j=$ligne;
}
$j=$j+1;
}
$categorie_tab[$i]['cat1']=$categorie_tab[$l]['attachement'];
$categorie_tab[$i]['cat2']=$categorie_tab[$l]['uid'];
$categorie_tab[$i]['cat3']=$categorie_tab[$i]['uid'];
// on recherche ensuite la catégorie
$m=0;
while ($m<$ligne){
if (($categorie_tab[$m]['uid']==$categorie_tab[$i]['cat1'])&&($categorie_tab[$m]['attachement']==0)){
$categorie_tab[$i]['complet']=$categorie_tab[$m]['nom']."
- ".$categorie_tab[$l]['nom']." - ".$categorie_tab[$i]['nom'];
$m=$ligne;
}
$m=$m+1;
}
}
// fin de vérification des catégories 1
}else{
// c'est une catégorie }else{
$categorie_tab[$i]['cat1']=$categorie_tab[$i]['uid'];
$categorie_tab[$i]['cat2']=0;
$categorie_tab[$i]['cat3']=0;
$categorie_tab[$i]['complet']=$categorie_tab[$i]['nom'];
}
$i=$i+1;
}
if (isset($_POST['go'])){
$choix = $_POST['uid'];
echo"<br><b>".$choix."</b>";
}
$i=0;
$liste="<table>
<form method=\"POST\">
<p><select size=\"1\" name='uid'>";
while ($i<$ligne){
$uid= $categorie_tab[$i]['uid'];
$complet= $categorie_tab[$i]['complet'];
$liste=$liste."<option value=".$uid.">".$complet."</option>";
$i=$i+1;
}
$liste=$liste."<p><input type=\"submit\" value=\"Envoyer\" name=\"go\"></p>
</form>
</table>
<HR>";
echo$liste;
?> |
Nous avons maintenant dans un tableau avec un nombre
de lignes = $ligne reprenant non seulement le 'uid', mais également le nom
réel de la catégorie. Il nous reste maintenant à intégrer cette fonction
dans notre formulaire.
Maintenant que nous avons créer le tableau reprenant
les différentes catégories, il nous reste à insérer ces données dans un
formulaire pour afficher le nom complet de la catégorie et faire passe comme
variable son numéro.
if (isset($_POST['go'])){
$choix = $_POST['uid'];
echo"<br><b>".$choix."</b>";
}
$i=0;
$liste="<table>
<form method=\"POST\">
<p><select size=\"1\" name='uid'>";
while ($i<$ligne){
$uid= $categorie_tab[$i]['uid'];
$complet= $categorie_tab[$i]['complet'];
$liste=$liste."<option value=".$uid.">".$complet."</option>";
$i=$i+1;
}
$liste=$liste."<p><input type=\"submit\" value=\"Envoyer\" name=\"go\"></p>
</form>
</table>
<HR>";
echo$liste; |
En insérant ces quelques lignes en fin de notre
programme PHP, nous obtenons la liste des catégorie complète dans une liste
déroulante de choix reprise de notre tableau. Il affiche également le numéro
correspondant à notre choix si vous appuyez sur le bouton envoyer.
$liste est la variable utilisée pour afficher le
formulaire. La première partie insère le début du formulaire. Dans la boucle
While, nous reprenons les différentes valeurs comme options. Une fois que nous
avons terminé de reprendre toutes les options, nous terminons notre formulaire
et affichons la variable $liste contenant l'ensemble du formulaire. Pour
l'instant, nous ne faisons qu'afficher le numéro de la catégorie choisie (echo"<br><b>".$choix."</b>";)
en gras.
La partie suivante va nous permettre de créer le
formulaire complet pour insérer les annonces, même si nous ne gérerons pas
encore les utilisateurs.
|