Contrôle sur deux champs
le 12/12/2007 à 11:35
jeff
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 ?
<?php
function db_connect()
{
$result = new mysqli('localhost', 'jackbocar', 'XXXXXXXXXXXXXXXXX', 'ma_Table');
if (!$result)
throw new Exception('Connexion impossible au serveur');
else
return $result;
}
function register($nom, $dep)
{
$conn = db_connect();
$result = $conn->query("SELECT * FROM ma_table WHERE nom='$nom' AND dep='$dep' ");
if (!$result)
throw new Exception('Impossible executer la requete');
if ($result->num_rows>0)
throw new Exception('Ce nom et ce departement sont deja dans la table.');
//Si tout est bon, enregistrement dans la base
$conn = db_connect();
$result = $conn->query("insert into ma_table values ('$nom', '$dep')");
if (!$result)
throw new Exception('Il y a un problème, il faut recommencer.');
return true;
}
?>
Merci de votre aide.
Jeff
Je suis pour le monde du libre
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.
le 12/12/2007 à 18:31
jeff
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
Je suis pour le monde du libre
le 17/12/2007 à 15:53
jeff
Bonjour,
Quelqu'un peut me dire comment je peux placer un header('location: index.php'); sur le code :
<?php
if (isset($_POST['go']) && $_POST['go']=='add_commanderies') {
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']))) {
function db_connect()
{
$result = new mysqli('localhost', 'jackbocar', 'XXXXXXXXX', 'ma_base');
if (!$result)
throw new Exception('Connexion impossible au serveur');
else
return $result;
}
$conn = db_connect();
$result = $conn->query('SELECT count(*) FROM commanderies WHERE nom="'.mysql_escape_string($_POST['nom']).'" AND dep="'.mysql_escape_string($_POST['dep']).'"');
$data = $result->fetch_array(MYSQLI_NUM);
if ($data[0] == 0) {
$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']).'")');
}
else {
$erreur = 'Le couple <span class="R">NOM et DEPARTEMENT</span> existe deja dans la table.<br /><br />';
}
}
else {
$erreur = 'Au moins un des champs est vide.<br /><br />';
}
}
?>
Meci de votre aide
Jeff
Je suis pour le monde du libre
Ben tu le places la où tu en as besoin.
Tu veux la faire où ta redirection ?
le 17/12/2007 à 16:51
jeff
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
Je suis pour le monde du libre
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 ?
le 17/12/2007 à 18:10
jeff
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
Je suis pour le monde du libre
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: