• Bonjour Visiteur. Bienvenue sur les nouveaux forums de MacGeneration. La peinture est encore fraiche, quelques boulons doivent être resserrés, plus d’informations demain !

Je me met au PHP... aie!

Anabys

Membre d’élite
Club MacG
2 Août 2004
1 099
67
Paris
www.valhalla.fr
MacSQL est un logiciel qui permet de passer des requêtes au serveur SQL depuis une interface graphique. "frontend gui" comme ils disent. A mon avis (pas partagé par tous), cela ne sert que dans 2 cas: 1) pour les newbies qui ne veulent pas avancer et qui ne veulent pas se compliquer la vie, 2) pour ceux qui ont besoin d'effectuer 3872 requêtes par jour sur 372 bases différentes... Dans les autres cas, je pense qu'il est préférable d'apprendre le SQL et d'opérer directement sur le serveur en SSH. A toi de voir ce que tu préfères, l'utilisation d'un tel logiciel t'évite de trop te prendre la tête pour passer tes requêtes au serveur, mais tu seras limité aux fonctions qu'il supporte. Il y a aussi MySQLAdministrator et CocoaMySQL qui sont gratuits et qui font basiquement la même chose. Sinon, directement en ligne, phpMyAdmin ou eskuel.

Le SQL est le langage de communication avec le serveur de la base de données. Pour dire au serveur de te donner le contenu du champ "nom" de la table "famille", par exemple, tu dois lui dire "SELECT nom FROM famille". Pour insérer une valeur dans la table famille, tu devras lui dire "INSERT INTO famille nom='dupont'". Et ainsi de suite. Ce que font les logiciels comme ceux précités n'est rien d'autre que la génération et la transmission au serveur de telles instructions à partir des interactions de l'utilisateur avec l'interface graphique.

Tous les serveurs de données n'utilisent pas le SQL de la même manière (et ils n'utilisent même pas tous le SQL). C'est normal, ça dépend de leur fonctionnement, et de leurs possibilités. Si tu veux faire simple et efficace, MySQL est parfait. Tu auras l'avantage de trouver ce serveur sur 99,99% des hébergeurs qui proposent une base de données. Si tu veux quelque chose de plus puissant, du genre Oracle ou Sybase, ça sera beaucoup plus compliqué -et cher-, et je ne pense pas que ça soit adapté à tes besoins.

On peut communiquer avec certains serveurs de base de données depuis un programme PHP. C'est le cas de MySQL et de PostgreSQL notamment (les serveurs gratuits les plus répandus). Le trio Apache+PHP+MySQL est devenu célèbre, il est très utilisé (exemple: ce forum), et tu trouveras beaucoup d'aide et de support pour apprendre à mettre tout ça en oeuvre.

Attention cependant, chez la plupart des hébergeurs, la base MySQL n'est accessible que depuis leurs serveurs à partir d'un code PHP. Donc tu ne pourras pas utiliser un code PHP sur un serveur X qui fait appel à la base de données de l'hébergeur Y. Le second problème majeur de MySQL est la restauration des bases de données, car les outils en ligne qu'ils proposent (phpMyAdmin, eskuel) ne supportent pas les fichiers de plus de 2 MO. Et les bases de données de plus de 2 MO, c'est courant. Il faut donc scinder les fichiers (ce qui est chiant et ne fonctionne pas à tous les coups: dernièrement, sur 72 fichiers scindés (grrr), 65 sont passés sans problèmes, et pour les autres j'ai du copier/coller le contenu dans le champ de texte de phpMyAdmin au lieu de passer par le dump basique), ou passer par SSH, sachant que l'accès SSH n'est souvent activé que pour les hébergements de type pro (il ne l'est pas en général pour les offres d'entrée de gamme des hébergeurs).

Pour FM je passe la main à quelqu'un d'autre, je n'ai jamais approfondi ce soft (et je l'aime pas des masses d'ailleurs).
 

geoffrey

