Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/09/2008, à 15:52

thurston

SQL Pour les nuls: c'est quoi et comment ca marche

Bonjour,

Je cherche à comprendre comment marche SQL. En fait, je voudrais gérer les locations d'un appartement en rentrant dans une base de donnée SQL de 1and1 les résultats d'un formulaire qui renseigne les champs suivant:
1 location =
   Nom du locataire
   Nombre de personne
   Date IN
   Date OUT
  Prix location

J'ai récupéré un script php qui me permet de rentrer ces champs (y a même une partie qui permet de rentrer les données dans une base SQL), mais après j'y comprends plus rien.
Par exemple: Comment peut on regarder à l'intérieur d'une base de données SQL?
Comment récupérer les résultats pour que ce soit lisible? Un script PHP?
Comment bien déclarer la base et ses champs initiaux. Je pense que mon projet est super simple, et j'aurai en même temps voulu qu'il me serve d'exemple pour de futurs projets.

Tous les conseils, liens, bouquins sont bienvenus
D'avance merci
Thurston

Hors ligne

#2 Le 13/09/2008, à 15:58

best_friend_fr

Re : SQL Pour les nuls: c'est quoi et comment ca marche

Salut,

MySQL te donne en fait 2 choses
Un serveur de base de donnees qui te permet de faire tes operations
un client en ligne de commande pas toujours tres pratique pour les tests.

Pour entrer et sortir des donnees, il te faut un logiciel. Tu peux regarder du cote de phpmyadmin par exemple, mais il y en a pleins.


sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr

Hors ligne

#3 Le 13/09/2008, à 16:21

thurston

Re : SQL Pour les nuls: c'est quoi et comment ca marche

Ok Salut best_friend_fr,
1and1 utilise effectivement phpmyadmin. Ce que je pige pas:
phpmyadmin ne fait qu'executer des commandes en language SQL? Oui? je veux dire, si je veux rentrer quelquechose dans ma base de données, il faux que j'utilise le code SQL et phpmyadmin dirige ma requete sur ma base de données (1and1) et range les données en question "comme il faut".
Mais ma base de données, pour le moment n'existe pas, je veux dire les champs ne sont pas déterminés. Dois je définir ces champs et créer la base de données (sa structure) également avec phpmyadmin?
Ce que je comprends alors serait:
1. Creation de la base de donnée
    utiliser phpmyadmin et envoyer les bonnes requete du style

-- ============================================================
--   Nom de la base   :  TotoDatabase 
--   Nom de SGBD      :  ANSI Niveau 2 
--   Date de création :  2008-09-13 
--   Copyright       :        Toto
-- ============================================================

-- ============================================================
--   Table : T_CONTRAT
-- ============================================================
create table T_CONTRAT
(
   NOM            CHAR()                       ,
   NOMBRE      NUMERIC(1)            not null        default 1,
   DATE_IN      ...
            ,
    primary key (CHB_ID)
);

2. Entrée des données
    Soit avec phpmyadmin, soit avec un script PHP, qui rentre les données en respectant les champs...

3. visualisation des données
    Soit avec phpmyadmin, soit encore avec un script PHP, mais qui sonde la base de données et remet en forme.

Est ce que je suis sur la bonne voie????
A+
Merci
Thurston

Dernière modification par thurston (Le 13/09/2008, à 16:30)

Hors ligne

#4 Le 13/09/2008, à 16:42

best_friend_fr

Re : SQL Pour les nuls: c'est quoi et comment ca marche

Salut,

phpmyadmin EST un script php qui te permet de commander mysql (creation de tables, entree des donnees, consultation...)

Tu peux donc tout faire a partir de la bas, soit par les commandes mysql si tu les connais, soit par des clics sur les bonnes cases.
Tu as d'autres scripts qui te permettent de commander mysql de facon plus personnalisee. Ils passent ou non par phpmyadmin.

Les etapes sont les bonnes.
Sache cependant que phpmyadmin est fait pour administrer la base. Donc bien que toutes les operations dont tu as besoin sont prises en charges, tu dvrais plutot utiliser un script plus convivial pour un usage quotidien.


sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr

Hors ligne

#5 Le 13/09/2008, à 16:49

Link31

Re : SQL Pour les nuls: c'est quoi et comment ca marche

thurston a écrit :

Par exemple: Comment peut on regarder à l'intérieur d'une base de données SQL?
Comment récupérer les résultats pour que ce soit lisible? Un script PHP?

Quelques exemples :

USE le_nom_de_la_base_de_données;
SHOW TABLES;
SELECT * FROM le_nom_d'une_table;
SELECT une_colonne, une_autre_colonne FROM le_nom_d'une_table;
SELECT une_colonne FROM le_nom_d'une_table WHERE une_colonne = 42;

PHP te renvoie un tableau PHP quand tu fais des requêtes SQL, mais tu peux tout aussi bien exécuter ces requêtes en ligne de commande (commande mysql -h nom_du_serveur -u nom_d'utilisateur -p) et obtenir les données dans ton terminal.

Hors ligne

#6 Le 13/09/2008, à 18:16

thurston

Re : SQL Pour les nuls: c'est quoi et comment ca marche

Merci à tous,

Je commence à piger...enfin je crois.
J'ai défini mes champs
NOM
NOMBRE
DATE_IN
DATE_OUT
PRIX_SEJOUR
COMMENTS

Il faut apparemment définir une clef. Cela sert au tri???
Index: "créer une clef sur 1 colonne"...Qu'est ce que je dois choisir??
Pas clair pour moi
Merci d'avance.
A+
Il va falloir que je me trouve un bouquin ou un pdf clair...
Thurston

Hors ligne

#7 Le 13/09/2008, à 19:17

best_friend_fr

Re : SQL Pour les nuls: c'est quoi et comment ca marche

Salut,

Une cle est un ensemble de colonne tel que si tu prends deux lignes differentes, les cles sont differentes.


sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr

Hors ligne

#8 Le 13/09/2008, à 19:34

thurston

Re : SQL Pour les nuls: c'est quoi et comment ca marche

OK,

Ca rentre doucement. Ce que je comprends, c'est finalement que SQL est une base de donnée, un serveur et un protocole ou language. Le gros intéret est de pouvoir rentrer et consulter une base de données en web, à travers du php, en interrogeant un serveur distant.

Une question: j'essaie de me connecter en ligne de commande et ca ne marche pas. 1and1 m'a donnée
serveur: db707.1and1.fr
Nom de la base de données db123456789
Nom d'utilisateur db987654321
et bien sur un mot de passe secret

Quand j'utilise la commande suivante

mysql -h nom_du_serveur -u nom_d'utilisateur -p

donc

mysql -h db707.1and1.fr -u db987654321 -p

j'obtiens
Unknown MySQL server host 'http:://db707.1and1.fr'

Maque t il des http ou autres?
Merci
a+
Thurston

Hors ligne

#9 Le 13/09/2008, à 21:06

thurston

Re : SQL Pour les nuls: c'est quoi et comment ca marche

il semble que 1and1 n'autorise pas à ce qu'un pc extérieur se connecte à leur database.
Ainsi, seul un script PHP sur leur espace disque peut se connecter à la database SQL.
Des raisons de sécurité semble t il
A+
Thurston

Je poste ici une partie de scripts que j'ai testés (donc sur un script hébergé par 1and1):

Creating a table

       <?php
          /* Start of PHP3 Script */ 
          /* Data of SQL-server */ 
          $server= "db1.perfora.net";     /* Address of 1&1 database server */ 
          $user= "xxxxxx";                   /* Database username */ 
          $password= "yyyyyyy";              /* Database Password */ 
          $database= "dbxxxxxx";             /* name of database */ 
          $table= "puretest";                /* Name of table    */ 

          /* Accessing the server and creating the table */ 
          MYSQL_CONNECT($server, $user, $password) or die ( "<H3>Server unreachable</H3>");
          MYSQL_SELECT_DB($database) or die ( "<H3>database not existent</H3>");
          $result=MYSQL_QUERY( "CREATE TABLE puretest(name varchar(25),email varchar(25))");
          /* Terminate SQL connection*/ 
          MYSQL_CLOSE();
       ?>


Entering data into a table

      <?php
          /* Start of PHP3 Script */ 
          /* Data of SQL-server */ 
          $server= "db1.perfora.net";     /* Address of 1&1 database server */ 
          $user= "xxxxxx";                   /* Database user name */ 
          $password= "yyyyyyy";              /* Database Password */ 
          $database= "dbxxxxxx";             /* name of database */ 
          $table= "puretest";                /* Name of table, you can select that */ 

          /* Accessing SQL-server */ 
          MYSQL_CONNECT($server, $user, $password) or die ( "<H3>Server unreachable</H3>");
          MYSQL_SELECT_DB($database) or die ( "<H3>Database non existent</H3>");

          /* Entering the values */ 
          MYSQL_QUERY( "INSERT INTO $table VALUES('OneandOne','info@oneandone.co.uk')");
          MYSQL_QUERY( "INSERT INTO $table VALUES('1and1','info@1and1.com')");
          
          /* Display number of entries */ 
          $number=MYSQL_NUMROWS(MYSQL_QUERY( "SELECT * FROM $table"));
          if ($number==0):
              echo  "database empty";
          elseif ($number > 0):
              echo  "$number rows in database";
          endif;
          /* Close SQL-Connection */ 
          MYSQL_CLOSE();
      ?>


Display data from a table

     <?php
          /* Start of PHP3 Script */ 
          /* Data of SQL-server */ 
          $server= "db1.perfora.net";     /* Address of 1&1 database server */ 
          $user= "xxxxxx";                   /* Database user name */ 
          $password= "yyyyyyy";              /* Database Password */ 
          $database= "dbxxxxxx";             /* name of database */ 
          $table= "puretest";                /* Name of table, you can select that */ 

          /* Accessing SQL-Server and querying table */ 
          MYSQL_CONNECT($server, $user, $password) or die ( "<H3>Server unreachable</H3>");
          MYSQL_SELECT_DB($database) or die ( "<H3>Database non existent</H3>");
          $result=MYSQL_QUERY( "SELECT * FROM $table order by name");

          /* Output data into a HTMl table */ 
          echo  "<table  border=\"1\" align=center width=50%"; 
          echo  "<tr>"; 
          echo  "<div color=\"#ffff00\">";
          while ($field=mysql_fetch_field($result))  { 
                 echo  "<th>$field->name</A></th>";
          }
          echo  "</font></tr>"; 
          while($row  =  mysql_fetch_row($result))  { 
                  echo    "<tr>"; 
                  for($i=0;  $i < mysql_num_fields($result);  $i++)  { 
                       echo    "<td align=center>$row[$i]</td>"; 
                  }            
                  echo    "</tr>\n";
          }
          echo  "</table><BR><BR>";   

          /* Close SQL-connection */ 
          MYSQL_CLOSE();
     ?>


Deleting a table

     <?php
          /* Start of PHP3 Script */ 
          /* Data of SQL-server */ 
          $server= "db1.perfora.net";     /* Address of 1&1 database server */ 
          $user= "xxxxxx";                   /* Database user name */ 
          $password= "yyyyyyy";              /* Database Password */ 
          $database= "dbxxxxxx";             /* name of database */ 
          $table= "puretest";                /* Name of table, you can select that */ 

          /* Accessing SQL-Server and deleting table */ 
          MYSQL_CONNECT($server, $user, $password) or die ( "<H3>Server unreachable</H3>");
          MYSQL_SELECT_DB($database) or die ( "<H3>Database non existent</H3>");
          $result=MYSQL_QUERY( "DROP TABLE $table");
          echo  "<H1>Table was deleted successfully</H1>";

          /* Close SQL-Connection */ 
          MYSQL_CLOSE();
     ?>

Hors ligne

#10 Le 14/09/2008, à 00:24

ppmt

Re : SQL Pour les nuls: c'est quoi et comment ca marche

si tu lis l'anglais (encore que je suis sur qu'il doit exister en Francais) tu peux te tourner vers un bouquin O'reilly:

