Bonjour,
Avant l'insertion de données dans une base Mysql, je vérifie qu'un champ input :
1) ne contient pas une saisie qui correspond à un enregistrement déjà présent dans la base (via une requête SELECT et la fonction mysql_num_rows)
2) n'est pas vide pour éviter l'insertion des données vides dans la base (via la fonction empty)
3) contient une saisie dont le formatage est conforme à celui attendu : en l'occurrence saisie du nom et prénom d'un contributeur sous la forme nom, prénom (délimitateur virgule + espace : utilisation d'explode et de la fonction count)
Si les 3 conditions sont remplies, j'insère dans ma base la donnée saisie dans le champ imput. Le code que j'utilise :
Ce code fonctionne partiellement : j'ai bien l'affichage de l'un des 3 messages d'erreur si la condition correspondante n'est pas remplie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 <form action="" method="POST" onsubmit="valid5();" > <p> <br /> <input type="text" name="text5" id="text5" /> <br /> <?php if(isSet($_POST["ajouter"])) { $text5=trim(mysql_real_escape_string($_POST['text5'])); $text5 = explode(", ", $text5); if(is_array($text5) && isset($text5[1])) {// sinon affiche l'erreur Undefined offset: 1 $sql = mysql_query("SELECT nom_contributeur,prenom_contributeur FROM contributeurs WHERE nom_contributeur ='$text5[0]'and prenom_contributeur='$text5[1]' "); if(mysql_num_rows($sql) >=1) { echo 'le contributeur existe déjà <br/>'; } } elseif (empty ($_POST['text5'])) { echo "Le champ nouveau contributeur est obligatoire <br/>"; } elseif (count($text5)<2) {// le format attendu de la saisie suppose 2 éléments : nom et prénom. Donc si moins de 2 éléments : saisie incorrecte echo"format saisie incorrecte"; } else { // requete pour chercher le prochain identifiant contributeur => utile pour traitement javascript $requete="SELECT MAX(id_contributeur) AS nb5 FROM contributeurs WHERE id_contributeur IN (SELECT id_contributeur FROM contributeurs) ;"; $result=mysql_query($requete,$db); $ligne=mysql_fetch_array($result); $value5 = $ligne['nb5']; $value5 = $value5 + 1; echo '<input type="hidden" name="value5" id="value5" value="'.$value5.'" />'; echo $value5;//debug : ne s'affiche pas $add5 = sprintf('INSERT INTO contributeurs (nom_contributeur,prenom_contributeur) VALUES ("'.ucfirst($text5[0]).'", "'.ucfirst($text5[1]).'")'); // requête ne se s'effectue pas $result = mysql_query($add5, $db) or die(mysql_error()); ?> <script type="text/javascript"> self.close(); </script> <?php } } ?> <input type="submit" name="ajouter" value="Ajouter" /> </p> </form>
Mais si la saisie est correcte (ne correspond pas à un enregistrement existant, non vide et correctement formatée), ma requête ne s'effectue pas ni d'ailleurs l'envoi du champ input type="hidden" "value5".
Voyez-vous comment modifier mon code pour y arriver ? Merci.
Partager