Le magasin YBET informatique

Rue Albert 1er, 7

6810 Pin - Chiny

Route Arlon - Florenville

(/fax: 061/32.00.15

Les formations sur Internet

YBET Forum webmaster Créer son propre site Internet? Contact

18. Modification d'une table MySql par PHP

1 Introduction - 2. La commande ALTER - 3. Les champs à remplir

L'affichage de nos différentes catégories du précédent chapitre va maintenant nous permettre de créer le formulaire d'entrée des annonces. La structure de la table a été crée avec les champs suivants. Vous l'avez remarqué, le champ reprenant la catégorie du bien n'est pas repris dans la table, ni le code utilisateur de celui qui a inséré l'annonce, il va nous falloir le rajouter. Ce chapitre va nous permettre d'étudier les modifications sur une table MySql existante.

  type primary-key, Index remarque Instruction SQL
code numérique - integer Primary-key auto incrémentation code int primary key NOT NULL auto_increment
titre VARCHAR(120)   titre de l'annonce limitée à 120 caractères, insensible à la casse titre varchar(120) not null
description BLOB   texte limité à 65535 caractères description blob not null
photo varchar(255)   adresse et nom de la photo, 255 caractères photo varchar(255)
Ville VARCHAR(40) index limité à 40 caractères ville varchar(40), index(ville)
Pays type enum   choix entre Belgique, France, Luxembourg pays enum('Belgique','France','Luxembourg')
prix decimal(10,2)   décimal avec 2 chiffres derrière la virgule prix decimal(8,2) not null
dateinsertion date   date courte dateinsertion date
telephone varchar(15)     telephone varchar(15)
mail varchar(30)     mail varchar(30)

2. La commande Alter

La commande ALTER TABLE permet d'insérer, de modifier ou de supprimer un champ dans une table existante. Nous ne verrons pas toutes les commandes dans ce cours, mais voici l'ensemble des syntaxes.

ALTER [IGNORE] TABLE Nom_table alter_spec [, alter_spec ...]

où: Alter_specification=
        ADD [COLUMN] create_definition [FIRST | AFTER column_name ]: ajouter une colonne après (AFTER) une autre colonne
  ou    ADD INDEX [Nom_index] (index_nom_col,...): ajout d'un index à la colonne Index_nom_col.
  ou    ADD PRIMARY KEY (index_nom_col,...): ajoute une clé primaire à la colonne index_nom_col
  ou    ADD UNIQUE [Nom_index] (index_Nom_col,...): index unique pour le champ Nom_index
  ou    ALTER [COLUMN] Nom_col {SET DEFAULT literal | DROP DEFAULT}
  ou    CHANGE [COLUMN] old_Nom_col create_definition
  ou    MODIFY [COLUMN] create_definition
  ou    DROP [COLUMN] Nom_col: supprime la colonne Nom_col
  ou    DROP PRIMARY KEY: supprime la clé primaire
  ou    DROP INDEX nom_cle: supprime l'index nom_cle
  ou    RENAME [AS] new_Nom_table: renome la table

Plusieurs modifications peuvent être faite sur la même table avec la même requête SQL, chaque modification étant séparée par une ,.

IGNORE est une extension MySQL de SQL et contrôle la manière dont Alter Table gère les clés dupliquées: Si l'option est omise, la modification est abordée. Dans le cas où cette option est utilisée, seule la première colonne est conservée, les autres colonnes en conflit sont supprimées.

Le champ à insérer est:

uid-cat smallint(6) numéro de la catégorie
uid-util int(10) numéro utilisateur
tel char(1) téléphone utilisateur affiché (O ou N)

Notre requête MySQL d'insertion de champ devient:

<?php
require('includes/start.php');

Mysql_select_db('ybet');
$requete="alter table contenu add uid_cat smallint(6) NOT NULL, add uid_util int(10) NOT NULL, add tel char(1)";
$erreur=mysql_query($requete);
require('includes/stop.php');
?>

3. Les champs à remplir.

  1. Code sera rempli automatiquement (auto-indent)
  2. Titre est le titre de l'annonce, limité à 120 caractères
  3. Description est limité à 65535 caractères
  4. Photo nécessite l'adresse de la photo, mais également de télécharger la photo directement sur le site
  5. Ville peut être inséré par l'utilisateur ou repris de fiche utilisateur. Dans notre table MEMBER, nous n'avons pas obligé à rentrer une valeur. Nous proposerons donc par défaut celle de l'utilisateur.
  6. Pays est une liste de choix (Belgique, France, Luxembourg). Obligatoire pour le membre, nous reprendrons celle-ci
  7. Prix est la valeur du bien, elle peut-être omise le cas échéant.
  8. dateinsertion est directement reprise par le système
  9. Téléphone, obligatoire dans la fiche du membre est repris dans l'annonce mais peut-être masqué par l'utilisateur (TEL)
  10. TEL permet à l'utilisateur d'afficher ou non son numéro de téléphone
  11. Mail est repris de la fiche du membre mais pourra être supprimé puisqu'il apparaîtra dans la fiche du membre
  12. uid-cat est un choix au moment de la création de l'annonce avec la méthode du chapitre précédant par liste déroulante
  13. uid-util est le numéro de l'utilisateur qui dépose l'annonce.

L'ensemble ne pose pas trop de problèmes, seul le téléchargement de l'image n'as pas encore été étudié. Il sera alors sauvegardé directement sur le serveur. Cette solution, intéressante, nécessite quand même quelques précautions, notamment au niveau de la taille du fichier: pour l'espace disque mais aussi pour la sécurité du système. La commande HTML de téléchargement ne limite pas les fichiers au format images. Un internaute mal-honnête pourrais également insérer un virus ou même un script php. La majeur partie sera les tests de téléchargements (type de fichier, taille, ...). La programmation du téléchargement d'image sera le chapitre suivant.

> 19. Télécharger une image à partir d'un formulaire
<17 . Catégories dans une liste déroulante

Mise en ligne: 24/05/2006