Gérer le forum:  Aide  •  Rechercher  •  Liste des Membres  •  Groupes d'utilisateurs   •  S'enregistrer  •  Profil  •  Se connecter pour vérifier ses messages privés  •  Connexion 
 prendre en charge les doublons en php Voir le sujet suivant
Voir le sujet précédent
Poster un nouveau sujetRépondre au sujet
Auteur Message
deco76
Forumeur occasionnel
Forumeur occasionnel




Messages: 36

MessagePosté le: Dim 20 Juin 2010 - 18:49 Répondre en citantRevenir en haut

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 Evil or Very Mad

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
    }    
?>
Voir le profil de l'utilisateurEnvoyer un message privé

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
Résident du forum


Post-BTS
Sexe: Sexe:Masculin
Messages: 307
Localisation: Bordeaux

MessagePosté le: Dim 20 Juin 2010 - 21:28 Répondre en citantRevenir en haut

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
Voir le profil de l'utilisateurEnvoyer un message privé
deco76
Forumeur occasionnel
Forumeur occasionnel




Messages: 36

MessagePosté le: Lun 21 Juin 2010 - 00:37 Répondre en citantRevenir en haut

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é ...
Voir le profil de l'utilisateurEnvoyer un message privé
Hanoni
Forumeur fréquent
Forumeur fréquent


Post-BTS
Sexe: Sexe:Masculin
Messages: 52

MessagePosté le: Lun 21 Juin 2010 - 00:59 Répondre en citantRevenir en haut

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
Voir le profil de l'utilisateurEnvoyer un message privé
V_pour_V
Forumeur fréquent
Forumeur fréquent




Messages: 61

MessagePosté le: Lun 21 Juin 2010 - 11:25 Répondre en citantRevenir en haut

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'";

?>
Voir le profil de l'utilisateurEnvoyer un message privé
deco76
Forumeur occasionnel
Forumeur occasionnel




Messages: 36

MessagePosté le: Lun 21 Juin 2010 - 14:15 Répondre en citantRevenir en haut

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 Evil or Very Mad
Voir le profil de l'utilisateurEnvoyer un message privé
V_pour_V
Forumeur fréquent
Forumeur fréquent




Messages: 61

MessagePosté le: Lun 21 Juin 2010 - 16:03 Répondre en citantRevenir en haut

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      
       
    }    
?>
Voir le profil de l'utilisateurEnvoyer un message privé
deco76
Forumeur occasionnel
Forumeur occasionnel




Messages: 36

MessagePosté le: Mar 29 Juin 2010 - 10:28 Répondre en citantRevenir en haut

Merci V_pour_V pour ton aide Wink

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     
       
    }   
?>
Voir le profil de l'utilisateurEnvoyer un message privé
V_pour_V
Forumeur fréquent
Forumeur fréquent




Messages: 61

MessagePosté le: Mar 29 Juin 2010 - 11:53 Répondre en citantRevenir en haut

deco76 a écrit:
Merci V_pour_V pour ton aide Wink

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 Wink
Voir le profil de l'utilisateurEnvoyer un message privé
Montrer les messages depuis:      
Poster un nouveau sujetRépondre au sujet
 Sauter vers:   



Voir le sujet suivant
Voir le sujet précédent
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum