IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Comparer des valeurs


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut Comparer des valeurs
    Bonjour, j'aimerais vous exposer mon problème.

    Une table Liste avec dedans comme valeur
    1
    2
    4

    Ensuite, un formulaire contenant 4 cases à cocher ayant pour valeur
    1
    5
    3
    4

    A la validation de ce formulaire, j'aimerais ressortir les différences.
    C'est à dire montrer que la valeurs 3 et 5 ne sont pas dans la base de données et que la valeur 2 n'est pas dans le formulaire

    Je n'ai pas trouvé de méthode pour faire ça, auriez vous une idée ?

    Merci
    Vincent Pieplu
    Développeur Site Internet

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT nombre FROM table WHERE nombre NOT IN (' implode(',' ,$_POST['nombre']) . ')';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    J'ai mis un affichage, et ca merdouille:

    SELECT idListesEntreprises FROM ListesEntreprises WHERE nombre NOT IN (' implode(',' ,Array) . ')
    pour la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $idListe = $_POST['idListe'];
    mysql_query("SELECT idListesEntreprises FROM ListesEntreprises WHERE nombre NOT IN (' implode(',' ,'".$idListe."') . ')");
    Vincent Pieplu
    Développeur Site Internet

  4. #4
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Voici comment je vais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $tab1=array(1,2,4);
    $tab2=array(1,5,3,4);
    echo "TAB1 = 1 ; 2 ; 4<br />";
    echo "TAB2 = 1 ; 5 ; 3 ; 4<br /><br />";
    foreach($tab1 as $valeur)
    {
    	if(in_array($valeur, $tab2, true)) echo $valeur.' trouvé<br />';
    	else echo $valeur.' non trouvé<br />';
    }
    echo "<br /><br />";
    foreach($tab2 as $valeur)
    {
    	if(in_array($valeur, $tab1, true)) echo $valeur.' trouvé<br />';
    	else echo $valeur.' non trouvé<br />';
    }
    Merci
    Vincent Pieplu
    Développeur Site Internet

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT nombre FROM table WHERE nombre NOT IN ('  . implode(',' ,$_POST['nombre']) . ')';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Je suis perdu dans mon développement premier :S je n'arrive pas à obtenir ce que je désire.

    J'ai ce formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form action="creationListe.php?id=49972" method="POST">
    <input type='checkbox' name='idListe[]' value='1' checked />&nbsp;liste1 - 1<br />
    <input type='checkbox' name='idListe[]' value='3' />&nbsp;liste2 - 3<br />		
    <input class='button' type='submit' name="creationListe" value=' ' style='background-image:url(images/general/bttn_valider.gif);width:70px;height:25px;border:0;cursor:pointer;vertical-align:middle;' />
    </form>
    Je voudrais que lorsque je valide ce formulaire, regarder dans la table "ListesEntreprises" si la valeur des checkbox, qui sont ici de 1 et de 3, sont connu dans la table.

    Si les deux checkbox sont cochées et que les deux lignes sont dans la table, on ne fait rien. Si une des cases voir plusieurs sont décochées, il faut virer les lignes en question de la table.

    C'est pas simple a expliquer, j'espère que vous m'avez compris.

    Merci

    Ensuite, il faut
    Vincent Pieplu
    Développeur Site Internet

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si c'est juste le nombre dont tu as besoin, tu peux même faire directement un COUNT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT COUNT(*) FROM table WHERE nombre NOT IN ('  . implode(',' ,$_POST['nombre']) . ')';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Et si je déselectionne la case à cocher, on obtient :
    SELECT idListe FROM ListesEntreprises WHERE idListe NOT IN ()
    Warning: implode() [function.implode]: Invalid arguments passed
    Vincent Pieplu
    Développeur Site Internet

  9. #9
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Vérifie que $_POST['nombre'] existe bien et n'est pas un tableau vide avant d'utiliser implode( ).
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  10. #10
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Oui, c'est vide car j'ai tout décoché.
    Je tourne en rond, je comprend même plus ce que je fais :S
    Vincent Pieplu
    Développeur Site Internet

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quand il te dit de vérifier, il parle d'un if en PHP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Oui, j'ai donc fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if(isset($_POST['idListe']) && !empty($_POST['idListe'])) {
    	$req = mysql_query("SELECT idListe FROM ListesEntreprises WHERE idListe NOT IN ("  . implode("," ,$_POST['idListe']) . ")");
    	echo "SELECT idListe FROM ListesEntreprises WHERE idListe NOT IN ("  . implode(',' ,$_POST['idListe']) . ")<br />";
    	for($i=0;$i<count($_POST['idListe']);$i++) {
    		$req2 = mysql_query("SELECT idListe FROM ListesEntreprises WHERE idListe='".$_POST['idListe'][$i]."'");
    		if(mysql_num_rows($req2)==0) {
    			mysql_query("insert into ListesEntreprises (`idEntreprise`,`idListe`,`id_user`) values ('".$idEntreprise."','".$_POST['idListe'][$i]."','".$_SESSION['id_user']."')");
    			echo "insert into ListesEntreprises (`idEntreprise`,`idListe`,`id_user`) values ('".$idEntreprise."','".$_POST['idListe'][$i]."','".$_SESSION['id_user']."')<br />";
    		}
    	}
    }
    Qu'en pensez-vous déjà ? Ca me permet d'insérer ceux qui ne sont pas dans la table. Par contre, je ne sais pas comment faire pour enlever de la base de données ceux qu'on aurait décocher.

    Merci
    Vincent Pieplu
    Développeur Site Internet

  13. #13
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Par contre, je ne sais pas comment faire pour enlever de la base de données ceux qu'on aurait décocher.
    Il faut supprimer tous ceux qui pourraient être insérés et insérer ceux qui sont cochés.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  14. #14
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    On supprime tout et on ré-insére en fait. J'y pensé mais ca me généré de nouveau id qui s'incrément dans ma table, pas grave peut être ?
    Vincent Pieplu
    Développeur Site Internet

  15. #15
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par PIEPLU Voir le message
    On supprime tout et on ré-insére en fait. J'y pensé mais ca me généré de nouveau id qui s'incrément dans ma table, pas grave peut être ?
    Si, et surtout ça me semble anormal. Je ne vois pas pourquoi des cases à cocher devraient être enregistrées dans une table avec un auto-incrément.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  16. #16
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Bah faut bien mettre des id en auto incrémenté dans une table. Les cases a cocher non pas d'autoincrément
    Vincent Pieplu
    Développeur Site Internet

  17. #17
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par PIEPLU Voir le message
    Bah faut bien mettre des id en auto incrémenté dans une table
    Non pas forcément
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

Discussions similaires

  1. [VBA-E] Comparer des valeurs dans des cellules
    Par michel2662 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 22/06/2017, 15h00
  2. comparer des valeurs binaires en algèbre
    Par novices dans le forum Langage
    Réponses: 1
    Dernier message: 12/03/2007, 23h55
  3. [Tableaux] Comparer des valeurs dans un tableau
    Par Dirty Harry dans le forum Langage
    Réponses: 13
    Dernier message: 03/02/2007, 00h52
  4. Comparer des valeurs.
    Par Fred2209 dans le forum C++
    Réponses: 5
    Dernier message: 14/12/2006, 00h32
  5. comparer des valeurs
    Par nah_wah dans le forum Langage
    Réponses: 15
    Dernier message: 23/09/2005, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo