Lire une valeur d'un tableau array comparé aune autre valeur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Lire une valeur d'un tableau array comparé aune autre valeur

Re: Lire une valeur d'un tableau array comparé aune autre va

par Zebu » 25 sept. 2011, 03:39

Le code n'est pas encore bon. Il y a toujours des problèmes de boucles foreach nottament lors de l'intégration au projet web. Donc le code n'est pas encore bon. C'est pour l'affichage avec autorisation de la page de profil de l'ami.
include_once 'includes/db.php';
include_once 'includes/session.php';
$id = ($_GET['id']);
    $sqlbuddy = mysql_query("SELECT friends FROM users WHERE uid = '" . $uid . "'") or die (mysql_error());
    while($row = mysql_fetch_array($sqlbuddy))
{
    $friends = unserialize($row["friends"]);
}
//mysql_free_result ($sqlbuddy);  
mysql_close ();
if (isset ($friends[0]) ) {
foreach($friends as $key => $valeur )
{
     	echo "Clé :" .$key. " Valeur : ".$valeur."<br />\n";

if ($id==$valeur) {

echo "toto";
 } else {
echo "tata";
}
}
}

Re: Lire une valeur d'un tableau array comparé aune autre va

par Zebu » 25 sept. 2011, 02:24

Voila j'ai pu lire la valeur du tableau et la comparer à une autre. mais maintenant j'ai un problème de boucle foreach, c'est a dire qu'il m'affiche plusieurs fois les messages toto et tata. J'aimerais savoir sortir de cette boucle au bon moment, c'est a dire, si la valeur à été trouvée on écrit le message et on sort de la boucle. Contrairement à ce qui ce passe avec ce code. peut etre faut-il utiliser Do; While breack; continue;...?:
include_once 'includes/db.php';
include_once 'includes/session.php';
$id = ($_GET['id']);
    $sqlbuddy = mysql_query("SELECT friends FROM users WHERE uid = '" . $uid . "'") or die (mysql_error());
    while($row = mysql_fetch_array($sqlbuddy))
{
    $friends = unserialize($row["friends"]);
    if(isset($friends[0])) {

foreach($friends as $key => $valeur )
{
     	echo "Clé :" .$key. " Valeur : ".$valeur."<br />\n";

if ($id==$valeur) 
    {
echo "toto";
    } else {
echo "tata";
    }
}
}
}

Re: Lire une valeur d'un tableau array comparé aune autre va

par Zebu » 25 sept. 2011, 02:07

Continue à ne pas répondre aux questions et c'est moi qui vais te laisser tomber. :evil:

J'essaye de te faire comprendre certains éléments et pour avancer, j'ai besoin que tu donnes certaines réponses. Tu ne veux pas les donner, très bien, comme tu veux. Tu es pressé ? C'est le cadet de mes soucis, personne ici ne fera le boulot à ta place et si tu ne veux pas suivre la voie qu'on te montre pour que tu y arrives quand même, personne ne pourra rien pour toi.
Pose moi tes question de quoi tu as besoin comme renseignements, je pensais avoir été clair...

Re: Lire une valeur d'un tableau array comparé aune autre va

par Cyrano » 25 sept. 2011, 02:02

Continue à ne pas répondre aux questions et c'est moi qui vais te laisser tomber. :evil:

J'essaye de te faire comprendre certains éléments et pour avancer, j'ai besoin que tu donnes certaines réponses. Tu ne veux pas les donner, très bien, comme tu veux. Tu es pressé ? C'est le cadet de mes soucis, personne ici ne fera le boulot à ta place et si tu ne veux pas suivre la voie qu'on te montre pour que tu y arrives quand même, personne ne pourra rien pour toi.

Re: Mon code simple ne fonctionne pas (condition if)

par Zebu » 25 sept. 2011, 01:06

Je comprends rien aux tableaux, j'ai besoin d'un cours, mais pour le moment je suis pressé de terminer je n'ai pas le temps Je n'obtiens pas le résultat escompté, c'est à dire lire la valeur et la comparé à une autre.
include_once 'includes/db.php';
include_once 'includes/session.php';
$id = ($_GET['id']);
    $sqlbuddy = mysql_query("SELECT friends FROM users WHERE uid = '" . $uid . "'") or die (mysql_error());
    while($row = mysql_fetch_array($sqlbuddy))
{
    $friends = unserialize($row["friends"]);
    if(isset($friends[0])) {

foreach($friends as $key => $valeur )
{
     	echo "Clé :" .$key. " Valeur : ".$valeur."<br />\n";
    if ($id==$valeur)
    {
echo "toto";
    }
    else
    {
echo "tata";
    }
}
}
}

Re: Mon code simple ne fonctionne pas (condition if)

par Cyrano » 25 sept. 2011, 00:49

Ok, ce point étant vu, voyons la suite. Tu as omis de répondre à la dernière question, mais j'ai idée que tu as effectivement un problème avec la manipulation des tableaux dans des boucles, on va regarder un peu ça.