Learning PHP & MySQL (Step-by-Step Guide to Creating Database-Driven Web Sites)

c'est cense explique comment creer un site web avec une base de donnees controler par PHP


le dock dont vous avez toujours rêvé  Cairo-Dock
irc://irc.freenode.net/#Cairo-Dock-fr

Hors ligne

#11 Le 14/09/2008, à 09:22

thurston

Re : SQL Pour les nuls: c'est quoi et comment ca marche

Ok, je lis l'anglais. Merci pour l'info.
Toujours pas vraiment pigé l'affaire de clé...mais ca viendra.
J'ai réussi à faire ma base de donnée (rentrer les infos en php) et à l'afficher (php toujours).
C'est assez cool, et ca ouvre un nombre de porte infini!!!
Y a t il des exemples de base de données bien concues qui permettent de comprendre ce qu'il faut faire et ne pas faire.
A+
Merci
Thurston

pour la clé, voir ici
http://www.commentcamarche.net/sql/sqlcontr.php3

Et pour une bonne présentation de PHP et SQL
http://www.phpdebutant.org/article118.php

Dernière modification par thurston (Le 14/09/2008, à 11:17)

Hors ligne

#12 Le 14/09/2008, à 13:20

soupaloignon

Re : SQL Pour les nuls: c'est quoi et comment ca marche

