Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/07/2006, 23h49   #1
Membre du Club
 
Inscription : juin 2006
Messages : 215
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 215
Points : 50
Points : 50
Par défaut Problème insertion form & base

Bonjour,

J'ai créer un formulaire avec 6 lignes et 7 champs, les champs sont identiques dans les 6 lignes.
Mon problème est que les 6 lignes ne doivent pas être obligatoirement remplie (donc peut-être 5 ou 4 ou 6) .
Les données du formuliare s'incrive correctement dans une base, mais à chaque enregistrement les 6 lignes s'ingrive dans la base et cela même si elles sont vide alors ma question est: comment faire pour que ne s'insgrive que les lignes qui contiennent des données par les autres ????? (je ne souhaite pas rendre obligatoire de remplir les lignes, mais uniquement faire en sorte que les lignes vide ne s'insgrive pas dans ma base)

Voici mon code de validation :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
<?PHP
 
include "../connect/fc-phpconnect.php";
 
// première ligne du form//
 
$sql = "INSERT INTO prestation_juillet_2006 (ref, nom, adr, rem, tech, date, tel) VALUES ('".mysql_escape_string($ref_1)."','".mysql_escape_string($nom_1)."','".mysql_escape_string($adr_1)."','".mysql_escape_string($rem_1)."','".mysql_escape_string($tech_1)."','".mysql_escape_string($date_1)."','".mysql_escape_string($tel_1)."')";
mysql_query($sql)OR die('Erreur SQL !'.$sql.''.mysql_error()); 
 
//deuxième ligne fu form//
 
$sql = "INSERT INTO prestation_juillet_2006 (ref, nom, adr, rem, tech, date, tel) VALUES ('".mysql_escape_string($ref_2)."','".mysql_escape_string($nom_2)."','".mysql_escape_string($adr_2)."','".mysql_escape_string($rem_2)."','".mysql_escape_string($tech_2)."','".mysql_escape_string($date_2)."','".mysql_escape_string($tel_2)."')";
mysql_query($sql)OR die('Erreur SQL !'.$sql.''.mysql_error());
 
//troisième ligne du form// 
 
$sql = "INSERT INTO prestation_juillet_2006 (ref, nom, adr, rem, tech, date, tel) VALUES ('".mysql_escape_string($ref_3)."','".mysql_escape_string($nom_3)."','".mysql_escape_string($adr_3)."','".mysql_escape_string($rem_3)."','".mysql_escape_string($tech_3)."','".mysql_escape_string($date_3)."','".mysql_escape_string($tel_3)."')";
mysql_query($sql)OR die('Erreur SQL !'.$sql.''.mysql_error()); 
 
//quatrième ligne du form//
 
$sql = "INSERT INTO prestation_juillet_2006 (ref, nom, adr, rem, tech, date, tel) VALUES ('".mysql_escape_string($ref_4)."','".mysql_escape_string($nom_4)."','".mysql_escape_string($adr_4)."','".mysql_escape_string($rem_4)."','".mysql_escape_string($tech_4)."','".mysql_escape_string($date_4)."','".mysql_escape_string($tel_4)."')";
mysql_query($sql)OR die('Erreur SQL !'.$sql.''.mysql_error());
 
//cinquième ligne du form// 
 
$sql = "INSERT INTO prestation_juillet_2006 (ref, nom, adr, rem, tech, date, tel) VALUES ('".mysql_escape_string($ref_5)."','".mysql_escape_string($nom_5)."','".mysql_escape_string($adr_5)."','".mysql_escape_string($rem_5)."','".mysql_escape_string($tech_5)."','".mysql_escape_string($date_5)."','".mysql_escape_string($tel_5)."')";
mysql_query($sql)OR die('Erreur SQL !'.$sql.''.mysql_error()); 
 
//sixième ligne du form//
 
$sql = "INSERT INTO prestation_juillet_2006 (ref, nom, adr, rem, tech, date, tel) VALUES ('".mysql_escape_string($ref_6)."','".mysql_escape_string($nom_6)."','".mysql_escape_string($adr_6)."','".mysql_escape_string($rem_6)."','".mysql_escape_string($tech_6)."','".mysql_escape_string($date_6)."','".mysql_escape_string($tel_6)."')";
mysql_query($sql)OR die('Erreur SQL !'.$sql.''.mysql_error()); 
 
 
echo 'merci beaucoup, vos infos ont été enregistrées.'; 
mysql_close(); 
 
 
 
 
//$sql = "INSERT INTO table VALUES ('".mysql_escape_string($id_client)."',".mysql_escape_string($ref).",'".mysql_escape_string($nom)."','".mysql_escape_string($adr_client)."','".mysql_escape_string($rem_client)."','".mysql_escape_string($tel_client)."')";//
 
 
?> 
<body background="../img/grd-4px.gif">
 
<a href="../deconnexion.php"><font color="#FF0000">Déconnexion</font></a>

Merci d'avance
dunbar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 23h56   #2
Membre éclairé
 
Avatar de DBProg
 
Étudiant
Inscription : juillet 2006
Messages : 242
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2006
Messages : 242
Points : 315
Points : 315
Salut !

Donne toi un élément clé de ta ligne, qui doit toujorus être présent. Ici je prends comme exemple l'élément ref pour expliquer.

Code :
1
2
3
4
5
6
7
8
9
10
IF (isset($ref_2) && strlen($ref_2) > 0)
{
    // Insertion dans la base
}
IF (isset($ref_3) && strlen($ref_3) > 0)
{
    // Insertion dans la base
}
 
// ... etc
Je te propose une solution plus optimisée. Dans ton formulaire, tu utilises les tableaux. De cette manière :

Code :
<input type="text" name="ref[]" value="" />
pour toutes les lignes. Ce qui donne dans le code php :

Code :
1
2
3
4
foreach ($_POST['ref'] AS $ref)
{
   // insertion dans la base sans vérifier
}
Je ne veux pas trop m'avancer, je ne peux pas tester maintenant, mais ça devrait marcher et être plus propre. Seuls les éléments renseignés se trouveront dans la tableau _POST. Il te reste toujours la première solution si ce que je dis ne fonctionne pas !

Mais si cela ne fonctionne pas avec cette syntaxe c'est quelque chose de tout proche (bidouille un peu !), je l'ai déjà fait, et c'est tout de même plus propre qu'une série de if.
DBProg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 00h27   #3
Membre du Club
 
Inscription : juin 2006
Messages : 215
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 215
Points : 50
Points : 50
Citation:
Envoyé par dbprog
Salut !

Donne toi un élément clé de ta ligne, qui doit toujorus être présent. Ici je prends comme exemple l'élément ref pour expliquer.

Code :
1
2
3
4
5
6
7
8
9
10
IF (isset($ref_2) && strlen($ref_2) > 0)
{
    // Insertion dans la base
}
IF (isset($ref_3) && strlen($ref_3) > 0)
{
    // Insertion dans la base
}
 
// ... etc
Je te propose une solution plus optimisée. Dans ton formulaire, tu utilises les tableaux. De cette manière :

Code :
<input type="text" name="ref[]" value="" />
pour toutes les lignes. Ce qui donne dans le code php :

Code :
1
2
3
4
foreach ($_POST['ref'] AS $ref)
{
   // insertion dans la base sans vérifier
}
Je ne veux pas trop m'avancer, je ne peux pas tester maintenant, mais ça devrait marcher et être plus propre. Seuls les éléments renseignés se trouveront dans la tableau _POST. Il te reste toujours la première solution si ce que je dis ne fonctionne pas !

Mais si cela ne fonctionne pas avec cette syntaxe c'est quelque chose de tout proche (bidouille un peu !), je l'ai déjà fait, et c'est tout de même plus propre qu'une série de if.
Ok merci je vais tester ça.

A+
dunbar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 08h52   #4
Membre éclairé
 
Avatar de supernova
 
Développeur informatique
Inscription : juillet 2005
Messages : 443
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juillet 2005
Messages : 443
Points : 359
Points : 359
Salut,

N'oublie pas de vider le contenu de tes variables après l'insertion dans la base. Si tu submit sur la même page cela pourrait être le problème.
supernova est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h38.


 
 
 
 
Partenaires

Hébergement Web