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 :

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>
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.
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.