La clé c'est ce qui identifie de manière unique un enregistrement. Cela pourrait correspondre à une ligne dans un tableur, composée de une ou plusieurs cellules. Chaque ligne est un enregistrement, identifié par sa clé.
Les cles permettent aussi de faire dialoguer les tables entres elles, dans le cas de bases relationnelles.


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#13 Le 14/09/2008, à 13:28

poupoul2

Re : SQL Pour les nuls: c'est quoi et comment ca marche

thurston a écrit :

Je commence à piger...enfin je crois.
J'ai défini mes champs
NOM
NOMBRE
DATE_IN
DATE_OUT
PRIX_SEJOUR
COMMENTS

Pour compléter les réponses précédentes, si dans ces champs là aucun n'est unique, tu pourrais par exemple ajouter un champ IDENTIFIANT, renseigné automatiquement par ton application, de manière séquentielle et t'en servir de clé. Chaque fois qu'un nouvel enregistrement est inséré dans ta table, IDENTIFIANT est créé sans qu'il soit possible de sa valeur corresponde à une valeur existante.

#14 Le 14/09/2008, à 13:36

soupaloignon

Re : SQL Pour les nuls: c'est quoi et comment ca marche

poupoul2 a écrit :

Pour compléter les réponses précédentes, si dans ces champs là aucun n'est unique, tu pourrais par exemple ajouter un champ IDENTIFIANT, renseigné automatiquement par ton application, de manière séquentielle et t'en servir de clé. Chaque fois qu'un nouvel enregistrement est inséré dans ta table, IDENTIFIANT est créé sans qu'il soit possible de sa valeur corresponde à une valeur existante.

Sauf que dans les champs cités j'ai des doutes sur le fait qu'ils puisent être uniques


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#15 Le 14/09/2008, à 13:40

Link31

Re : SQL Pour les nuls: c'est quoi et comment ca marche

poupoul2 a écrit :

Pour compléter les réponses précédentes, si dans ces champs là aucun n'est unique, tu pourrais par exemple ajouter un champ IDENTIFIANT, renseigné automatiquement par ton application

Et pourquoi pas un champ id renseigné automatiquement par la base de données elle-même, avec AUTO_INCREMENT :

CREATE TABLE ... (
	id MEDIUMINT NOT NULL AUTO_INCREMENT,
	...,
	PRIMARY KEY (id)
);

Hors ligne

#16 Le 14/09/2008, à 13:46

poupoul2

Re : SQL Pour les nuls: c'est quoi et comment ca marche

C'était exactement ce à quoi je pensais, sans avoir été capable de l'expliquer clairement apparemment wink

#17 Le 14/09/2008, à 13:55

soupaloignon

Re : SQL Pour les nuls: c'est quoi et comment ca marche

c'ets plus rationnel, et aucun risque de doublon comme ça


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#18 Le 14/09/2008, à 16:19

thurston

Re : SQL Pour les nuls: c'est quoi et comment ca marche

Oui absolument, merci à tous. La clé est ok maintenant.
Pour mon exercice, je vais avoir des clients (locataires) et des périodes dans lesquelles vont aller ces locataires. En supposant que certains reviennent d'année en année, il ne serait pas intéressant de créer:
1. une base de donnée client
2. une base de donnée des périodes de location.

Je n'ai jamais fait de base de données, mais j'ai l'impression qu'il faut dissocier au max les "records" si l'on veut utiliser la puissance des bases de données...
Qu'en pensez vous?

Apparemment il suffit de créer un champs dans la base de client "dernière location" par exemple qui va pointer sur l'id de la base de périodes.
Si l'on veut conserver les anciennes locations il suffit de créer plusieurs champs en regard au nombre de locations que l'on veut garder en mémoire.


Dans l'exemple initial que j'ai décrit, si je veux supprimer une location ancienne, je supprime du même coup la personne (champs déjà renseigné, et que j'aurai à retaper par la suite).

Merci
a+
Thurston

Dernière modification par thurston (Le 14/09/2008, à 16:48)

Hors ligne

#19 Le 14/09/2008, à 17:34

soupaloignon

Re : SQL Pour les nuls: c'est quoi et comment ca marche

thurston a écrit :

Je n'ai jamais fait de base de données, mais j'ai l'impression qu'il faut dissocier au max les "records" si l'on veut utiliser la puissance des bases de données...
Qu'en pensez vous?

c'est utile de dissocier les tables par type d'information effectivement, cela évite les redondances et les risque sde mauvaises saisies.
Par exemple pour le type de personne (Mme, Mr, Mlle) plutôt que de rentrer le type à chaque fois pour chaque enregistrement de client, c'est judicieux de faire une table avec ces entrées, et d'autres si besoin, et de faire pointer chaque enregistrement de client vers l'entrée correspondante, grace à l'id justement.


thurston a écrit :

Dans l'exemple initial que j'ai décrit, si je veux supprimer une location ancienne, je supprime du même coup la personne (champs déjà renseigné, et que j'aurai à retaper par la suite).

Ce que tu peux faire c'est prévoir une case à cocher actif/inactif par client. De cette manière tu ne saisis le client qu'une fois. Et tu le met en inactif lorsque la loc se termine. S'il revient, il est déjà saisit, tu n'as qu'à le remettre en actif pour une nouvelle location. Cela implique une table client, une table location (et une table type éventuellement, ville aussi pourquoi pas, code postal si on pousse les choses).

Pour l'organisation des tables, rien de vaut la feuille blanche et le crayon. Tu poses tes tables, les relations entre elles, et lorsque cela te parait correct tu peux commencer à les créer en réel


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#20 Le 14/09/2008, à 20:08

thurston

Re : SQL Pour les nuls: c'est quoi et comment ca marche

Bon ca prend forme, une question:
j'ai mis un mot de passe sur la page, pour que n'importe qui ne rentre pas n'importe quoi dans ma base de données.
Mon problème devient la lisibilité du code. En effet, ca fait des boucles if else un peu partout, avec emmelé du code php et html...J'ai carrément peur d'y revenir demain, et de plus rien comprendre à ce que j'ai voulu faire.
Comment faites vous?
QI de 150 ou méthodes en découpant dans différents fichiers php qui sont appelés par un fichier central html?
A+
THurston

Hors ligne

#21 Le 14/09/2008, à 22:26

poupoul2

Re : SQL Pour les nuls: c'est quoi et comment ca marche

La première chose à faire est de commenter ton code le plus possible. Ca te permet de retrouver ce que fait chaque portion de code. Ensuite, je ne suis pas un expert, mais il me semble que séparer les pages php et les pages html n'est pas une mauvaise. Tu dissocies ainsi ce qui est affiché par les pages html et le moteur de ton application proprement (dans les pages php)

#22 Le 14/09/2008, à 23:43

HP

Re : SQL Pour les nuls: c'est quoi et comment ca marche

thurston a écrit :

Mon problème devient la lisibilité du code. En effet, ca fait des boucles if else un peu partout, avec emmelé du code php et html...J'ai carrément peur d'y revenir demain, et de plus rien comprendre à ce que j'ai voulu faire.

Soit moteur de template, sinon, petites fonctions très spécialisées (au sein de classes), dont des fonctions (presque) uniquement consacrées à l'affichage ; donc peu de php mélangé au html au sein de ces fonctions…

Dernière modification par HP (Le 14/09/2008, à 23:53)


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#23 Le 14/09/2008, à 23:59

Gatsu

Re : SQL Pour les nuls: c'est quoi et comment ca marche

@ thurston

A tout hasard, t'as pensé à jeter un coup d'oeil par ici :
-> http://www.siteduzero.com/tutoriel-3-14668-un-site-dynamique-avec-php.html
-> http://mysql.developpez.com/cours/
-> http://php.developpez.com/cours/

Hors ligne

#24 Le 15/09/2008, à 01:01

nicolas66

Re : SQL Pour les nuls: c'est quoi et comment ca marche

Pour les moteurs de templates, ya un comparatif sur developpez.com.


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#25 Le 15/09/2008, à 18:46

thurston

Re : SQL Pour les nuls: c'est quoi et comment ca marche

A BebeFoetus
Superbe les présentations, exactement ce qu'il m'aurait fallu au tout départ!!!
Merci à tous, je pense également que la dissociation page php et html est largement souhaitable.
A+
Thurston

Hors ligne