Auteur |
Message |
deco76
Forumeur occasionnel
Messages: 36
|
Posté le:
Dim 20 Juin 2010 - 18:49 |
|
bonjour
je cherche a vérifier les doublons, pour 1 recherche de doublons ca marche, il prend en charge les doublons d'IP Machine mais pour plusieurs, je n'arrive pas a adapter le code... il me prend que les doublons MAC ADRESSE et nom pas Mac Adresse et Ip Machine
Voici la partie en question :
Code: |
else
{
$db = mysql_connect('localhost', 'root', ''); // connexion à la base
mysql_select_db('iut',$db); // sélection de la base
// on regarde si l'IP Machine existe déjà
$sql = "SELECT IPmachine FROM ordi WHERE IPmachine='$IPmachine'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on compte le nombre de résultats
$res = mysql_num_rows($req);
if($res!=0) // l'IP Machine existe déjà, on affiche un message d'erreur
{
header('Location: Ordinateurs2.php');
}
}
{
// on regarde si la Macadresse existe déjà
$sql = "SELECT Macadresse FROM ordi WHERE Macadresse='$Macadresse'";
$req2 = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on compte le nombre de résultats
$res2 = mysql_num_rows($req2);
if($res2!=0) // la Macadressee existe déjà, on affiche un message d'erreur
{
header('Location: Ordinateurs3.php');
}
else // L'IP Machine n'existe pas, ni la Mac Adresse, on insère les informations du formulaire dans la table
{
$sql = "INSERT INTO ordi(Salle, Machine, Macadresse,IPmachine) VALUES('$Salle','$Machine','$Macadresse','$IPmachine')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on affiche le résultat pour le visiteur
header('Location: Ordinateurs.php');
}
mysql_close(); // on ferme la connexion
}
?> |
|
|
|
|
|
N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire. |
obito
Résident du forum
Sexe:
Messages: 307
Localisation: Bordeaux
|
Posté le:
Dim 20 Juin 2010 - 21:28 |
|
salut,
pourquoi tu ne fais pas ça dans une seule requête avec un OR ? Ca semble chiant de devoir gérer la redirection soit pour l'ip soit pour l'adresse mac non ? Et surtout n'hésite pas à faire des echo de requête, une adresse mac à des caractères particulier, test déjà la requête sous phpMyAdmin, ce genre de choses.
EDIT : Pour être plus clair sur le fait de faire une requête :
Code: |
SELECT COUNT(*) as nb FROM ma_table WHERE Champ1 = "test" OR Champ2 = "test2" |
|
_________________ 2011-2012 : M2 MIAGE - Ingénieur développement à France Télécom
2010-2011 : M1 MIAGE
2009-2010 : L3 MIAGE
2007-2009 : BTS informatique option développeur d'applications
2006-2007 : BAC STG option GSI |
|
|
|
deco76
Forumeur occasionnel
Messages: 36
|
Posté le:
Lun 21 Juin 2010 - 00:37 |
|
Oui, je comprend ton raisonnement, mais si je fais ça, la personne ne va pas s avoir si c est l IP machine qui va être en double, ou la mac adresse.
C est pour ça que je voudrais segmenter chaque requette, pour 1 - faire plus pro, et 2 - ne pas devoir faire plein de OR .
De plus j ai déjà du feinté pour afficher les 3 messages avec :
1 page propre : félicitation, infos ajoutés
1 page propre : erreur IP machine en double
1 page propre : erreur mac adresse en double
sans que la personne ne le constate sauf dans l URL
je débute encore en php/html, d' après ce que j ai pu voir c est assez fastidieux pour réussir quelque chose qu'on a en tête. Il ma fallut 1 journée pour faire un jolie input avec du css et la aussi feinté ... |
|
|
|
|
Hanoni
Forumeur fréquent
Sexe:
Messages: 52
|
Posté le:
Lun 21 Juin 2010 - 00:59 |
|
Je sais pas si j'ai bien compris ce que tu demandais mais...
Je n'aurais pas fait comme tu as fait mais bon si je suis ton raisonnement, tu peux executer tes deux requêtes directement et stocker les éventuels résultats de tes counts dans $res1 et $res2, et ensuite un truc dans ce genre là :
Code: |
if($res1!=0&&$res2!=0){
les 2 existent
}else{
if($res1!=0){
ip existe
}else{
if($res2!=0){
mac existe
}else{
aucun des deux n'existe, c'est good
}
}
}
|
|
_________________ 5ème année SUPINFO Orléans 2010-2011
4ème année SUPINFO Orléans 2009-2010
3ème année SUPINFO Orléans 2008-2009
BTS IG Option Développeur d'Applications |
|
|
|
V_pour_V
Forumeur fréquent
Messages: 61
|
Posté le:
Lun 21 Juin 2010 - 11:25 |
|
Salut, juste pour savoir : elle sert à quoi l'accolade ou j'ai commenté?
Code: |
else
{
$db = mysql_connect('localhost', 'root', ''); // connexion à la base
mysql_select_db('iut',$db); // sélection de la base
// on regarde si l'IP Machine existe déjà
$sql = "SELECT IPmachine FROM ordi WHERE IPmachine='$IPmachine'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on compte le nombre de résultats
$res = mysql_num_rows($req);
if($res!=0) // l'IP Machine existe déjà, on affiche un message d'erreur
{
header('Location: Ordinateurs2.php');
}
}
{ // ELLE SERT A QUOI CETTE ACCOLADE??
// on regarde si la Macadresse existe déjà
$sql = "SELECT Macadresse FROM ordi WHERE Macadresse='$Macadresse'";
?> |
|
|
|
|
|
deco76
Forumeur occasionnel
Messages: 36
|
Posté le:
Lun 21 Juin 2010 - 14:15 |
|
normalement c'est une autre requête, mais sur la mac adresse, malheureusement si on la laisse t-elle qu'elle la requette pour l'IP n'est pas pris en compte |
|
|
|
|
V_pour_V
Forumeur fréquent
Messages: 61
|
Posté le:
Lun 21 Juin 2010 - 16:03 |
|
Oui mais ce que je comprend pas c'est pourquoi une accolade ouvrante à ce niveau là? Il n'y a pas de if() devant, pas de boucle, rien... Normalement ca devrait même te générer une parse error ...
Edit : Ah oui sinon pour ton problème ^^
Code: |
else
{
$db = mysql_connect('localhost', 'root', ''); // connexion à la base
mysql_select_db('iut',$db); // sélection de la base
// on regarde si l'IP Machine existe déjà
$sql = "SELECT IPmachine FROM ordi WHERE IPmachine='$IPmachine'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on compte le nombre de résultats
$res = mysql_num_rows($req);
// on regarde si la Macadresse existe déjà
$sql = "SELECT Macadresse FROM ordi WHERE Macadresse='$Macadresse'";
$req2 = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on compte le nombre de résultats
$res2 = mysql_num_rows($req2);
if($res != 0 || $res2 != 0) // Si l'une des deux existe (ou les deux)
{
if($res ! = 0 && $res2 != 0)
{
//la les deux existent, que fais tu dans ce cas?
}
elseif($res != 0)
{
// Doublon sur l'IP
header('Location: Ordinateurs2.php');
}
else
{
// Doublon sur la MAC adress
header('Location: Ordinateurs3.php');
}
}
else // Aucun doublon
{
$sql = "INSERT INTO ordi(Salle, Machine, Macadresse,IPmachine)VALUES('$Salle','$Machine','$Macadresse','$IPmachine')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on affiche le résultat pour le visiteur
header('Location: Ordinateurs.php');
}
mysql_close(); // on ferme la connexion
}
?> |
|
|
|
|
|
deco76
Forumeur occasionnel
Messages: 36
|
Posté le:
Mar 29 Juin 2010 - 10:28 |
|
Merci V_pour_V pour ton aide
Je me suis permis de retirer 2-3 lignes sinon cela crée une erreur
Code: |
Code:
else
{
$db = mysql_connect('localhost', 'root', ''); // connexion à la base
mysql_select_db('iut',$db); // sélection de la base
// on regarde si l'IP Machine existe déjà
$sql = "SELECT IPmachine FROM ordi WHERE IPmachine='$IPmachine'";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on compte le nombre de résultats
$res = mysql_num_rows($req);
// on regarde si la Macadresse existe déjà
$sql = "SELECT Macadresse FROM ordi WHERE Macadresse='$Macadresse'";
$req2 = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on compte le nombre de résultats
$res2 = mysql_num_rows($req2);
if($res != 0 || $res2 != 0) // Si l'une des deux existe (ou les deux)
{
if($res != 0) // ICI =)
{
// Doublon sur l'IP
header('Location: Ordinateurs2.php');
}
else
{
// Doublon sur la MAC adress
header('Location: Ordinateurs3.php');
}
}
else // Aucun doublon
{
$sql = "INSERT INTO ordi(Salle, Machine, Macadresse,IPmachine)VALUES('$Salle','$Machine','$Macadresse','$IPmachine')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on affiche le résultat pour le visiteur
header('Location: Ordinateurs.php');
}
mysql_close(); // on ferme la connexion
}
?> |
|
|
|
|
|
V_pour_V
Forumeur fréquent
Messages: 61
|
Posté le:
Mar 29 Juin 2010 - 11:53 |
|
deco76 a écrit: |
Merci V_pour_V pour ton aide
Je me suis permis de retirer 2-3 lignes sinon cela crée une erreur
|
Ok, pas de soucis. Mais dans ce cas tu ne gères pas le cas où les deux existent déjà ce n'est pas gênant?
Si les deux existent, l'utilisateur tombe sur la page indiquant qu'il y a un doublon sur l'IP, et il n'est pas au courant qu'il y a aussi un doublon sur la MAC. Mais si c'est pas très important, tu peux laisser comme ca |
|
|
|
|
|