exterminateur
15 aoû 2007 à 08:38
un petit problème mon ami.
Voyon je ne toucherai pas à ce que tu as fais.
Mais on va reprendre un autre exemple simple et tu comprendras une fois de bon.
Alimenter une table
Pour commencer vous allez créer la table infos_tbl dans phpMyAdmin comme suit :
requête SQL:
CREATE TABLE infos_tbl (id INT (11) not null AUTO_INCREMENT, nom VARCHAR (35) not null , prenom VARCHAR (35) not null , email VARCHAR (70) not null , icq INT (11) null , titre VARCHAR (70) not null , url VARCHAR (255) not null , PRIMARY KEY (id), INDEX (id), UNIQUE (id))
Ensuite nous allons utiliser le formulaire ci dessous qui va alimenter la table :
On va crééer un formulaire html que tu vas nommer insertion.html par exemple.
voici le code htm
<html>
<form method="POST" action="add.php">
<center>
<input type="text" name="nom" size="20" value="nom" maxlength="35"> <input type="text" name="prenom" size="20" value="prenom" maxlength="35"><br>
<input type="text" name="email" size="20" value="email" maxlength="70"> <input type="text" name="icq" size="20" value="icq" maxlength="11"><br>
<input type="text" name="titre" size="20" value="titre du site" maxlength="70"> <input type="text" name="url" size="20" value="url du site" maxlength="255"><br>
<input type="submit" value="Envoyer" name="envoyer">
</center>
</form>
</html>
Vous noterez les "maxlength" dans chacun des champs, ceci permet de brider le nombre de caractères maximum que le visiteur peut entrer dans le champ, bien sûr ici le "maxlength" correspond au nombre de caractères spécifié dans la création de la table infos_tbl. Cela a un intérêt, celui d'être sûr que le visiteur ne tapera pas plus de caractères que prévu.
Voyons maintenant le script PHP en lui-même, celui-ci sera contenu dans le fichier add.php auquel fait référence le POST du formulaire :
Code PHP de "add.php"
<?php
// On commence par récupérer les champs
if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";
if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
else $prenom="";
if(isset($_POST['email'])) $email=$_POST['email'];
else $email="";
if(isset($_POST['icq'])) $icq=$_POST['icq'];
else $icq="";
if(isset($_POST['titre'])) $titre=$_POST['titre'];
else $titre="";
if(isset($_POST['url'])) $url=$_POST['url'];
else $url="";
// On vérifie si les champs sont vides
if(empty($nom) OR empty($prenom) OR empty($email) OR empty($titre) OR empty($url))
{
echo '<font color="red">Attention, seul le champs <b>ICQ</b> peut rester vide !</font>';
}
// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
// connexion à la base
$db = mysql_connect('localhost', 'login', 'password') or die('Erreur de connexion '.mysql_error());
// sélection de la base
mysql_select_db('nom_de_la_base',$db) or die('Erreur de selection '.mysql_error());
// on écrit la requête sql
$sql = "INSERT INTO infos_tbl(id, nom, prenom,email, icq, titre, url) VALUES('','$nom','$prenom','$email','$icq','$titre','$url')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';
mysql_close(); // on ferme la connexion
}
?>
Explication :
La requête INSERT INTO permet donc l'insertion des champs du formulaire dans la table. Dans notre cas le premier champ reste vide car il s'agit de l'id (identifiant) qui s'incrémente automatiquement à chaque nouvelle requête INSERT.
Notez que dans le cas ou vous ne voudriez insérer que les champs Nom et Prénom dans la table vous pouvez très bien spécifier dans la requête le nom de chaque champ, comme suit :
$sql = "INSERT INTO infos_tbl(nom,prenom) VALUES('$nom','$prenom')";
Mais attention dans ce cas les autres champs de la table devront avoir l'attribut NULL et non pas NOT NULL, Null indique au champ qu'il pourra rester vide. Et si vous essayez d'insérer un nombre de valeurs différent du nombre des champs, mysql vous fera un joli message d'errreur !
Bon c'est la fin