POO probleme d'array et d'object
le lezard
-
le lezard -
le lezard -
Bonjour,
Je débute en PHP et en POO et comme tout debutant, je rencontre tout un tas de problemes don celui ci que je n'arrive pas à résoudre.
Je vous montre mon code et je vous explique mon probleme ensuite.
$_POST['perso1'] etant = The Tchernobyl man et $_POST['perso2'] = The Elephant man
j'obtiens dans mon print_r ceci:
Array ( [0] => Personnage Object ( [id:Personnage:private] => [nom:Personnage:private] => [degats:Personnage:private] => [_nom] => The Elephant man [_degats] => 0 )
[1] => Personnage Object ( [id:Personnage:private] => [nom:Personnage:private] => [degats:Personnage:private] => [_nom] => The Tchernobyl man [_degats] => 0 ) )
Hors ça ne correspond pas à ce que l'utilisateur à entré car dans mon print_r, [0] contient The Elephant man et le [1] contient The Tchernobyl man.
Ce que je voudrai, c'est que $_POST['perso1'] soit toujours = à [0] et que $_POST['perso2'] soit toujours = à [1].
Je vous montre ma fonction get:
Voila, j'espere que j'ai été clair car j'ai eu un peu de mal à expliquer.
Merci.
Je débute en PHP et en POO et comme tout debutant, je rencontre tout un tas de problemes don celui ci que je n'arrive pas à résoudre.
Je vous montre mon code et je vous explique mon probleme ensuite.
$persosc = $manager -> get(array($_POST['perso1'], $_POST['perso2']));
print_r($persosc);
$_POST['perso1'] etant = The Tchernobyl man et $_POST['perso2'] = The Elephant man
j'obtiens dans mon print_r ceci:
Array ( [0] => Personnage Object ( [id:Personnage:private] => [nom:Personnage:private] => [degats:Personnage:private] => [_nom] => The Elephant man [_degats] => 0 )
[1] => Personnage Object ( [id:Personnage:private] => [nom:Personnage:private] => [degats:Personnage:private] => [_nom] => The Tchernobyl man [_degats] => 0 ) )
Hors ça ne correspond pas à ce que l'utilisateur à entré car dans mon print_r, [0] contient The Elephant man et le [1] contient The Tchernobyl man.
Ce que je voudrai, c'est que $_POST['perso1'] soit toujours = à [0] et que $_POST['perso2'] soit toujours = à [1].
Je vous montre ma fonction get:
Je pense que le probleme vient du fait que The Elephant man vient avant The Tchernobyl man dans la BDD.
public function get($info)
{
$req = $this->_bdd->query('SELECT * FROM personnage WHERE nom IN(' . implode(',', array_map(array($this->_bdd, 'quote'), $info)) . ')ORDER BY id');
while($donnees = $req -> fetch(PDO::FETCH_ASSOC))
{
$persosc[] = new Personnage($donnees);
}
return $persosc;
}
Voila, j'espere que j'ai été clair car j'ai eu un peu de mal à expliquer.
Merci.
A voir également:
- POO probleme d'array et d'object
- Shockwave flash object - Télécharger - Divers Web & Internet
- Object desktop - Télécharger - Personnalisation
- Object dock - Télécharger - Divers Utilitaires
- Move object sims 2 - Forum Jeux vidéo
- Échec de l'acquisition de l'object com de virtualbox. - Forum Autres outils de virtualisation
2 réponses
Salut,
Si tu es arrivée au chapitre POO, c'est ce que tu as dépassé le niveau débutant en PHP.
Tu essayes de faire quoi avec "array_map" ?
Pour ta question, effectivement, l'ordre des résultats dépend de ta requête et de l'ordre d'enregistrement !
Tu peux par exemple utiliser un switch dans le ORDER BY !
PS : à tester :
Mettez en résolu quand c'est résolu ...
Si tu es arrivée au chapitre POO, c'est ce que tu as dépassé le niveau débutant en PHP.
Tu essayes de faire quoi avec "array_map" ?
Pour ta question, effectivement, l'ordre des résultats dépend de ta requête et de l'ordre d'enregistrement !
Tu peux par exemple utiliser un switch dans le ORDER BY !
PS : à tester :
public function get($info) {
if(empty($info)) return null;
$newInfos = array();
foreach($infos AS $id=>$val)
if(!in_array($val, $newInfos))
$newInfos[':val' . $id] = $val;
$inValues = '';
$cases = '';
$pos = 1;
foreach($newInfos AS $key => $value) {
$inValues .= $key . ',';
$cases .= ' WHEN ' . $key . ' THEN ' . ($pos++);
}
$inValues = rtrim($inValues, ',');
$cases = 'CASE _nom' . $cases . ' END';
$req = $this->_bdd->prepare('
SELECT *
FROM personnage
WHERE nom
IN(' . $inValues . ')
ORDER BY ' . $cases);
$req->execute($newInfos);
$persosc = array();
while($donnees = $req->fetch(PDO::FETCH_ASSOC)) {
$persosc[] = new Personnage($donnees);
}
return $persosc;
}
Mettez en résolu quand c'est résolu ...