Prenons un tableau PHP simple et une boucle foreach :
$tableau = array(
    1 => "valeur de l'index 1",
    2 => "valeur de l'index 2",
    3 => "etc..."
);

foreach($tableau as $index => $valeur)
{
    //...
}
J'ai utilisé des variables avec des noms aussi explicatifs que possible :
  1. $tableau : c'est un tbaleau indexé tout ce qu'il y a de classique avec des indexes numériques auxquels correspondent des valeurs.
  2. $index : À chaque tour de la boucle foreach, $index prendra la valeur de l'index de la ligne du tableau en cours de traitement.
  3. $valeur : À chaque tour de la boucle foreach, valeur correspondra à $tableau[$index]. Donc si cet index vaut par exemple 1, alors valeur correspondra à $tableau[1], donc par rapport au jeu d'essai montré plus haut, ça vaudra « valeur de l'index 1 »
Maintenant, regarde ta boucle foreach. Au lieu de index tu as mis $friend, le tableau s'appelle $friends avec un « s » et la valeur est $array : à quoi devraient correspondre l'un et l'autre selon toi d'après les explications qui précèdent ?

Re: Mon code simple ne fonctionne pas (condition if)

par Zebu » 25 sept. 2011, 00:45

Tu as raison il manquais deux acolades. je veux seulement lire le tableau array de donnée deserializés et comparer la valeur ainsi obtenu avec une autre qui est $id ou $uid. c'est tout.
include_once 'includes/db.php';
include_once 'includes/session.php';
$id = ($_GET['id']);
    $sqlbuddy = mysql_query("SELECT friends FROM users WHERE uid = '" . $uid . "'") or die (mysql_error());
    while($row = mysql_fetch_array($sqlbuddy))
{
    $friends = unserialize($row["friends"]);
    if(isset($friends[0])) {

foreach($friends as $friend => $array ) //ici je veux qu'on m'aide
{
    if ($uid=$friends[0] ) // et surtout là comparaison des valeurs obtenue
    {
echo "toto";
    }
    else
    {
echo "tata";
    }
}
}
}

Re: Mon code simple ne fonctionne pas (condition if)

par Cyrano » 25 sept. 2011, 00:36

Ok, alors on va détailler un point ou deux :

D'abord, pour te donner une chance de voir directement et rapidement des problèmes dans ton code, prends l'habitude de l'aligner en utilisant une indentation correcte. Là, le dernier code que tu as posté ressemblerait alors à ceci :
include_once 'includes/db.php';
include_once 'includes/session.php';
$id = ($_GET['id']);
$sqlbuddy = mysql_query("SELECT friends FROM users WHERE uid = '" . $uid . "'") or die (mysql_error());
while($row = mysql_fetch_array($sqlbuddy))
{
    $friends = unserialize($row["friends"]);
    if(isset($friends[0])) {

        foreach($friends as $friend => $array )
        {
            if (isset($friends[$id]) )
            {
                echo "toto";
            }
            else
            {
                echo "tata";
            }
        }
Or là du coup, on voit immédiatement que deux accolades ne sont pas fermées. Donc second point : sois toujours discipliné et force-toi à toujours prendre certaines habitudes : si tu ouvres une accolade, commence par écrire la fermeture avant même d'ajouter quoi que ce soit d'autre, pareil pour les parenthèses, les guillemets, les balises HTML etc...

Ceci étant dit, il manque quand même un élément à ta question : ça ne marche pas bien, ok, je vais m'en accommoder : mais ce qui manque : qu'est-ce que tu attendais comme résultat, et qu'est-ce que tu as obtenu à la place ( message d'erreur, résultat incohérent, autre..? )

Garde toujours à l'esprit ceci : une question bien posée, c'est un problème bien compris, ça représente les 3/4 de la réponse ;)

Re: Mon code simple ne fonctionne pas (condition if)

par Zebu » 25 sept. 2011, 00:27

