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 :

[Tableaux] Vérification d'une valeur contenue dans un tableau


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut [Tableaux] Vérification d'une valeur contenue dans un tableau
    Bonjour

    Voila je voudrais faire une vérification dans un tableau de donnée array() contenu dans une session

    premier page.php
    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
     
    <?php
    require(connexion.php);
    $sql=mysql_query("SELECT n,m FROM a WHERE b=1");
    $i=0;
    $n=array();
    while($res=mysql_fetch_object($n)){
                                                    $n[$i][0]=$res->n;
                                                    $n[$i][1]=$res->m;
                                                    $i++;
                                                    }
                                                  $_SESSION['n']=$n;
     
     
    ?>
    Vérification
    je voudrai faire la vérification suivante;
    $b= 55;
    $n[$i][0] contient une serie de chiffre 1,2,3,4,5,6 ... etc, contenu dans la session n.
    je voudrai savoir si 55 est contenu dans session n au niveau $n[$i][0];

    vérification.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    require('connexion.php');
    $a=$_SESSION['n'];
    $i = 0;
    $b=55;
    $taille=sizeof($a);
    for ($i;$i<=$taille;$i++){
    if($b == $a[$i][0]){echo"bon";exit();}
    else{echo"pas bon";exit();}
    }
    ?>
    Mon problème c'est que cela ne fonctionne pas même si 55 est contenu dans la list $n[$i][0]; le message est toujours pas bon!!!

    Quelqu'un peut-il me corriger la fonction ?

    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 59
    Points : 44
    Points
    44
    Par défaut
    tu as deja un probleme avec ta variable $taille
    en effet, tu lui demande la taille de $n qui n'est pas initialisé ici, il faudrait que tu lui demande la taille de $a

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut rep
    oups j ai fait un oublie en recopiant desolé, mais même avec ca cela ne fonctionne pas

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 59
    Points : 44
    Points
    44
    Par défaut
    est ce que ta session te rends bien ton tableau ?
    pour en etre sur un petit print_f($a)

    car sinon je ne vois pas d'erreur

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut rep
    oui quand je fais une fonction d affichage de contenue du tableau array(); dans un tableau html il me donne bien toutes les lignes et les valeurs.

    Pour l'affichage

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?php
    require('connexion.php');
    function acc(){$n=$_SESSION['n'];
    $taille=sizeof($n);
    if($taille-1<=10000){$limite=$taille-1;}
    else{$limite=10000;}
    for($i=0;$i<=$limite;$i++){
    ?>
    <tr>
      <td><input type="checkbox" name="sel[]" value="<?php $a=$n[$i][0];echo"$a";?>" /></td>
      <td><input type="text" name="ti" value="<?php $b=$n[$i][1];echo"$b";?>"</td>
    </tr>
    <?php
                 }           }
    $sql=mysql_query("SELECT n,m FROM a WHERE b=1");
    $i=0;
    $N=array();
    while($res=mysql_fetch_object($sql)){$n[$i][0]=$res->n;
    									 $n[$i][1]=$res->m;
    									 $i++;}
    									$_SESSION['n']=$n;
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans titre</title>
    </head>
     
    <body>
    <form method="post" action="tr.php">
    <table cellpadding="0" cellspacing="0">
    <?php acc();?>
    </table>
    <input type="submit" name="a" value="Verifier" />
    </form>
    </body>
    </html>

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut rep
    Il y a pas d'erreur je pense mais il me manque quelque chose pour que cela fonctionne. En effet quelque soit la valeur j 'ai toujours pas bon en affichage. Mais je ne sais pas pourquoi quand la vérification faite doit être bonne, il m'affiche pas pas bon. Donc il y a quelque chose qui cloche dans le code, mais je ne pas quoi.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Votre algorithme est mal fait car seul le premier élément sera toujours testé car le exit met dans tous les cas fin à l'itération. De plus au lieu de mettre fin au script, il serait peut être plus intéressant de mettre seulement fin à la boucle (break).

    Par ailleurs, il serait souhaitable d'écrire un code un peu plus compréhensible : indenté et avec des variables évocatrices. Ça en sera d'autant plus facile pour tout le monde (nous qui vous corrigeons comme vous pour maintenir le script).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $b = 55;
    $trouve = FALSE;
    for ($i = 0, $taille = count($_SESSION['n']); $i < $taille; $i++) {
        if($b == $_SESSION['n'][$i][0]) {
            $trouve = TRUE;
            break;
        }
    }
     
    if ($trouve) {
        echo 'bon';
    } else {
        echo 'pas bon';
    }
    (non testé)

    Avec un tableau construit différemment on aurait pu utiliser des fonctions natives comme array_search.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/06/2010, 11h21
  2. Réponses: 2
    Dernier message: 31/03/2009, 15h48
  3. Insertion d'une valeur contenue dans un DropDownList
    Par DavidGal dans le forum Débuter
    Réponses: 9
    Dernier message: 30/04/2008, 15h31
  4. Réponses: 10
    Dernier message: 05/02/2008, 14h37
  5. Comment afficher une valeur contenue dans une variable ?
    Par manubrard dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2006, 15h56

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