Membre d’élite
Club MacG
19 Août 2004
3 065
145
43
kwit.fr
Juste une remarque sur le "code SQL" comme Neo dit. Attention, du code SQL pour access ne marchera certainement pas directement sur une base MySQL. Les requetes simples, oui, mais autrement, chaque base qui existe adapte plus ou moins le SQL à sa sauce.

La meilleure source d'info c'est le net, le site MySQL par exemple ;), laisse tomber les bouquins.
 

NeoDym.art

Membre junior
24 Novembre 2005
87
0
Merci bien! Non je n'ai pas d'utilisation particulière. Une simple question de curiosité car j'ai ça qui stock sur mon mac et je ne savais pas vraiment à quoi sa sert.

Je génère des page html et autre code simple style JS et PHP, flash, mais uniquement pour faire des page plus ou moin simple et peut intreactive. En fait c'est que je ne comprend pas très bien commment se passe toute ces relations entre serveurs, bases de donnnées, ect... Pour l'instant je reste uniquement à codés de jolies pages!

Si j'ai bien compris MySQL et SQL sont deux langages différents, l'un plus spécifique et l'autre qui s'utilise pour interroger des bases de données sur un serveur? je ne comprend pas très bien denouveau leur différences...

Puis -je interragir avecc une base sur mon ordi avec du code PHP et MySQL?

Ou par exemple, develloper un programme qui chaque fois qu'il localise une nouvelle annonce sur un site quelquonc qui met à jour souvent des annonces, il les mettent dans une base de donnée localisée?

(ma curiosité et grande!! il faudrait que j'essaye de déchiffrer et scripter quelque lignes pour essayer: mais le temps manque!)

T.
 

Anabys

Membre d’élite
Club MacG
2 Août 2004
1 099
67
Paris
www.valhalla.fr
NeoDym.art a dit:
Si j'ai bien compris MySQL et SQL sont deux langages différents, l'un plus spécifique et l'autre qui s'utilise pour interroger des bases de données sur un serveur? je ne comprend pas très bien denouveau leur différences...
Non t'as rien compris :D
Je vais essayer de la refaire, en plus clair. L'espression "base de données" est polysémique, elle désigne plein de choses différentes: le contenu, le contenant, le serveur, et l'ensemble de ces 3 éléments. On l'emploie un peu à tort et à travers.

Tu pars avec un contenu: par exemple une liste de personnes, avec pour chaque personne le nom, prénom, adresse, numéro de tel. On appelle généralement "base de données" un ensemble de procédés qui vont permettre d'exploiter ces données relatives aux différentes personnes.

Le serveur de données est le moteur de la base de données. C'est lui qui stocke les informations et te permet d'effectuer diverses opérations: ajouter une personne en spécifiant ses nom, prénom, adresse et numéro de tel; trier les personnes, par exemple par ordre alphabétique; afficher les personnes dont le nom commence par A ou B mais pas C et donc le numéro de téléphone débute par 01 mais pas 04; supprimer une personne de la liste, etc. MySQL est un serveur de données.

Pour que le serveur puisse réaliser des opérations sur les données, il faut lui dire de le faire. Il ne va pas s'amuser à trier les personnes par ordre alphabétique sans qu'on lui demande, tu t'en doutes. Pour réaliser ces opérations, il faut donc lui donner des ordres, qu'on appelle des "requêtes" (en anglais, "query" ou "queries" au pluriel). Ces requêtes sont formulées, non pas en anglais ou en français, mais en SQL. SQL est donc le langage que comprend MySQL (et bon nombre d'autres serveurs de données), et qui te permet de formuler les requêtes.

Puis il faut transmettre les requêtes au serveur, car il ne peut pas lire dans les pensées, ni sur la feuille de papier posée sur mon bureau. C'est bien beau de pouvoir écrire une requête en langage SQL disant au serveur de changer le prénom de M. Dupont, en remplaçant Robert par Martin, mais encore faut-il transmettre cette requête au serveur, pour qu'il l'exécute. Pour cela, il y a plusieurs procédures. La procédure "normale" passe par la ligne de commande, comme pour les ordinateurs qui ne connaissaient pas encore d'interface graphique. Tu peux ouvrir le Terminal dans /Applications/Utilitaires/ et, en écrivant ce qu'il faut, transmettre toutes les requêtes que tu veux au serveur. Même principe, si tu veux accéder au serveur MySQL de ton hébergeur, tu utiliseras le protocole SSH (en gros comme telnet, mais sécurité, crypté).

Mais tout ça n'est pas très pratique et ne nous avance pas: on ne va pas s'amuser à écrire les requêtes et à les transmettre au serveur manuellement ! Pour l'utilisateur, toute communication avec le serveur par SSH est de fait exclue (pour de multiples raisons, dont deux qui sont évidentes: 1) il surfe sur internet avec Safari, on va pas lui demander d'ouvrir le terminal pour taper plein de trucs bizarres... 2) il faudrait qu'il connaisse le nom d'utilisateur et mot de passe qui t'a été attribué par l'hébergeur... pas pratique !). C'est là qu'intervient le PHP.

Le rôle du PHP est triple. D'une part il sert à construire les requêtes, d'autre part il sert à transmettre les requêtes au serveur, et pour finir il sert à interpréter et manipuler les réponses du serveur à ces requêtes.

Par exemple, tu crées un formulaire avec le champs nom, prénom, adresse et numéro de téléphone. Ce formulaire va renvoyer vers la page "ajouter.php" quand on appuie sur le bouton "Envoyer". La page "ajouter.php" va récupérer les valeurs transmises par le formulaire, en utilisateur les tableaux globaux PHP (ici ça sera $_POST['nom'], $_POST['prenom'], etc).

Une fois les variables obtenues, on peut construire la requête, il suffit d'assembler les pièces comme dans un jeu de Lego. La requête écrite "à la main" donnerait: "INSERT INTO personnes (nom, prenom) VALUES ('Dupont','Martin')". Mais M. Martin Dupont, tout gentil qu'il est, a rempli le formulaire, et a cliqué sur le bouton "Envoyer", et grâce à cela, on a pu récupérer les données entrées dans les champs dans les tableaux PHP. La requête devient donc: "INSERT INTO personnes (nom, prenom) VALUES ('."$_POST['nom']".','."$_POST['prenom']".')";

Une fois la requête créée, PHP peut l'envoyer au serveur très facilement (en utilisant une certaine fonction).

Si le serveur dit que c'est bon, ton programme PHP le saura et pourra par exemple afficher à l'utilisateur "C'est bon". Si c'est pas bon, ton programme PHP le saura et pourra par exemple afficher à l'utilisateur "C'est pas bon crétin t'as oublié de mettre ton prénom". Il reçoit donc les réponses du serveurs aux requêtes passées, et réagit en fonction de ces réponses.

Voilà, en gros, comment ça fonctionne.

Pour d'autres infos, plus générales encore, tu peux lire cet article.

NeoDym.art a dit:
Puis -je interragir avecc une base sur mon ordi avec du code PHP et MySQL?
Oui, c'est ce qu'explique l'article précité. Il te faut avoir Apache+PHP+MySQL et c'est parti.

NeoDym.art a dit:
Ou par exemple, develloper un programme qui chaque fois qu'il localise une nouvelle annonce sur un site quelquonc qui met à jour souvent des annonces, il les mettent dans une base de donnée localisée?
Ca j'ai pas compris par contre :mouais:

Si tu veux dire que ton programme PHP a des interactions avec d'autres serveurs sur internet, c'est exclu. Les programmes PHP s'exécutent sur le serveur sur lequel ils sont installés, et pas plus (pour des raisons évidentes de sécurité). Rien n'empêche cependant un programme PHP d'envoyer du contenu HTTP à un serveur tiers, mais il faudra que ce serveur soit doté des scritps appropriés pour accueillir ce contenu.

Si tu veux tu demandes si les trucs du genre Google Adsense qui balancent des pubs (aux chiottes la pub !!! en passant :D ) de partout, et aléatoirement, ou de manière ciblée en fonction du contenu du site qui les accueilles, alors oui, c'est une base de données qui gère le système.

De même ce forum est construit sur une base de données. Quand tu écris un message, et que tu cliques sur "Envoyer", le mécanisme est exactement celui décrit ci-dessus (a fortiori avec vBulletin qui fonctionne justement avec PHP et MySQL).
 
  • J’aime
Réactions: geoffrey

NeoDym.art

Membre junior
24 Novembre 2005
87
0
Woaw! merci beaucoups, tout le monde rêve d'une réponse aussi déatiller et clair, vraiment merci! Et maintenant j'ai qu'une envie, c'est de m'y mettre... le temps, toujours le temps! mais je vais le trouver! Surtout avec un article si bien que celui que tu ma proposé.

Je commence à saisir. Pour assécher totatalement ma curisosité: donc SQL et mon gros boouquin ne sont pas très utile dans une base de donnée simple créee avec le serveur données MySQL, puisque PHP intègre déjà certaine commande lui permettant d'interragir avec... ?

Pour expliquer ce que tu n'as pas compris:

Citation:
Posté par NeoDym.art
Ou par exemple, develloper un programme qui chaque fois qu'il localise une nouvelle annonce sur un site quelquonc qui met à jour souvent des annonces, il les mettent dans une base de donnée localisée?



Ca j'ai pas compris par contre
En gros, j'illustrait mes questions par un exemple. J'imaginais un site avec des news remis continuellement à jour. Je peux develloper un programme qui chercherait ces news et les mettrait dans une base de donné. Par exemple du JS et du MySQL. Je demandais donc comment le SQL s'intégrait au programme? (ou du PHP?)

T. bonne soirée
 

Anabys

Membre d’élite
Club MacG
2 Août 2004
1 099
67
Paris
www.valhalla.fr
Si tu veux récupérer les news à partir de sites sur internet, il te faudra probablement recourir au RSS. Là c'est carrément un autre sujet, et c'est autrement plus compliqué. En plus, c'est illégal et intellectuellement contestable de reprendre des articles écrits par d'autres, à moins d'obtenir leur consentement (et ça faut pas rêver, tu l'auras pas).

Par contre tu peux mettre en place un système grâce auquel tu écris tes propres news.

Un formulaire d'ajout de la news en XHTML qui balance l'info en POST vers une page écrite en PHP qui ajoute le contenu des champs dans la base de données. Une page en PHP qui récupère les infos depuis la base de données, et qui les affiche sur une page de ton site. Très facile à faire. L'article mis en lien dans mon précédent message t'aidera à réaliser ceci.
 

NeoDym.art

Membre junior
24 Novembre 2005
87
0
Ok merci beaucoups!

J'ai lu en gros ton article: ça n'a pas l'air très compliqué, mais je crains le petit truc qui ne fonctionne pas. C'est toujours comme ça, il y a toujours un truc qui ne fonctionne pas! on appel ça la pratique...

Je vais donc, de ce pas, pratiquer!

T.
 

AntoineD

Membre d’élite
10 Juillet 2003
2 957
270
37
Parïs / Fr@nce
www.antoinedoyen.net
Salut ! Je suis en train de lire cet intéressant thread – j'en suis à la page 2... :siffle: – et j'ai donc essayé d'installer Mamp, a priori ça doit marcher et pourtant :




Arf ! Mamp ne marche pas chez moi ?...

Bizarre, non ?

A noter que j'avais effectué la mis en marche de php via le terminal comme c'est indiqué au début de ce thread mais bon, rien, nada, ça roulait pas non plus. De quel côté je dois fouiller si je veux régler mon problème ?
 

AntoineD

Membre d’élite
10 Juillet 2003
2 957
270
37
Parïs / Fr@nce
www.antoinedoyen.net
geoffrey a dit:
T'as essayé d'arreter et de redemarrer le serveur MySQL ? Et est ce que tu avais deja installé MySQL tout seul autre part ?
Oui, j'ai essayé.