Je pense que j'ai été assez clair quand a mon intention, l'objectif que je veux atteindre avec ce morceau de code. J'ai du mal a travailler avec les tableaux array et je voudrais d'une part savoir lire les données du tableau et d'autre part les comparer à une valeur qui est $uid ou $id. Voila le code (ou j'en suis). Please help me!
include_once 'includes/db.php';
include_once 'includes/session.php';
$id = ($_GET['id']);
    $sqlbuddy = mysql_query("SELECT friends FROM users WHERE uid = '" . $uid . "'") or die (mysql_error());
    while($row = mysql_fetch_array($sqlbuddy))
{
    $friends = unserialize($row["friends"]);
    if(isset($friends[0])) {

foreach($friends as $friend => $array )
{
    if (isset($friends[$id]) )
    {
echo "toto";
    }
    else
    {
echo "tata";
    }
}

Re: Mon code simple ne fonctionne pas (condition if)

par Cyrano » 25 sept. 2011, 00:12

Dans ce cas, sois plus clair : « ça ne marche pas bien » est une indication un peu trop floue et fourre-tout qui en fin de compte ne veut rien dire et ne nous permet en aucune manière de t'aider à voir où se situe le problème parce qu'on a tout simplement pas la possibilité d'identifier la nature du problème lui-même.

Re: Mon code simple ne fonctionne pas (condition if)

par Zebu » 25 sept. 2011, 00:08

Là n'est pas la question j'ai mis un " if (isset($_get)) " plus haut dans le code mais tu ne le vois pas, je ne l'ai pas envoyer. Ce que je veux faire maintenant je veux travailler avec les données sérializés et donc comparer les valeurs résultant de la lecture de la base de donnée (sérializé) et une valeur fixe obtenue par $_GET ou $uid (qui est l'identifiant du l'utilisateur). Effectivement je n'ai pas beaucoup parcouru le forum, je suis nouveau ici.
Zebu, tu n'as pas du parcourir beaucoup le forum.

Sinon tu commencerais à savoir ce qu'on répète assez régulièrement en matière de débogage. Par ailleurs, tu aurais pu observer également qu'il faut un minimum de logique pour créer un code. xTG t'a mentionné un détail important dont tu n'as absolument pas tenu compte, je vais le formuler autrement : regarde ton code tel que tu l'as posté et demande-toi ce qui se passe si $_GET['id'] est vide ? Il y aurait d'autres questions à se poser sur cette même valeur, mais commence déjà avec ça, et reviens avec la réponse qui te semble la plus logique et/ou cohérente.

Re: Mon code simple ne fonctionne pas (condition if)

par Zebu » 25 sept. 2011, 00:03

J'ai décider de travailler avec les données sérializés.
Je voudrais en fait vérifier que les amis sont dans la cellule de la database (sous forme de données sérializés) on deserialize et si l'ami se trouve dans la cellule alors on affiche le texte sinon on affiche un autre texte, mais je ne sais pas travailler avec les tableaux array, quelqun peut il m'aider? merci.
<?php
include_once 'includes/db.php';
include_once 'includes/session.php';
$id = ($_GET['id']);
    $sqlbuddy = mysql_query("SELECT friends FROM users WHERE uid = '" . $uid . "'") or die (mysql_error());
    while($row = mysql_fetch_array($sqlbuddy))
{
    $friends = unserialize($row["friends"]);
    if(isset($friends[0])) {
    foreach($friends as $friend)// c'est ici que je veux qu'on me dépanne! pour le reste c'est bon.
    	{
			if (($id=$friend)) //$uid=user_id // ici aussi, désolé mais je connais pas bien les tableaux j'ai besoin d'un cour.
				{
					echo "amis";
				} else {
					echo "Pas amis";
						 }
				}
		}
}
?>

Re: Mon code simple ne fonctionne pas (condition if)

par Cyrano » 24 sept. 2011, 23:54

Zebu, tu n'as pas du parcourir beaucoup le forum.

Sinon tu commencerais à savoir ce qu'on répète assez régulièrement en matière de débogage. Par ailleurs, tu aurais pu observer également qu'il faut un minimum de logique pour créer un code. xTG t'a mentionné un détail important dont tu n'as absolument pas tenu compte, je vais le formuler autrement : regarde ton code tel que tu l'as posté et demande-toi ce qui se passe si $_GET['id'] est vide ? Il y aurait d'autres questions à se poser sur cette même valeur, mais commence déjà avec ça, et reviens avec la réponse qui te semble la plus logique et/ou cohérente.

Re: Mon code simple ne fonctionne pas (condition if)

par Zebu » 24 sept. 2011, 22:52

J'ai trouver ça mais ça marche pas bien.
<?php
include_once 'includes/db.php';
include_once 'includes/session.php';
$id = ($_GET['id']);
$sqlbuddy=mysql_query("SELECT mem_id, buddy_id FROM friends WHERE (mem_id='$uid' and buddy_id='$id') or (buddy_id='$uid' and mem_id='$id')");


while ($row = mysql_fetch_array($sqlbuddy, MYSQL_ASSOC)) {
//    printf("ID: %s  Name: %s", $row["mem_id"], $row["buddy_id"]);


//while($row=mysql_fetch_array($sqlbuddy)

$buddy=$row['buddy_id'];

$mem=$row['mem_id'];
}
mysql_free_result ($sqlbuddy);  
mysql_close ();
if (isset ($mem) ) {
if (($uid = $mem) || ($uid = $buddy))	{
	echo "amis";
} else {
 echo "pas amis";
}
}
?>

Re: Mon code simple ne fonctionne pas (condition if)

par Zebu » 24 sept. 2011, 22:08

comment puis-je tester le nombre de résultat de la requete et ainsi avoir tout les résultats. Proposez moi une solution.