Aller au contenu


Photo

Tuto : formulaire Html/Php


  • Please log in to reply
56 replies to this topic

#1 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 27 février 2010 - 14:47

Bonjour à tous :)

Cette discussion est spécialement dédiée à notre ami Go'Gaule, mais, évidemment, tous les participants sont les bienvenues.

Objectif : apprendre à développer un formulaire Html/Php ;
Méthode : on avance par petites touches, en commençant par certaines bases, chaque message devra être validé par Go'Gaule avant de passer à l'étape suivante.

--

Étape 1 : Php, Les Variables

Qu'est-ce qu'une variable ?

Une variable n'est rien d'autre qu'un espace de stockage temporaire de données.

En Php, c'est très simple de créer une variable, il suffit de lui donner un nom, précédé du symbole dollar "$", et de lui attribuer une valeur, même vide, avec le caractère d'affection, c'est à dire, le signe égal "=", par exemple :

// création (déclaration) d'une variable avec attribution (affectation) 
// d'une valeur vide (de type texte = string)
$ma_nouvelle_variable = "";

Mais, à quoi servent ces espaces de stockage, ces variables donc ?

Prenons une analogie simple à comprendre.

Nous allons au marché acheter des fruits, au retour à la maison, nous rangeons les poires dans un panier, les pommes dans un autre panier et les bananes dans un troisième panier différent.

Les fruit représentent nos données et les paniers ce sont nos variables.

Maintenant, comment faire pour indiquer à notre petite famille où se trouve chaque fruit ?

Il suffit de nommer chaque panier de manière à être clairement identifié, et le plus simple, dans notre cas, est de leur donner un nom suivant ce qu'ils contiennent, ainsi, le panier contenant les poires deviendra tout naturellement : le panier à poires, celui des pommes : le panier à pommes et, enfin, celui des bananes : le panier à bananes.

- Maman, maman, je voudrais une pomme, elles sont où ?
- Mais dans le panier à pommes mon chéri !


Transposons cette analogie en code Php.

Nous avons donc nos données (les fruits) et nous voulons les placer par genre dans un espace identifiable (les paniers) :

$panier_a_poires = "6 poires";
$panier_a_pommes = "4 pommes";
$panier_a_bananes = "5 bananes";

Maintenant, si je souhaite savoir combien de pommes il y a dans le panier à pommes, il suffit que j'interroge la variable correspondante, avec un simple "echo" je peux l'afficher à tout moment :

echo $panier_a_pommes; // -> "4 pommes"

En théorie, nous pouvons créer autant de variables qu'on le souhaite, par exemple, si je veux séparer les pommes vertes des rouges et des jaunes, il me suffit de créer une variable spécifique pour chaque variété de pomme :

$panier_a_pommes_vertes = "5 pommes vertes";
$panier_a_pommes_rouges = "3 pommes rouges";
$panier_a_pommes_jaunes = "4 pommes jaunes";

--

Voilà, ceci est le tout premier message de cette discussion, pour pouvoir passer à l'étape suivante, il faut absolument que Go'Gaule valide cette étape, soit en indiquant clairement qu'il a tout bien compris, soit en posant des questions sur les points qui lui semblent encore confus.

Prochaine étape : Php, Les Array

--

Ce message a été modifié par Fredo d:o) - 27 février 2010 - 16:39 .

Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#2 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 27 février 2010 - 16:36

Re... à tous :)

Ok, je crois qu'on vais faire un peu plus simple, et utile surtout, pour l'étape de validation de Go'Gaule, en lui proposant, à la fin de chaque étape, des petits travaux pratiques, par des simples exercices, dont il devra être toujours le premier à répondre (soyez sympa les gars, ne répondez pas avant lui, d'acc ? :) )

--

TP 1 : Php, Les Variables

Exercice 1 :

De retours de chez l'épicier du quartier, j'ai dans mes sacs trois types de boissons :

  • 3 canettes de boisson gazeuse sucrée ;
  • 2 bouteilles d'eau minérale ;
  • 1 pack de 6 bouteilles de bière.

Ranger ces trois données dans trois variables clairement identifiables.

--

Exercice 2 :

Indiquer les variables mal déclarées dans la liste suivante :

  • $un_fromage = "cantal";
  • $un_parfum = "Chanel n° 5"
  • $un_vin = "Beaujolais Nouveau";
  • $ un_biscuit = "Pépito";
  • $une_chaîne_de_télé = "M6";
  • $une_marque_francaise_de_voiture = "Peugeot";

--

Ce message a été modifié par Fredo d:o) - 27 février 2010 - 16:38 .

Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#3 Go'Gaule

Go'Gaule

    Grand(e) bavard(e)

  • Bannis
  • PipPipPip
  • 445 Messages :
  • Configuration:eMac 700Mhz MaBook 13" 2.2 jsuis pas riche !
  • Sexe:Masculin
  • Localisation:Dordogne

Posté 27 février 2010 - 16:47

Re... à tous :)

Ok, je crois qu'on vais faire un peu plus simple, et utile surtout, pour l'étape de validation de Go'Gaule, en lui proposant, à la fin de chaque étape, des petits travaux pratiques, par des simples exercices, dont il devra être toujours le premier à répondre (soyez sympa les gars, ne répondez pas avant lui, d'acc ? :) )

--

TP 1 : Php, Les Variables

Exercice 1 :

De retours de chez l'épicier du quartier, j'ai dans mes sacs trois types de boissons :

  • 3 canettes de boisson gazeuse sucrée ;
  • 2 bouteilles d'eau minérale ;
  • 1 pack de 6 bouteilles de bière.

Ranger ces trois données dans trois variables clairement identifiables.

--

Exercice 2 :

Indiquer les variables mal déclarées dans la liste suivante :

  • $un_fromage = "cantal";
  • $un_parfum = "Chanel n° 5"
  • $un_vin = "Beaujolais Nouveau";
  • $ un_biscuit = "Pépito";
  • $une_chaîne_de_télé = "M6";
  • $une_marque_francaise_de_voiture = "Peugeot";

--


OuAhOou ! Tout ça pour moi :wub:

Merci .

$boisson_gazeuse_sucrée " 3 Canettes " ;
$eau_minérale " 2 Bouteilles " ;
$biére_sans_alcool " 1 Bouteille " ;



C minuscule a Cantal
Chanel n°5 pas de ;
pepito . il y a un espace entre $ et un

Ce message a été modifié par Go'Gaule - 27 février 2010 - 17:27 .

En jachère ... bientôt le printemps ..! et les semailles !

#4 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 27 février 2010 - 17:15

OuAhOou ! Tout ça pour moi :wub:


Oui, tout ça pour toi, mais pas seulement, d'autres visiteurs pourront éventuellement en bénéficier...

$boissons_gazeuse_sucrée " 3 canettes " ;
$eauMinérale " 2 bouteilles " ;
$biére_sans_alcool " 1 bouteille " ;


Chanel n°5 pas de ;
pepito . il y a un espace entre $ et un


Alors, voyons voir tout ça...

Exercice 1 :

6 fautes, 2 par ligne, aucune réponse n'est correcte !

Relis correctement la première étape, soit surtout attentif à la syntaxe des codes, c'est hyper-ultra important, certains langages peuvent produire des erreurs très importantes si on ne respecte pas la syntaxe.

Sois super attentif Stp, parce que dans les étapes suivantes ce type d'erreurs ne pardonnent pas, et moi je n'ai pas bien envie de les corriger tout le temps, donc, applique-toi un peu, d'accord ? :huh:

--

Exercice 2 :

Il y a au total 3 erreurs, tu n'a trouvé que 2, où est la 3e ? :huh:

Attention, c'est exactement la même erreur qui existe dans tes trois propositions de l'exercice 1, ce n'est pas quelque chose que j'ai expliqué dans cette première étape, mais, à force de regarder des codes Php depuis au moins un mois, tu aurais normalement du remarquer un détail important dans les nom des variables... je te laisse chercher, à toi de me proposer une réponse...

--

@+ :)
Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#5 Go'Gaule

Go'Gaule

    Grand(e) bavard(e)

  • Bannis
  • PipPipPip
  • 445 Messages :
  • Configuration:eMac 700Mhz MaBook 13" 2.2 jsuis pas riche !
  • Sexe:Masculin
  • Localisation:Dordogne

Posté 27 février 2010 - 17:20

Oui, tout ça pour toi, mais pas seulement, d'autres visiteurs pourront éventuellement en bénéficier...



Alors, voyons voir tout ça...

Exercice 1 :

6 fautes, 2 par ligne, aucune réponse n'est correcte !

Relis correctement la première étape, soit surtout attentif à la syntaxe des codes, c'est hyper-ultra important, certains langages peuvent produire des erreurs très importantes si on ne respecte pas la syntaxe.

Sois super attentif Stp, parce que dans les étapes suivantes ce type d'erreurs ne pardonnent pas, et moi je n'ai pas bien envie de les corriger tout le temps, donc, applique-toi un peu, d'accord ? :huh:

--

Exercice 2 :

Il y a au total 3 erreurs, tu n'a trouvé que 2, où est la 3e ? :huh:

Attention, c'est exactement la même erreur qui existe dans tes trois propositions de l'exercice 1, ce n'est pas quelque chose que j'ai expliqué dans cette première étape, mais, à force de regarder des codes Php depuis au moins un mois, tu aurais normalement du remarquer un détail important dans les nom des variables... je te laisse chercher, à toi de me proposer une réponse...

--

@+ :)

Alors .. Le c minuscule a Cantal

Ce message a été modifié par Go'Gaule - 27 février 2010 - 17:26 .

En jachère ... bientôt le printemps ..! et les semailles !

#6 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 27 février 2010 - 17:30

Alors .. Le c minuscule a Cantal

Non, ce n'est pas ça... cherche encore...

Une piste ? :blink: ... la plupart des langages informatiques sont en anglais... qu'en déduits donc ? :huh:


PS. S'il te plaît Go'Gaule, ne reprends pas à chaque fois l'intégralité de mes message, ce fil risque d'être long, ne le rendons pas interminable, ok ? :)
Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#7 Go'Gaule

Go'Gaule

    Grand(e) bavard(e)

  • Bannis
  • PipPipPip
  • 445 Messages :
  • Configuration:eMac 700Mhz MaBook 13" 2.2 jsuis pas riche !
  • Sexe:Masculin
  • Localisation:Dordogne

Posté 27 février 2010 - 18:01

Non, ce n'est pas ça... cherche encore...

Une piste ? :blink: ... la plupart des langages informatiques sont en anglais... qu'en déduits donc ? :huh:


PS. S'il te plaît Go'Gaule, ne reprends pas à chaque fois l'intégralité de mes message, ce fil risque d'être long, ne le rendons pas interminable, ok ? :)


Aucune idée ... je sèche .

Peut être $une_marque_de_voiture_francaise ??

Ce message a été modifié par Go'Gaule - 27 février 2010 - 18:11 .

En jachère ... bientôt le printemps ..! et les semailles !

#8 Amarok II

Amarok II

    NeoAdmin

  • Administrateurs
  • PipPipPipPipPipPip
  • 1 464 Messages :
  • Configuration:Un petit truc en alu avec un grand rectangle lumineux qui affiche des choses qui bougent quand je chatouille un autre truc en alu, là... tout plat.
  • Sexe:Mystère
  • Localisation:Perpignan, France
  • Passions:MacFr bien sûr !

Posté 27 février 2010 - 18:11

quelle est la différence entre le français et l'anglais à l'écrit ?

MacBook Pro (13", fin 2012)
8Go RAM - 256Go SSD - 1To HD

Technicien certifié ACMT et plein d'autres trucs...

"On peut voir de bien des façons. On peut être aveugle de bien des façons." (Frank Herbert, Dune)

"Tu ne feras point de machine à l'esprit de l'homme semblable." (Frank Herbert, Dune)


#9 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 27 février 2010 - 18:20

Aucune idée ... je sèche .

Ok, avant de te donner la réponse, je vais te donner un exemple, peut-être que tu comprendras...

De ces deux déclarations de variables, à ton avis, laquelle est correcte, la 1 ou la 2 ?

  • $le_français_a_un_côté_très_archaïque = "N'est-ce pas Monseigneur !";
  • $le_francais_a_un_cote_tres_archaique = "N'est-ce pas Monseigneur !";

Une fois qu'on aura réglé cet aspect des choses, il reste encore à corriger la syntaxe de tes déclaration des variables, relis bien, encore une fois, la première étape...

Et puis... ARRÊTE DE REPRENDRE MES MESSAGES INTÉGRALEMENT STP, isole juste la partie à laquelle tu réponds, ok ? :huh: ... avant que ça ne finisse par sérieusement m'agacer ! <_<

Allez, à toi de jouer Go'Gaule :)

Ce message a été modifié par Fredo d:o) - 27 février 2010 - 18:25 .

Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#10 Go'Gaule

Go'Gaule

    Grand(e) bavard(e)

  • Bannis
  • PipPipPip
  • 445 Messages :
  • Configuration:eMac 700Mhz MaBook 13" 2.2 jsuis pas riche !
  • Sexe:Masculin
  • Localisation:Dordogne

Posté 27 février 2010 - 18:32

Msieur , msieur .

Je pensais qu'il fallait faire comme cela excuses .

$le_francais_a_un_cote_tres_archaique = "N'est-ce pas Monseigneur !";

Ce serait les accents ?? Je n'ai jamais pratiqué l'anglais .

Cordialement.

Ce message a été modifié par Go'Gaule - 27 février 2010 - 18:35 .

En jachère ... bientôt le printemps ..! et les semailles !

#11 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 27 février 2010 - 18:57

Ce serait les accents ?? Je n'ai jamais pratiqué l'anglais .

En effet, il ne faut "jamais" mettre dans les noms des variables :

  • ni de caractères accentués ;
  • ni de signes de ponctuation ;
  • ni des symboles mathématiques ;
  • ni des caractères spéciaux (#, @, &, €, £, etc.) ;
  • ni des espaces.

Au fait, les seuls caractères autorisés sont : de "a" à "z" en minuscules et sans accents, de "A" à "Z" en majuscules et sans accents, les chiffres de "0" à "9" et, enfin, le tiret bas "_" nomme aussi "underscore", c'est tout !

J'espère que tu retiendras bien ce point qui est hyper important, que je ne sois pas obligé de te le rappeler sur cet échange, d'accord ? :blink: ;)

Allez, c'est mon dernier message de la journée... à demain et essaie de trouver la solution au problème de syntaxe dans tes propositions de déclaration de variables (exercice 1)... ok ? :)

@+ :)
Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#12 AliGator

AliGator

    (Trop) Grand Bavard

  • Membres d'honneur
  • PipPipPipPipPipPipPipPipPip
  • 12 338 Messages :
  • Configuration:• MacBook Pro 15" 2,2GHz, 10.6
    • MacMini G4 1,42GHz, 10.5
  • Sexe:Masculin
  • Localisation:Rennes (Bretagne, France)
  • Passions:Piano, Cuisine, Danse (Rock, ...), faire des réponses de 3km

Posté 27 février 2010 - 19:08

Petite précision, un nom de variable ne doit pas commencer par un chiffre. Tu peux mettre des chiffres autre part dans le nom comme mentionné par Fredo, mais pas au début. Donc $pannier_avec_5_pommes c'est un nom de variable correct, $5_pommes_dans_un_panier est un nom incorrect.
http://fr2.php.net/m...bles.basics.php

Le posteur fou de macfr
Mon blog: Crunchy Development
______________
Devise Shadok : S'il n'y a pas de solution, c'est qu'il n'y a pas de problème...


#13 BorakLeRouge

BorakLeRouge

    Hamster d'or (dort ?)

  • Membres
  • PipPipPipPipPipPipPip
  • 3 949 Messages :
  • Configuration:Mac Mini Core i7 - 16Go - 2To Hybride
  • Sexe:Masculin
  • Localisation:Cormeilles en Parisis.rb
  • Passions:Macintosh, Photo, Haute-fidélité, Ski, Roller, Call of Duty, Tactical Ops, Counter Strike, Worms 1

Posté 27 février 2010 - 19:38

Dans la série PHP, je commence aussi à en faire un peu plus (depuis le 1er post de Go'gaule, qui m'a entrainé à installer MAMP).

Mais comme je n'aime pas chercher partout et que j'aime bien avoir une référence (la mienne), donc voici mon aide-mémoire perso :)
(Dans la page, on retrouve aussi certaines de mes autres aides : xhtml, css, ...).

Mon aide-mémoire est en cours d'écriture, il évoluera ...

Je fais mes sauvegardes sur NSA-Cloud !

Au bout de 10 ans, le vieux MacPro vient de laisser sa place à un MacMini i7...


#14 Go'Gaule

Go'Gaule

    Grand(e) bavard(e)

  • Bannis
  • PipPipPip
  • 445 Messages :
  • Configuration:eMac 700Mhz MaBook 13" 2.2 jsuis pas riche !
  • Sexe:Masculin
  • Localisation:Dordogne

Posté 01 mars 2010 - 09:33

Bonjour à tous .

Fredo , bonjour .

Pour les pbs de syntaxe , alors là je nage complétement . Qu'est-ce que cela "veut dire" ?

""C'est qu'est-ce que je dit , c'est ca que j'fait "".


Cordialement.

Ce message a été modifié par Go'Gaule - 01 mars 2010 - 09:35 .

En jachère ... bientôt le printemps ..! et les semailles !

#15 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 01 mars 2010 - 10:01

Salut Go'Gaule :)

Pour les pbs de syntaxe , alors là je nage complétement . Qu'est-ce que cela "veut dire" ?


Déjà, lorsque tu doutes ou ignores la signification d'un mot, n'hésites pas à consulter un dictionnaire, il y en a plusieurs en ligne, très pratiques, perso, je me sert quotidiennement de ceuil-là : http://dictionnaire.tv5.org/

Maintenant, lorsque je cherche le mot "syntaxe" dans ce dico, la dernière définition correspond clairement à notre cas : http://dictionnaire....t=syntaxe&che=1

Autrement dit, tous les langages, informatiques ou pas, respectent une structure particulière d'écriture, sans ça, on ne se comprendrait pas...

Par exemple, si je dis :

"Ouvertes je portes des défonce !"

Et bien, tu ne pigera rien à ce que je raconte, même si là, en remettant les mots dans le bon ordre, on arrive à saisir :

"Je défonce des portes ouvertes !"

Une syntaxe est donc une structure obligatoire qu'on doit respecter, comportant un ordre particulier entre les mots (pour que ceci donnent un sens) et une composition plus au moins stricte selon les langages.

Par extension, dans un langage informatique, en Php par exemple, si j'écris le code suivant :

= "Une donnée"; $ma_variable

Ce bout de code ne fonctionnera jamais et le moteur de Php retournera une belle erreur, pourquoi ? :huh:

Tout simplement parce que nous n'avons pas respecté la syntaxe imposée par le langage utilisé !

Pour que Php accepte notre bout de code, nous aurions dû l'écrire de la manière suivante :

$ma_variable = "Une donnée";

Nous pouvons donc déjà remarquer que le nom de la variable vient toujours avant la donnée qu'on souhaite lui affecter, puis, tout ceci est composé de manière très stricte, c'est à dire, qu'il faut absolument insérer le signe égal "=" d'affectation entre le nom de la variable et la donnée qu'on lui attribue, puis toujours terminer la ligne par un point-virgule ";".

Si l'ordre des éléments et incorrect ou si un élément indispensable vient à manquer, le programme ne fonctionnera pas, on parle alors de "bug" de syntaxe en informatique, c'est à dire, à un dysfonctionnement dû à une mauvaise écriture du code.

Voilà, tout ça pour dire que tes propositions pour l'exercice 1, en plus d'avoir des noms de variables incompatibles avec le langage Php, puisque comportant des accents, ont une mauvaise syntaxe, qui ne sera pas reconnue par Php, soit parce que l'ordre des éléments est incorrect, soit parce qu'il manque un élément indispensable...

Alors, regarde bien mes exemples et tes propositions, tu ne remarques aucune différence ? :huh: ... un élément important qui serait absent par exemple ? :blink:

Si je te tanne avec ça, c'est que c'est vraiment capital que tu intègres bien ces bases, sans ça, difficile d'avancer plus loin dans notre tuto... ok ? :)

Allez, corrige vite tes propositions qu'on passe à l'étape suivante...

;)

Ce message a été modifié par Fredo d:o) - 01 mars 2010 - 10:33 .

Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#16 Go'Gaule

Go'Gaule

    Grand(e) bavard(e)

  • Bannis
  • PipPipPip
  • 445 Messages :
  • Configuration:eMac 700Mhz MaBook 13" 2.2 jsuis pas riche !
  • Sexe:Masculin
  • Localisation:Dordogne

Posté 01 mars 2010 - 10:08

Bonjour.

Je suis dyslexique .. et couillon ..

$boisson_gazeuse_sucrée =" 3 canettes" ;
$eau_minérale =" 2 boureilles" ;
$bière_sans_alcool =" 6 bouteilles" ;

Ce message a été modifié par Go'Gaule - 01 mars 2010 - 10:14 .

En jachère ... bientôt le printemps ..! et les semailles !

#17 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 01 mars 2010 - 10:28

Je suis dyslexique .. et couillon ..


Dyslexique, je ne sais pas, ce n'est pas une tare de toutes manières, et couillon, je n'y crois pas un instant, je dirais plutôt que, par impatience, envie d'aller vite, tu es un peu étourdi... il te faudra donc redoubler d'attention pour évite de commettre ces petites erreurs qui, souvent, deviennent totalement imperceptibles dans un code comportant plusieurs centaines, voire milliers de lignes de code, donc, sois attentif, d'ac ? :)

$boisson_gazeuse_sucrée =" 3 canettes" ;
$eau_minérale =" 2 boureilles" ;
$bière_sans_alcool =" 6 bouteilles" ;


Tu vois, encore un exemple de ta précipitation, tu veux aller vite et tu fais des petites fautes, tu as encore remis les accents dans les noms des variables... <_< ... sois attentif Stp.

Puis, une autre petite erreur, ici ce n'est pas très grave (je te rassure ;) ), Php saura ignorer que tu as oublié de mettre une espace après le signe égal "=", même l'espace avant le point virgule est inutile, pas grave, mais pas nécessaire, alors, tente à l'avenir d'être un peu plus rigoureux, ok ? :huh:

La solution corrigée serait donc :

$boisson_gazeuse_sucree = "3 canettes";
$eau_minerale = "2 boureilles";
$biere_sans_alcool = "6 bouteilles";

Bon, je suis en ce moment penché sur un autre projet, mais dès que j'ai un moment on passe à l'étape suivante, mais, en attendant, n'hésites pas à relire les messages importants de cet échange, afin de bien intégrer ces quelques bases, c'est super important... allez, au boulot ;)

Ce message a été modifié par Fredo d:o) - 01 mars 2010 - 10:30 .

Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#18 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 02 mars 2010 - 02:01

Bonjour à tous :)

Ok, on continue avec notre tuto, cette fois on va aborder l'utilisation des tableaux de données, c'est à dire, des "array" avec Php.

--

Étape 2 : Php, Les Array

Qu'est-ce qu'un "array" ?

Un "array" c'est un tableau de données, ou, pour le dire autrement, c'est une liste de données.

Dans le suite de ce tuto j'utiliserai indifféremment l'un de ce trois termes pour désigner la même chose, à savoir : tableau de données, liste de données ou "array".

Nous avons vu, à la première étape, comment déclarer une variable et comment lui affecter une valeur. Nous avons également vu que nous pouvions créer théoriquement autant de variables dont nous avions besoin, comme lors du dernier exemple.

Justement, ce dernier exemple est parfait pour illustrer ce qu'est un "array" et la manière de l'utiliser.

Donc, reprenons notre analogie des fruits.

Nous avons donc un certain nombre de pommes de différentes variétés (vertes, rouges et jaunes).

Dans notre exemple précédent, nous les avions rangées par variété dans des paniers différents, ainsi, nous avions un panier pour les pommes vertes, un autre pour les rouges et un dernier pour les jaunes.

Traduit en code Php nous pouvons dire que nos 3 paniers sont représentés par nos trois variables : "$panier_a_pommes_vertes", "$panier_a_pommes_rouges" et "$panier_a_pommes_jaunes".

Mais si, au lieu d'avoir trois paniers différents, un pour chaque variété de pomme, nous voulions au contraire ranger toutes les pommes dans un seul et même panier, comment pourrions nous faire alors pour ne pas les mélanger et pouvoir toujours distinguer nos trois variétés de pommes ?

La solution est, vous l'avez compris, l'utilisation d'une variable de type "array".

Ok, mais comment fait-on pour créer cette variable ?

La syntaxe est strictement identique que pour la création des variables normales, à une petite mais très importante différence près : il faut ajouter à la fin du nom de la variable un crochet ouvrant "[" et un crochet fermant "]", de cette manière :

$une_variable_de_type_array[] = "valeur ajoutée";

Explication : ici nous avons créé une variable nommée "$une_variable_de_type_array" que nous avons automatiquement converti en type "array" grâce à la présence des deux crochets (ouvrant et fermant) à la fin du nom. Il suffit ensuite, comme pour n'importe quelle variable normale, de lui affecter une valeur.

On peut dire dès lors que toute déclaration de variable dont le nom contient à la fin un crochet ouvrant et un autre fermant, est automatiquement considéré par le moteur de Php comme étant une variable de type "array".

Maintenant, si nous souhaitons faire une variable de type "array" pour nos pommes, il suffit de déclarer une variable avec des crochets à la fin (un ouvrant et l'autre fermant) puis, tout simplement, de lui affecter, en plusieurs fois, chacune des valeurs qu'on souhaite mémoriser :

$panier_a_pommes_varies[] = "5 pommes vertes";
$panier_a_pommes_varies[] = "3 pommes rouges";
$panier_a_pommes_varies[] = "4 pommes jaunes";

Voilà, notre variable de type "array" est prête à être utilisée, mais avant, vérifions son contenu en l'affichant, grâce à la fonction Php "print_r" qu'il faut exécuter pour voir le résultat, comme ceci :

print_r($panier_a_pommes_varies);
/*
Array
(
    [0] => 5 pommes vertes
    [1] => 3 pommes rouges
    [2] => 4 pommes jaunes
)
*/

Comme on peut le constater, ici on n'inscrit pas les crochets à la fin du nom de la variable, en effet, les crochets servent uniquement lorsqu'on souhaite travailler avec les items à l'intérieur de la liste des données, c'est à dire, avec les données contenues dans la variable "array", nous le verrons ci-après.

--

Les couples "clé" plus "valeur"

Nous devons maintenant aborder un des points les plus importants de ce type de variables "array", bien comprendre et bien intégrer ce principe est essentiel pour pouvoir exploiter toute leur puissance et souplesse.

ATTENTION, ce principe est à retenir absolument :
Toutes les variables de type "array" sont composées des couples "clé" plus "valeur" !

Comme c'est un point capital à comprendre, je développe un peu plus cette notion pour être le plus clair possible.

Nous l'avons dit, une variable de type "array" contient une liste de données... ok.
Chaque donnée présente dans la variable est un "item" ou élément.
Chaque "item" est toujours composé d'une clé plus une valeur... toujours !

Comme nous le voyons lorsque nous affichons notre variable "$panier_a_pommes_varies" avec la fonction "print_r", les différentes valeurs contenues dans la variable sont précédées par un chiffre entouré de crochets, ce chiffre est justement la clé identifiant de manière unique et sûre la valeur qui lui correspond.

Pour bien matérialiser et visualiser le lien existant entre la clé et la valeur d'un "item", un symbole de flèche (constitué d'un signe égal "=" suivi d'un caractère supérieur ">") lie toujours les deux éléments :

/*
Array
(
    [0] => 5 pommes vertes
    [1] => 3 pommes rouges
    [2] => 4 pommes jaunes
)
*/

Le chiffre clé, placé entre crochets, est automatiquement généré par Php dès qu'on ajoute un élément à la variable, la valeur de ce chiffre augmente de manière incrémentale, par paliers de un, dès l'ajout d'un nouvel élément.

Ce type de tableau de données et appelé "tableau indexé" ou "array indexé", puisque les clés représentent ni plus ni moins que l'index de l'élément à l'intérieur de la liste, autrement dit, il indique la place de l'élément par rapport aux autres à l'intérieur de la variable.

Ainsi, si nous désirons afficher le tout premier élément d'une variable "array" indexée, il suffit de faire un "echo" de la manière suivante :

echo $panier_a_pommes_varies[0]; // -> "5 pommes vertes"

En Php, comme dans d'autres langages de programmation, le premier élément d'une liste indexée porte toujours le numéro d'index 0 (zéro).

Dès lors, si, par exemple, nous voulons afficher le troisième élément de cette même liste, il suffit de soustraire un au numéro d'item qu'on cherche pour avoir son numéro d'index dans la liste, dans notre cas, 3 - 1 = 2, donc :

echo $panier_a_pommes_varies[2]; // -> "4 pommes jaunes"

La clé d'un item permet également de modifier sa valeur liée, ainsi, si nous désirions changer de type de pomme pour la clé d'index 1, il suffit de faire une simple affectation, en indiquant bien la clé entre les crochets de la variable, avec la nouvelle valeur :

$panier_a_pommes_varies[1] = "6 pommes Melrose";

Du coup, si nous affichons à nouveau l'intégralité de la variable "$panier_a_pommes_varies" avec la fonction "print_r", nous aurions le résultat suivant :

/*
Array
(
    [0] => 5 pommes vertes
    [1] => 6 pommes Melrose
    [2] => 4 pommes jaunes
)
*/

--

Voilà, nous arrivons à la fin de cette deuxième partie, mais avant de passer aux travaux pratiques, je tiens à faire un petit résumé des notions les plus importantes :

1. Une variable de type "array" se déclare exactement comme une variable normale, à la seule différence qu'il faut ajouter un crochet ouvrant et un autre fermant à la fin du nom de la variable :

$une_variable_de_type_array[] = "valeur ajoutée";


2. Une variable de type "array" contient des éléments (items) toujours composés d'une clé plus une valeur liée ;

3. On parle d'un "array indexé" lorsque les clés de chaque item sont composés de chiffres reprenant l'index, c'est à dire, la place de chaque élément à l'intérieur de la variable.

4. Le premier item d'un "array indexé" possède toujours une clé d'index 0 (zéro), les autres items sont incrémentés de un automatiquement ;

5. Pour récupérer ou modifier la valeur d'un item, il faut indiquer sa clé liée :

// Récupération du premier élément de la variable de type "array" $panier_a_pommes_varies
echo $panier_a_pommes_varies[0];

// Modification de l'item d'index 1 de la variable de type "array" $panier_a_pommes_varies
$panier_a_pommes_varies[1] = "6 pommes Melrose";


--

Voilà, cette étape est un peu longue, mais elle est essentielle à comprendre, c'est pourquoi je n'ai pas hésité à la développer au mieux que je pouvais.

Prochaine étape : Php, Les Array Associatifs

--

Ce message a été modifié par Fredo d:o) - 02 mars 2010 - 02:19 .

Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#19 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 02 mars 2010 - 02:13

TP 2 : Php, Les Array

Exercice 1 :

Déclarer une variable de type "array" et lui affecter la valeur des 4 points cardinaux, à savoir : Nord, Sud, Est et Ouest.

--

Exercice 2 :

Afficher l'élément d'index 2 de la variable "array" déclarée dans l'exercice 1.

--

Exercice 3 :

Indiquer la clé de la valeur "Sud" dans la variable "array" déclarée dans l'exercice 1.

--

Exercice 4 :

Modifier les 4 valeurs de la variable "array" déclarée dans l'exercice 1 par les valeurs suivantes : Haut, Bas, Droite, Gauche.

--

Exercice 5 :

Afficher l'intégralité des valeurs de la variable "array", modifiée à l'exercice 4, avec la fonction "print_r".

--

Ce message a été modifié par Fredo d:o) - 02 mars 2010 - 02:25 .

Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#20 Go'Gaule

Go'Gaule

    Grand(e) bavard(e)

  • Bannis
  • PipPipPip
  • 445 Messages :
  • Configuration:eMac 700Mhz MaBook 13" 2.2 jsuis pas riche !
  • Sexe:Masculin
  • Localisation:Dordogne

Posté 02 mars 2010 - 09:51

Bonjour à toutes et tous .

Alors je :
N°1
$les_points_cardinaux[] =" Nord ";
$les_points_cardinaux[] =" Sud ";
$les_points_cardinaux[] =" Est ";
$les_points_cardinaux[] =" Ouest ";
N°2
echo $les_points_cardinaux [2] ;

cle valeur Sud [1]
N°3
$les_points_cardinaux[0] =" Haut ";
$les_points_cardinaux[1] =" Bas ";
$les_points_cardinaux[2] =" Droite ";
$les_points_cardinaux[3] =" Gauche ";
N°4
print_r($les_points_cardinaux);

/*
Array
(
[0] => Haut
[1] => Bas
[2] => Droite
[3] => Gauche
)
*/

Merci
Cordialement.

Ce message a été modifié par Go'Gaule - 02 mars 2010 - 09:52 .

En jachère ... bientôt le printemps ..! et les semailles !

#21 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 02 mars 2010 - 11:23

Salut Go'Gaule :)

Alors là :o ... que dire ? :huh: ... c'est vraiment parfait :up: ... enfin, presque parfait <_<

Bon, je pense, pour une fois, que tu as compris l'essentiel du fonctionnement des variables de type "array", nous pourrons donc passer à l'étape suivante, mais avant ça, seulement parce que je suis un pinailleur de premier ordre :P , je vais te demander de faire deux choses :

  • Regarde bien attentivement, une, deux, trois fois si nécessaire tes réponses, et corrige toutes les petites erreurs qui traînent par ci e par là (notamment ta gestion si particulière des espaces :huh: ) ... attention, je viens de le voir, la réponse à l'exercice N° 2 est erronée, la syntaxe est incorrecte, encore un souci d'espace... sois attentif Stp, d'acc ? :huh:
  • J'aimerai beaucoup, mais alors vraiment beaucoup, que tu fasses un petit effort pour mieux présenter tes réponses, et en règle générale tes messages. Par exemple, tâche de mettre les codes informatiques dans une balise "code", ensuite, tâche de bien séparer les différentes réponses (moi je mets deux petits tirets pour séparer chaque exercice, tu peux t'y inspirer), bref, STP, soigne un peu la présentation de tes messages, ok ? :blink:

Oui, je sais, l'important est que tu ai bien compris ce qu'est une variable de type "array" et son utilisation, mais, comme nous passons pas mal de temps à échanger dans ce forum, je pense qu'il n'est pas inutile que tu t'appliques d'avantage à mieux préparer et présenter tes messages, une mise en page claire aide très souvent à bien comprendre son contenu...

Donc, avant de passer à la suite, je t'invite très chaleureusement à refaire ta réponse en soignant au mieux, et dans le détail, sa présentation, ok ?

Allez Go'Gaule, au boulot :D ;)
Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#22 Go'Gaule

Go'Gaule

    Grand(e) bavard(e)

  • Bannis
  • PipPipPip
  • 445 Messages :
  • Configuration:eMac 700Mhz MaBook 13" 2.2 jsuis pas riche !
  • Sexe:Masculin
  • Localisation:Dordogne

Posté 02 mars 2010 - 11:38

Bonjour à tous .

Réponse n°1
$les_points_cardinaux[] = "Nord";
$les_points_cardinaux[] = "Sud";
$les_points_cardinaux[] = "Est";
$les_points_cardinaux[] = "Ouest";

Réponse n°2
echo $les_points_cardinaux[2]; 

Réponse n°3
clé valeur Sud = 1

Réponse n°4
$les_points_cardinaux[0] = "Haut";
$les_points_cardinaux[1] = "Bas";
$les_points_cardinaux[2] = "Droite";
$les_points_cardinaux[3] = "Gauche";

Réponse n°5

Afficher le contenu du tableau
print_r($les_points_cardinaux);

Ce qui sera affihé 
/*
Array
(
[0] => Haut
[1] => Bas
[2] => Droite
[3] => Gauche
)
*/
Cordialement.

Ce message a été modifié par Go'Gaule - 02 mars 2010 - 18:35 .

En jachère ... bientôt le printemps ..! et les semailles !

#23 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 02 mars 2010 - 12:40

Bon bein, voilà, tu vois quand tu veux :P ... là c'est mieux, c'est vraiment beaucoup mieux... non ? :huh: ... tu en penses quoi Go'Gaule ? :blink:

Mais bon, je te l'ai dit, je suis un vrai pinailleur, alors autant aller jusqu'au bout de notre démarche, ok ?

Alors, en règle générale, on ne place exclusivement que du code informatique dans les blocs de type "code", ceci afin de faciliter leur récupération et test, donc, il serait judicieux que tu mettes à l'extérieur les titres de tes réponses ("Réponse n°1", etc.), ce sera plus propre et clair.

Ensuite, regardons chaque réponse et voyons ce qu'on peut améliorer... reprenons donc dans l'ordre :

Réponse 1 :

Déjà, il y a une grosse erreur de syntaxe dans tes affectations, en effet, entre les crochets ouvrant et fermant de la variable il ne faut rien mettre, pas même une espace, lorsqu'on souhaite affecter une nouvelle valeur.

Ensuite, tâche de bien isoler le signe égal "=" d'affectation en prenant bien soin de mettre une espace avant et une espace après.

Enfin, pour les valeurs, même si là ce n'est pas d'une importance capitale, ne met pas systématiquement des espaces entre les guillemets et les mots, ce n'est pas bien nécessaire (ça peut même causer des soucis si on souhaite par exemple faire des recherches ou des tris).

Donc, pour y voir plus clair, voici la syntaxe correcte de la première affectation, à toi de corriger les autres :

$les_points_cardinaux[] = "Nord";


Réponse 2 :

Là, ce n'est pas bien méchant, il y a une espace en trop entre le nom de la variable et les crochets, Php sait en général contourner ce type de petites erreurs, mais soyons un peu puristes en tentons de produire un code le plus propre possible (pareil pour l'espace avant le point-virgule, pas vraiment nécessaire).

echo $les_points_cardinaux[2];


Réponse 3 :

Là, absolument rien à dire, c'est parfait (hormis cette histoire de titre à sortir du bloc "code")


Réponse 4 :

Même petit soucis ici que pour la réponse 1, les espaces en trop dans les valeurs et l'espace manquant après le signe égal "=" d'affectation... à corriger donc.


Réponse 5 :

Rien à dire, tout est parfait (sauf toujours cette histoire de titre à sortir).


Voilà, donc, ne crée pas un nouveau message pour ces petites corrections, édite le message précédent (bouton "modifier") et tâche de finaliser aux petits oignons sa présentation... ok ? :huh: ... allez, comme-ça, ce soir, on passe à l'étape suivante...

@+ :)
Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#24 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 02 mars 2010 - 13:40

Alors là, franchement, chapô l'artiste :clap:

C'est nickel chrome, si tu t'appliques comme-ça pour la suite du tuto, je sens que ça va être un vrai plaisir d'aller jusqu'au bout...

Une fois n'est pas coutume : merci Go'Gaule ! :up:

Allez, à ce soir pour la suite, n'hésites pas en attendant à faire des tests de ton côté, et si jamais tu as des questions concernant les points que nous avons traité, n'hésites pas à les poser avant de passer à la suite... ok?

@+ :)
Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#25 AliGator

AliGator

    (Trop) Grand Bavard

  • Membres d'honneur
  • PipPipPipPipPipPipPipPipPip
  • 12 338 Messages :
  • Configuration:• MacBook Pro 15" 2,2GHz, 10.6
    • MacMini G4 1,42GHz, 10.5
  • Sexe:Masculin
  • Localisation:Rennes (Bretagne, France)
  • Passions:Piano, Cuisine, Danse (Rock, ...), faire des réponses de 3km

Posté 02 mars 2010 - 14:49

Juste une petite précision, car je ne sais pas si c'est très clair : la partie entre "/*" et "*/" est en réalité un commentaire, dans lequel on met ce que l'on veut. Ici Fredo l'utilise, comme on le fait souvent dans ce genre d'explication de code, pour indiquer ce qui sera affiché si l'on exécute le code PHP, donc ce que tu verras dans ton navigateur en résultat.

Ainsi, le bloc :
print_r($les_points_cardinaux);

/*
Array
(
[0] => Haut
[1] => Bas
[2] => Droite
[3] => Gauche
)
*/
Exprime bien deux choses :
1) D'une part, le code que je dois écrire c'est
print_r($les_points_cardinaux);
2) D'autre part, pour information, quand j'exécuterai ce code (quand j'afficherai ma page PHP dans mon navigateur), voilà ce que je m'attend à obtenir comme affichage, en conséquence de cet appel à print_r :
Array
(
[0] => Haut
[1] => Bas
[2] => Droite
[3] => Gauche
)
Et du coup pour mentionner cette info dans notre code pour montrer qu'on a bien compris, ou indiquer ce qu'on attend comme genre d'affichage, etc, on le met entre un /* et un */ pour que ça soit compris dans le code PHP comme un commentaire, et donc pas interprété comme du code à exécuter, mais bien comme du texte informatif pour celui qui relit le code.

Donc juste pour être clair, et pour montrer que ce ne sont que des commentaires et qu'on peut commenter son code pour aider à sa relecture, on peut aussi répondre ainsi à la question 5 ainsi (et donc mettre exactement tout ce texte dans le code PHP) :
/* Ici je demande d'afficher le contenu du tableau 'les_points_cardinaux' */
print_r($les_points_cardinaux);

/* Et je devrais donc avoir comme réponse quand j'afficherai ma page PHP dans mon navigateur, ceci :
Array
(
  [0] => Haut
  [1] => Bas
  [2] => Droite
  [3] => Gauche
)
Autrement dit, un tableau associatif indexé, contenant les 4 valeurs "Haut", "Bas", "Droite" et "Gauche"
*/
Tu noteras que j'ai bien mis des phrases, et même du français avec des accents et tout, dans les commentaires (entre le "/*" et le "*/"), commentaire que tu peux mettre aussi dans ton fichier PHP à toi : tout ce qui est entre /* et */ est donc considéré comme commentaires, n'est pas interprété par le code (pour le programme, c'est comme si ça n'existait même pas, ça ne sert que pour toi pour aider à la lecture du code), D'ailleurs dans ce cas particulier tu vois que tu peux mettre ce que tu veux, du texte, même avec des accents... tant que c'est bien dans les commentaires, ça n'a pas d'incidence sur le code.

Le posteur fou de macfr
Mon blog: Crunchy Development
______________
Devise Shadok : S'il n'y a pas de solution, c'est qu'il n'y a pas de problème...


#26 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 03 mars 2010 - 14:53

Bonjour à tous :)

Merci Ali pour ta contribution, c'est vrai que je n'ai pas pensé à parler des commentaires... c'est fait maintenant ;)

Bon, ok, on continue donc avec notre tuto, en complétant l'étude des variables de type "array" avec leur variante associative.

--

Étape 3 : Php, Les Array Associatifs

Comme nous l'avons vu à l'étape précédente, un "array" est un type de variable capable de contenir une liste d'éléments, chaque élément étant toujours composé d'une clé plus une valeur.

Les valeurs peuvent être de différents types : nombre, texte, booléen, et même de type "array", ce qui permet d'imbriquer plusieurs "array" les uns dans les autres, on parle alors des "tableaux multi-dimensionnels", mais nous verrons un petit exemple à la fin de cette étape.

Pour l'heure, laissons les valeurs un peu de côté et concentrons nous d'avantage sur les clés.

En effet, jusqu'à présent nous avons vu que les clés étaient des chiffres, créés automatiquement par Php et qui représentent l'index de chaque valeur à l'intérieur de la variable, on nomme ce type de structure des "tableaux indexés" ou "array indexés".

Maintenant, point très important et surtout utile, il faut savoir que les clés peuvent être personnalisées, par d'autres chiffres que ceux créés automatiquement par le langage, mais, mieux encore, par des bouts de texte libres, souvent assez simples, mais pouvant même être complexes.

Pour illustrer cette fonctionnalité, reprenons notre exemple de variétés de pommes vu jusqu'à là.

Nous avons réussi à ranger nos trois variétés de pommes dans une variable "array", ce qui permet de les avoir toutes au même endroit (notre fameux panier à pommes :) ), et même de travailler chaque variété indépendamment des autres grâce à leur clé indexée (je reproduit ici l'ensemble des codes qui nous intéressent) :

// Déclaration et affectations d'une variable "array"
$panier_a_pommes_varies[] = "5 pommes vertes";
$panier_a_pommes_varies[] = "3 pommes rouges";
$panier_a_pommes_varies[] = "4 pommes jaunes";

// Affichage du contenu de la variable
print_r($panier_a_pommes_varies);
/* 
Résultat de l'affichage :
Array
(
    [0] => 5 pommes vertes
    [1] => 3 pommes rouges
    [2] => 4 pommes jaunes
)
*/

Donc, si nous voulons par exemple changer le nombre de pommes rouges, de 3 à 6, nous n'avions qu'à faire :

$panier_a_pommes_varies[1] = "6 pommes rouges";

Nous aurions donc notre tableau ainsi :

// Affichage du contenu de la variable
print_r($panier_a_pommes_varies);

// Résultat de l'affichage
/*
Array
(
    [0] => 5 pommes vertes
    [1] => 6 pommes rouges
    [2] => 4 pommes jaunes
)
*/

Cette méthode est très pratique et elle est largement suffisante la plupart du temps, mais elle implique de connaître exactement l'index, et donc la place, de chaque élément pour pouvoir les manipuler correctement et sans risque, ce qui, malheureusement, n'est pas toujours possible, voire, parfois, pas souhaitable.

Par exemple, imaginons que nous ne puissions pas un jour aller au marché acheter nos fruits, et que nous demandions à un proche de nous rendre service et de le faire à notre place, ce qui, heureusement, il le fait de bonne grâce...

Mais, malheureusement, comme il ne connaît pas l'ordre exact de rangement des pommes dans le panier à pommes, il place les différentes variétés dans un ordre différent que celui que nous avions l'habitude d'utiliser...

Puis, à notre retour, c'est le drame :( ... nous ne pouvons plus savoir combien de pommes de chaque variété contient notre panier :wacko:

Bon, là j'exagère un peu, car on n'a que trois éléments pour l'instant dans notre variable de pommes, mais cela pourrait réellement devenir un vrai cauchemar avec un nombre important d'items, imaginez seulement un peu le boxon si on changeait l'ordre de tout votre carnet d'adresses contenu dans une variable de type "array indexé"... wouw :o ... je ne vous le souhaite pas, vraiment pas :NonNon:

Pour éviter ce type de mésaventures, il existe un moyen simple et très efficace d'attribuer les bonnes données aux bons éléments, ce sont les clés personnalisées, dès lors, notre "array" devient "associatif", c'est à dire que chaque valeur est associée une clé unique et clairement identifiable, qui ne tien plus compte de sa place à l'intérieur de la liste, mais uniquement de son identifiant.

Voyons ce que ça peut donner côté code :

// Déclaration et affectations d'une variable "array associatif"
$panier_a_pommes_varies['vertes'] = "5 pommes vertes";
$panier_a_pommes_varies['rouges'] = "3 pommes rouges";
$panier_a_pommes_varies['jaunes'] = "4 pommes jaunes";

Comme on peut le voir dans l'exemple, nous avons ajouté un mot entre les crochets de la variable, un mot correspondant et identifiant clairement la valeur qu'on mémorise dans la variable.

Ce mot devient dès lors la clé unique pour la valeur, les deux éléments, clé et valeur, sont donc clairement liés et associés, notre variable devient du coup un "tableau associatif" ou "array associatif".

Avant de poursuivre, faisons un petit "print_r" pour afficher notre variable :

// Affichage du contenu de la variable
print_r($panier_a_pommes_varies);

// Résultat de l'affichage
/*
Array
(
    [vertes] => 5 pommes vertes
    [rouges] => 3 pommes rouges
    [jaunes] => 4 pommes jaunes
)
*/

Comme nous le voyons, nos clés ne sont plus des chiffres créés automatiquement par Php, mais bien les termes que nous avons choisir pour identifier chaque valeur.

Il devient alors très simple, quelque soit l'ordre des items à l'intérieur de la variable, de récupérer ou de modifier n'importe quelle valeur, simplement en la ciblant avec sa clé unique, par exemple, si comme dans l'exemple précédent nous souhaitons modifier la quantité des pommes rouges, nous ferions :

$panier_a_pommes_varies['rouges'] = "6 pommes rouges";

Admettons maintenant que les items de notre variable aient subitement changé d'ordre (notre proche les a rangé n'importe comment :huh: ), ce qui donnerait par exemple :

// Déclaration et affectations d'une variable "array associatif"
$panier_a_pommes_varies['rouges'] = "3 pommes rouges";
$panier_a_pommes_varies['jaunes'] = "4 pommes jaunes";
$panier_a_pommes_varies['vertes'] = "5 pommes vertes";

Et bien, ça n'a plus aucune importance, puisque nous n'avons plus besoin de connaître leur index, leur place donc, pour pouvoir les manipuler, il nous suffit simplement de connaître leur clé respective... cool non ? ;)

Cette méthode est d'autant plus intéressante et souple que Php autorise d'utiliser des textes complexes comme clés, et même, comble du bonheur pour nous français, les caractères accentués :up:

Ainsi, on aurait très bien pu choisir des clés comme :

// Déclaration et affectations d'une variable "array associatif"
$panier_a_pommes_varies['mes formidables pommes vertes'] = "5 pommes vertes";
$panier_a_pommes_varies['des délicieuses pommes rouges'] = "3 pommes rouges";
$panier_a_pommes_varies['woaaa, elles sont géniales mes pommes jaunes'] = "4 pommes jaunes";

Bon, ok, là j'en fais peut-être un peu trop :whistling: , d'autant qu'il faut éviter d'utiliser des clés trop complexes, plus difficiles à manipuler étant donnée que la moindre faute (une espace manquante, une virgule en trop, un point de travers :P , etc.) peut créer des erreurs importantes dans notre variable, et des résultats pour le moins surprenants, pour ne pas dire indésirables.

Donc, dans la mesure du possible, il faut se contenter de clés simples, un ou deux mots suffisent, tenter d'éviter aussi l'utilisation des caractères accentués, des espaces, etc., bref, on peut vivement recommander de se baser sur les mêmes règles que pour les noms des variables, tel que vu plus tôt dans cette discussion (le signe dollar "$" en moins, évidemment).

Petit détail, mais qui a son importance, les clés personnalisés ce sont des textes, des "string" donc, et comme toute valeur de ce type, il faut toujours les entourer avec des apostrophes (voir mes exemples) ou avec des guillemets, l'une ou l'autre, selon les besoins et les habitudes de chacun.

--

Les Array Imbriqués

Nous venons de voir toute la souplesse et puissance de l'utilisation des clés personnalisées dans les tableaux associatifs, voyons maintenant ce que nous pouvons faire avec les valeurs.

Comme dit en introduction, les valeurs des "array" peuvent être de différents types, presque les mêmes que ceux qu'on peut affecter aux variables (pas exactement, mais pas bien loin ;) ), à savoir :

  • Valeurs textuelles (string) ;
  • Valeurs numériques (integer, float ou real) ;
  • Valeurs booléennes (true ou false, 1 ou 0 zéro) ;
  • Valeurs de type tableau (array).

Nous n'aborderons pas ici les valeurs numériques et booléennes, ceci serait un peu long et nous écarterai de notre sujet actuel, mais il y a plein de sites de vulgarisation qui en parlent de manière assez claire et complète, je vous invite donc à les consulter si vous avez besoin d'en savoir plus.

Les valeurs textuelles ce sont celles que nous venons de voir, regardons maintenant ce qu'on peut faire avec les valeur de type "array".

Pour aborder ce thème, nous allons reprendre le tout premier exemple de ce tuto, c'est à dire, celui des fruits achetés au marché (voir étape 1).

Du retour du marché nous avons donc un sac rempli de fruits : des pommes, des poires et des bananes.

Nous avons rangé tous ces fruits dans des paniers différents (des variables différentes), mais tous ces paniers à fruits se trouvent rangés dans un seul et même meuble, spécialement réservé aux fruits, un autre étant réservé aux légumes, etc.

Nous voudrions donc pouvoir centraliser dans une même variable tout ce que contient notre meuble à fruits, tout en conservant un accès simple et rapide à nos différentes variétés de pommes, de poires et de bananes.

Ceci est possible grâce à l'utilisation des tableaux associatif imbriqués, également nommés "tableaux multi-dimensionnels".

Voici rapidement, sans entrer dans le détail, ce que ça donnerait en code Php notre meuble à fruits :

// Commençons par nos pommes
$meuble_a_fruits['panier_a_pommes']['vertes'] = "5 pommes vertes";
$meuble_a_fruits['panier_a_pommes']['rouges'] = "3 pommes rouges";
$meuble_a_fruits['panier_a_pommes']['jaunes'] = "4 pommes jaunes";

// Passons ensuite aux poires
$meuble_a_fruits['panier_a_poires']['williams'] = "2 poires Williams";
$meuble_a_fruits['panier_a_poires']['anjou'] = "6 poires d'Anjou";
$meuble_a_fruits['panier_a_poires']['concorde'] = "5 poires Concorde";

// Finissons avec les bananes
$meuble_a_fruits['panier_a_bananes']['cavendish'] = "6 bananes Cavendish";
$meuble_a_fruits['panier_a_bananes']['poyo'] = "4 bananes Poyo";

Et oui, comme-ça, c'est vrai, ça paraît un peu compliqué, mais affichons d'abord ce que notre variable "$meuble_a_fruits" contient, toujours avec la fonction "print_r" :

// Affichage de la variable "meuble_a_fruits"
print_r($meuble_a_fruits);

// Résultat de l'affichage
/*
Array
(
    [panier_a_pommes] => Array
        (
            [vertes] => 5 pommes vertes
            [rouges] => 3 pommes rouges
            [jaunes] => 4 pommes jaunes
        )
   [panier_a_poires] => Array
        (
            [williams] => 2 poires Williams
            [anjou] => 6 poires d'Anjou
            [concorde] => 5 poires Concorde
        )
   [panier_a_bananes] => Array
        (
            [cavendish] => 6 bananes Cavendish
            [poyo] => 4 bananes Poyo
        )
)
*/

Il devient alors très simple de gérer notre meuble à fruits, il suffit de cibler le bon panier, grâce à sa clé, puis de changer les données associées aux différentes variétés de fruit, par exemple, si nous voulons changer le nombre de pommes rouges (et oui, pourquoi changer ;) ), nous ferions tout simplement :

$meuble_a_fruits['panier_a_pommes']['rouges'] = "6 pommes rouges";

C'est simple, rapide et très pratique. :up:

--

Voilà, nous avons vu, très rapidement, l'utilisation des variables de type "array" et leurs différentes variantes, ceci est important car nous allons en avoir besoin lorsque nous aurons à traiter les données récupérées du formulaire Html... mais bon, n'allons pas trop vite en besogne, chaque chose en son temps... ;)

Prochaine étape : Html, Le Formulaire

--

Ce message a été modifié par Fredo d:o) - 03 mars 2010 - 14:53 .

Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#27 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 03 mars 2010 - 15:03

TP 3 : Php, Les Array Associatifs

Exercice 1 :

Déclarer une variable de type "array associatif" avec 3 items, chaque élément devra contenir un modèle de voiture d'un des constructeurs automobiles français (peu importe si les données sont exactes avec la réalité, il s'agit juste de comprendre l'utilisation des tableaux associatifs).

--

Exercice 2 :

Afficher la voitures de la marque "Renault" avec la fonction "echo".

--

Exercice 3 :

Ajouter, pour chaque marque, un modèle en motorisation essence et un autre diesel.

--

Exercice 4 :

Afficher l'intégralité des valeurs de la variable, modifiée à l'exercice 3, avec la fonction "print_r".

--

Ce message a été modifié par Fredo d:o) - 03 mars 2010 - 20:17 .

Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#28 Go'Gaule

Go'Gaule

    Grand(e) bavard(e)

  • Bannis
  • PipPipPip
  • 445 Messages :
  • Configuration:eMac 700Mhz MaBook 13" 2.2 jsuis pas riche !
  • Sexe:Masculin
  • Localisation:Dordogne

Posté 03 mars 2010 - 19:09

Bonsoir à toutes et tous .

Exercice n°1
$garage_du_centre['voitures_peugeot'] ['204'] = "1 204";
$garage_du_centre['voitures_peugeot'] ['504'] = "3 504";
$garage_du_centre['voitures_peugeot'] ['207'] = "2 207";
$garage_du_centre['voitures_peugeot'] ['Rosalie'] ="Voiture Vendue";

$garage_du_centre['voitures_renault'] ['R4L'] = "Stock épuisé";
$garage_du_centre['voitures_renault'] ['R8Gordini'] = "2 R8 Gordini"; // Ma Première voiture 
$garage_du_centre['voitures_renault'] ['4cv'] = "1 4cv";

$garage_du_centre['voitures_citroen'] ['2cv'] = "3 2cv";
$garage_du_centre['voitures_citroen'] ['DS19'] = "1 DS 19"; // Ma voiture préférée 
$garage_du_centre['voitures_citroen'] ['Acadiane'] = "2 Acadiane";
$garage_du_centre['voitures_citroen'] ['Ami6'] = "1 Ami6";

Exercice n°2
echo $garage_du_centre['voitures_renault'] ['R8Gordini'] = "2 R8 Gordini";
résultat echo   =  R8Gordini => 2 R8 Gordini

Exercice n°3
$garage_du_centre['voitures_peugeot'] ['204'] = "1 204" , "Essence";
$garage_du_centre['voitures_peugeot'] ['504'] = "3 504" , "1 Essence" , "2 Diesel";
$garage_du_centre['voitures_peugeot'] ['207'] = "2 207" , "2 Diesel";
$garage_du_centre['voitures_peugeot'] ['Rosalie'] ="Voiture Vendue";

$garage_du_centre['voitures_renault'] ['R4L'] = "Stock épuisé";
$garage_du_centre['voitures_renault'] ['R8Gordini'] = "2 R8 Gordini" ,"Essence injection";//Ma première voiture
$garage_du_centre['voitures—renault'] ['4cv'] = "1 4cv" ,"Essence";

$garage_du_centre['voitures_citroen'] ['2cv'] = "3 2cv" , "Essence";
$garage_du_centre['voitures_citroen'] ['DS19'] = "1 DS 19", "Essence"; // Ma voiture préférée 
$garage_du_centre['voitures_citroen'] ['Acadiane'] = "2 Acadiane", "Essence";
$garage_du_centre['voitures_citroen'] ['Ami6'] = "1 Ami6" , "Essence";

Exercice n°4
Affichage avec print_r
print_r($garage_du_centre);


/*Résultat de l'affichage

/*

	Array
	(
	[voitures_peugeot]  => Array
	(
		204 => 1 204 , Essence
		504 => 3 504 ,1 Essence , 2 Diesel
		207 => 2 207 , Diesel
		Rosalie => Voiture vendue
		)
	
	[voitures_renault] => Array
	(
		R4L => Stock épuisé
		R8Gordini => 2 R8 Gordini , Essence injection
		4cv => 1 4cv ,  Essence
		)

	[voitures_citroen] => Array
	(
		2cv => 3 2cv , Essence
		DS19 => 1 DS19 , Essence 
		Acadiane => 2 Acadiane , Essence
		Ami6 => 1 Ami6 , Essence
		)
*/
Pour l'exercice n°3 , je n'ai pas tout compris .
Cordialement

Ce message a été modifié par Go'Gaule - 03 mars 2010 - 19:14 .

En jachère ... bientôt le printemps ..! et les semailles !

#29 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 03 mars 2010 - 19:57

Salut Go'Gaule :)

Et bien, je pense que tu t'es un peu compliqué la vie sur ce coup... :blink:

Non non, c'est moi qui me mélange les pinceaux sur ce coup :(

Au fait, je me suis un peu gouré dans l'énoncé, je voulais en premier qu'on voit les variables "array" associatifs, mais pas les multi-dimensionnels, c'est un peu de ma faute (un peu fatigué peut-être le Fredo :P ).

Bon, ok, je revoie l'énoncé du premier exercices (et du deuxième du coup) et on refait ça, les exercices 3 et 4 ne devraient pas trop changer...

Bon, ok, j'ai refait aussi l'énoncé de l'exercice 3, pour ne pas trop se compliquer la vie, ça devrait être bon là... enfin, j'espère :huh:

Donc, ne refait pas un nouveau message Go'Gaule, édite ton message précédent et tente de proposer des nouvelles réponses pour les nouveaux énoncés... désolé pour ce petit couac, ça devait arriver :P ;)

Pour la présentation, rien à redire, c'est parfait, continue comme-ça :clap:

Allez, revois un peut tout ça et puis on passera au code Html... si tout va bien, en fin de semaine tu sauras faire tout seul te propres formulaires, c'est pas génial ça :huh: :lol:

;)

Ce message a été modifié par Fredo d:o) - 03 mars 2010 - 20:22 .

Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#30 Go'Gaule

Go'Gaule

    Grand(e) bavard(e)

  • Bannis
  • PipPipPip
  • 445 Messages :
  • Configuration:eMac 700Mhz MaBook 13" 2.2 jsuis pas riche !
  • Sexe:Masculin
  • Localisation:Dordogne

Posté 04 mars 2010 - 10:41

Bonjour à toutes et tous .
Fredo .
Je m'était emballé .
$garage_du_centre = Array('$voitures_peugeot','$voitures_renault','$voitures_citroen');
{
$voitures_peugeot['204'] = "1 204";
$voitures_peugeot['504'] = "3 504";
$voitures_peugeot['207'] = "2 207";
$voitures_peugeot['Rosalie'] ="Voiture Vendue";

$voitures_renault['R4L'] = "Stock épuisé";
$voitures_renault['R8Gordini'] = "2 R8 Gordini"; // Ma Première voiture 
$voitures_renault['4cv'] = "1 4cv";

$voitures_citroen['2cv'] = "3 2cv";
$voitures_citroen['DS19'] = "1 DS 19"; // Ma voiture préférée 
$voitures_citroen['Acadiane'] = "2 Acadiane";
$voitures_citroen['Ami6'] = "1 Ami6";
}
Est-ce correct ?
En faisant print_r $garage_du_centre je devrais obtenir la totalité des infos .? Cela ne marche pas : pbs de syntaxe ?
Cordialement
Lalala à chaque fois que je pense avoir compris .. lala lalala

Chaque $voitures_.. "fonctionne"
Chaque groupe $voitures_peugeot $voitures_renault $voitures_citroen "fonctionne"
$garage_du_centre a perdu ses voitures ??

Ce message a été modifié par Go'Gaule - 04 mars 2010 - 12:36 .

En jachère ... bientôt le printemps ..! et les semailles !




0 utilisateur(s) en train de lire ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)