probleme avec key()

Eléphanteau du PHP | 26 Messages

11 juil. 2007, 10:36

Bonjour a tous et a toutes,

je travaillais sur 3 fichiers php différents concernant un affichage sous forme de tableau.
Dans un de ces fichiers j'utilisais la fonctin key() qui marchait parfaitement bien.
Malheureusement il fallait que j'intègre ces 3 fichiers en un seul et depuis cette fonction ne répond plus !!!

voici mon bout de code
//recupérer tous les moteurs de recherche du pack associé pour le positionnement en cours
$sql = "select distinct(CHAINEDERECHERCHE.ID_MOTEURDERECHERCHE), MOT_NOM, CHA_CHAINE from PACKPOSITIONNEMENT 
  inner join PACKREQUETE on PACKREQUETE.ID_PACKPOSITIONNEMENT=PACKPOSITIONNEMENT.ID_PACKPOSITIONNEMENT 
  inner join MOTEURDERECHERCHE on MOTEURDERECHERCHE.ID_MOTEURDERECHERCHE = PACKREQUETE.ID_MOTEURDERECHERCHE 
  inner join CHAINEDERECHERCHE on CHAINEDERECHERCHE.ID_MOTEURDERECHERCHE = MOTEURDERECHERCHE.ID_MOTEURDERECHERCHE
  where PACKPOSITIONNEMENT.ID_PACKPOSITiONNEMENT = " . $_GET['id'];
$rsbis = mssql_query($sql) or die(erreurSQL($sql)); 
while ($rowbis = @mssql_fetch_array($rsbis)){
  $tabMoteur[$rowbis['ID_MOTEURDERECHERCHE']] = array('MOT_NOM' => $rowbis['MOT_NOM'], 'CHA_CHAINE' => $rowbis['CHA_CHAINE']);
}
//recupere le premier moteur si aucun argument
if (!isset($_GET['idMoteur'])) {$_GET['idMoteur'] = key($tabMoteur) ;}
J'ai vérifié et le tableau $tabMoteur est correctement peuplé mais la fonction key() ne renvoie rien..
Je n'ai rien changé à ce bout de code.
Ce que je ne comprend pas c'est que key() fonctionnait très bien auparavant !!! :shock:

Quelqu'un sait d'ou cela peut venir ???

ViPHP
ViPHP | 4674 Messages

11 juil. 2007, 10:51

Bonjour :)

Tu pourrais nous faire un var_dump sur $tabMoteur, et sur key($tabMoteur) ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphanteau du PHP | 26 Messages

11 juil. 2007, 10:55

Bonjour :)

Tu pourrais nous faire un var_dump sur $tabMoteur, et sur key($tabMoteur) ?
voila ce que je trouve pour $tabMoteur

Code : Tout sélectionner

array(5) { [12]=> array(2) { ["MOT_NOM"]=> string(23) "AltaVista International" ["CHA_CHAINE"]=> string(76) "http://www.altavista.com/web/results?q=[search for this]&kgs=0&kls=0&stq=30 " } [15]=> array(2) { ["MOT_NOM"]=> string(10) "Google.com" ["CHA_CHAINE"]=> string(62) "http://www.google.com/search?hl=en&q=[search for this]&num=100" } [19]=> array(2) { ["MOT_NOM"]=> string(19) "Lycos International" ["CHA_CHAINE"]=> string(69) "http://search.lycos.com/default.asp?query=[search for this]&offset=90" } [26]=> array(2) { ["MOT_NOM"]=> string(17) "MSN International" ["CHA_CHAINE"]=> string(74) "http://search.msn.com/results.aspx?q=[search for this]&first=101&count=100" } [24]=> array(2) { ["MOT_NOM"]=> string(20) "Yahoo! International" ["CHA_CHAINE"]=> string(88) "http://search.yahoo.com/search?p=[search for this]&ei=UTF-8&fr=fp-tab-web-t&cop=mss&tab=" } }
et pour key($tabMoteur) : NULL

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 juil. 2007, 11:23

Euh... et c'est quoi la valeur que tu vourdrais avoir à la place de NULL ?

Parce que je ne vois pas du tout ce que tu peux attendre d'autre de ce code.. tu n'es positionné sur aucun élément du tableau, j'ai du mal à imaginer comment key() pourrait te retourner un index, et surtout lequel elle pourrait te retourner :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 26 Messages

11 juil. 2007, 11:26

Euh... et c'est quoi la valeur que tu vourdrais avoir à la place de NULL ?

Parce que je ne vois pas du tout ce que tu peux attendre d'autre de ce code.. tu n'es positionné sur aucun élément du tableau, j'ai du mal à imaginer comment key() pourrait te retourner un index, et surtout lequel elle pourrait te retourner :)
J'aimerais avoir comme valeur 12 (la première clé du tableau)
Auparavant c'est la valeur qui m'était renvoyé :shock:

Si key() n'est pas la bonne fonction pour mon souhait, sais tu laquelle dois je utiliser?

ViPHP
ViPHP | 4674 Messages

11 juil. 2007, 11:32

Chez moi, key($tabMoteur) me donne (int)12.

Tu le places où exactement dans ton code ?

Edit: sinon fait
reset($tabMoteur);
$var = key($tabMoteur);
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 juil. 2007, 11:35

bah non, key() c'est bon, mais ca m'étonne qu'il ne faille pas un current() pour récupérer le premier élément du tableau pour que key puisse en déterminer la clé...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 26 Messages

11 juil. 2007, 11:38

Chez moi, key($tabMoteur) me donne (int)12.

Tu le places où exactement dans ton code ?

Edit: sinon fait
reset($tabMoteur);
$var = key($tabMoteur);
Je le place à la fin de mon bout de code (après $_GET['idMoteur'] = key($tabMoteur) )

J'ai essayé avec reset et tou marche correctement !!!
MERCI :D

PS:
Ce que je ne comprend pas c'est qu'avant l'integration tout fonctionnait sans le reset!!!!

ViPHP
ViPHP | 4674 Messages

11 juil. 2007, 11:49

@Ryle : key() retourne la clé courante du tableau. current() retourne la valeur courante du tableau.

Si key() retourne null, c'est qu'on est à la fin du tableau dans la majorité des cas. Comme risa83 voulait (int)12, ie. le premier ID, un reset s'imposait.

Edit : n'oublies pas de mettre ton poste en "Résolu" :)
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 juil. 2007, 11:54

Au temps pour moi, c'est la notion de courrant qui m'avait échappé pour la fonction key, je pensais qu'il fallait d'abord sélectionner la valeur pour qu'il retourne la clé associé :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...