Et non, je n'ai pas installé mysql. Enfin, je crois. Le seul truc que j'ai fait, c'est la mise en place de php4 via le terminal.
 

AntoineD

Membre d’élite
10 Juillet 2003
2 957
270
37
Parïs / Fr@nce
www.antoinedoyen.net
geoffrey a dit:
MAMP ne s'en charge pas ? (de la mise en place de php4 ??)
Ben ça je peux pas dire. Mais comme tu peux le voir sur l'image que j'ai posté, la petite diode est verte, le serveur my sql marche et ça doit donc "rouler".

Par ailleurs, quand j'édite mes pages sous dreamweaver, il repère les fonctions php (qui chez moi consistent pour le moment à "include()" surtout).

Y'a un lien ?

Moi je sais pas trop quoi faire... :-/

Et ça va me poser pb. quand je vais commencer à créer une base de donnée pour untableau dynamique, non ?
 

geoffrey

Membre d’élite
Club MacG
19 Août 2004
3 065
145
43
kwit.fr
La diode allumé ca veut simplement dire que ton process MySQL tourne, ca veut pas forcement dire que ca fonctionne...

C'est à partir de MAMP que tu n'arrives pas à te connecter à la base MySQL.

Est ce que avec une appli externe (genre YourSQL ou CocoaSQL) tu arrives à te connecter à la base ? (ou alors en ligne de commande avec le terminal ?)
 

AntoineD

Membre d’élite
10 Juillet 2003
2 957
270
37
Parïs / Fr@nce
www.antoinedoyen.net
geoffrey a dit:
La diode allumé ca veut simplement dire que ton process MySQL tourne, ca veut pas forcement dire que ca fonctionne...

C'est à partir de MAMP que tu n'arrives pas à te connecter à la base MySQL.

Est ce que avec une appli externe (genre YourSQL ou CocoaSQL) tu arrives à te connecter à la base ? (ou alors en ligne de commande avec le terminal ?)

euh... pardon ? (suis pas un grand du webdev moi... :siffle: ;) )
 

geoffrey

Membre d’élite
Club MacG
19 Août 2004
3 065
145
43
kwit.fr
Alors il existe des applications graphique qui te permette de gérer des bases de données, deux de ces applis sur mac sont YourSQL et CocoaSQL. Elle te permette d'accéder directement à ta base.

"Tester" la base MySQL démarrée et installée avec MAMP serait deja un bon point de départ pour vérifier ta base.

Sinon il faut utiliser le terminal pour vérifier cela :zen:

Mais ce topic dit deja tout ca (allez, y'a que 7 pages ;) )
 

Anabys

Membre d’élite
Club MacG
2 Août 2004
1 099
67
Paris
www.valhalla.fr
Hop je reviens squatter la place.

Alors voilà:
- le problème: les ports de MAMP ne sont pas ceux par défaut, il faut le préciser dans le code
- la solution: lire la documentation de MAMP, ou faire une recherche sur le forum, ou changer les ports de MAMP et mettre ceux par défaut...

Pas la peine de chercher plus loin en fait.

Allez, je retourne près du sapin :siffle:
 

AntoineD

Membre d’élite
10 Juillet 2003
2 957
270
37
Parïs / Fr@nce
www.antoinedoyen.net
Anabys a dit:
Hop je reviens squatter la place.

Alors voilà:
- le problème: les ports de MAMP ne sont pas ceux par défaut, il faut le préciser dans le code
- la solution: lire la documentation de MAMP, ou faire une recherche sur le forum, ou changer les ports de MAMP et mettre ceux par défaut...

Pas la peine de chercher plus loin en fait.

Allez, je retourne près du sapin :siffle:
Je continue à lire ce thread et justement j'en suis à lire ce tuto. J'vais pas à pas, j'en suis à l'installation de php my admin ;) :up: