Contrôle sur deux champs

Répondre
jeff
jeff
Déconnecté
Je suis pour le monde du libre
Bonjour,

Comment écrire la syntaxe ou le code pour contrôler si un NOM et le N° de département est déjà dans la table Exemple : Paris -> 75 ?

Je sais faire pour un contrôle, mais pour deux, je ne vois pas…

Si je fais comme ceci, ça ne fonctionne pas ?

  1.  
  2. <?php
  3. function db_connect()  
  4. {  
  5. $result = new mysqli('localhost', 'jackbocar', 'XXXXXXXXXXXXXXXXX', 'ma_Table');  
  6. if (!$result)  
  7. throw new Exception('Connexion impossible au serveur');  
  8. else  
  9. return $result;  
  10. }  
  11.  
  12. function register($nom, $dep)  
  13. {  
  14.  
  15. $conn = db_connect();  
  16. $result = $conn->query("SELECT * FROM ma_table WHERE nom='$nom' AND dep='$dep'");  
  17. if (!$result)  
  18. throw new Exception('Impossible executer la requete');  
  19. if ($result->num_rows>0)  
  20. throw new Exception('Ce nom et ce departement sont deja dans la table.');  
  21.  
  22. //Si tout est bon, enregistrement dans la base  
  23. $conn = db_connect();  
  24. $result = $conn->query("insert into ma_table values ('$nom', '$dep')");  
  25. if (!$result)  
  26. throw new Exception('Il y a un problème, il faut recommencer.');  
  27. return true;  
  28. }  
  29.  
  30. ?>
  31.  



Merci de votre aide.

Jeff
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Et cela ne fonctionne pas ? Ton test est fait la.

PS : Tu n'appliques nos conseils d'un précédent message avec les mysql_escape_string.
jeff
jeff
Déconnecté
Je suis pour le monde du libre
J'ai refait mon code, je n'arrive pas à gérer les exceptions. Je me suis servi d'un code plus classique. Ca fonctionne très bien, il trouve le couple NOM et DEPARTEMENT, et il arrête le script si un champ est vide.

La seule chose que je n'arrive pas à faire, c'est le retour avec un
header('location: index.php');

voir le Wall : http://www.lephpfacile.com/wall/wall-1337.php

Merci de votre aide

Jeff
jeff
jeff
Déconnecté
Je suis pour le monde du libre
Bonjour,

Quelqu'un peut me dire comment je peux placer un header('location: index.php'); sur le code :

  1.  
  2. <?php
  3. if (isset($_POST['go']) && $_POST['go']=='add_commanderies') {  
  4. if ((isset($_POST['url']) && !empty($_POST['url'])) && (isset($_POST['nom']) && !empty($_POST['nom'])) && (isset($_POST['dep']) && !empty($_POST['dep'])) && (isset($_POST['news']) && !empty($_POST['news']))) {  
  5.  
  6. function db_connect()  
  7. {  
  8. $result = new mysqli('localhost', 'jackbocar', 'XXXXXXXXX', 'ma_base');  
  9. if (!$result)  
  10. throw new Exception('Connexion impossible au serveur');  
  11. else  
  12. return $result;  
  13. }  
  14.  
  15. $conn = db_connect();  
  16. $result = $conn->query('SELECT count(*) FROM commanderies WHERE nom="'.mysql_escape_string($_POST['nom']).'" AND dep="'.mysql_escape_string($_POST['dep']).'"');  
  17. $data = $result->fetch_array(MYSQLI_NUM);  
  18.  
  19. if ($data[0] == 0) {  
  20. $result = $conn->query('INSERT INTO commanderies VALUES("", "'.mysql_escape_string($_POST['url']).'", "'.mysql_escape_string($_POST['nom']).'", "'.mysql_escape_string($_POST['dep']).'", "'.mysql_escape_string($_POST['news']).'")');  
  21. }  
  22. else {  
  23. $erreur = 'Le couple <span class="R">NOM et DEPARTEMENT</span> existe deja dans la table.<br /><br />';  
  24. }  
  25. }  
  26.  
  27. else {  
  28. $erreur = 'Au moins un des champs est vide.<br /><br />';  
  29. }  
  30. }  
  31.  
  32. ?>
  33.  


Meci de votre aide

Jeff
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Ben tu le places la où tu en as besoin.

Tu veux la faire où ta redirection ?
jeff
jeff
Déconnecté
Je suis pour le monde du libre
Bonjour,

J'ai essayé de placer ce header, rien a faire, ou il me renvoie directement sur ma page index là où sont visible les nouveaux enregistrement ou, j'ai une erreur et rien ne s'affiche.

Cette page est : ajout.php, et, je veux une fois que le nouvel enregistrement est inscrit dans la table, être dirigé sur la page index.php, et voir la nouvelle entrée affichée.

Jeff
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Si tu tapes header('location: index.php'); c'est normal que tu dois redirigé sur la home.

Ensuite, il faut que tu mettes le header juste après ton INSERT SQL et pas au tout début du script.
De plus, quelle est l'erreur que tu as quand tu fais le header ?
jeff
jeff
Déconnecté
Je suis pour le monde du libre
Bonjour,

Ca fonctionne, je l'ai mis juste après INSERT, et je suis bien redirigé.

Je le plaçais tout en bas, après les message d'erreurs.

Jeff
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Breizh Blog