Contrôle sur deux champs

Répondre
jeff
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
LA GLOBULE
le 12/12/2007 à 13:55
LA GLOBULE
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
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
jeff
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
LA GLOBULE
le 17/12/2007 à 16:16
LA GLOBULE
Ben tu le places la où tu en as besoin.

Tu veux la faire où ta redirection ?
jeff
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
LA GLOBULE
le 17/12/2007 à 17:50
LA GLOBULE
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
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
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours