cs_didou8513
Messages postés58Date d'inscriptionvendredi 1 octobre 2004StatutMembreDernière intervention11 mars 2005
-
9 mars 2005 à 09:08
arnal69130
Messages postés445Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention22 mars 2007
-
10 mars 2005 à 09:38
Bonjour, à un moment dans mon application php, j'ai un tableau qui affiche tous les résultats d'une requete, il y a une colonne qui est le nom d'une entreprise et qui est un lien vers les détails de cette entreprise.
Quand j'arrive sur la page détails, j'aimerais avoir un bouton ou un lien qui me permet d'aller sur l'enregistrement suivant.
J'ai pensé à stocker les résultats de ma requete dans une table et ensuite grâce à cette table pouvoir réaliser ce que je veux mais je ne vois pas comment accéder à l'enregistrement suivant d'une table. J'utilise une base oracle. Merci de votre aide
arnal69130
Messages postés445Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention22 mars 20072 9 mars 2005 à 09:44
Bonjour,
Lorsque tu passes de la 1e page à la page "détails", comment sélectionnes-tu la bonne entreprise ? J'imagine en utilisant un identifiant. Comment le passes-tu ? avec un get ou un post ?
Lors de cette lecture des détails, accèdes-tu aux données de la base, ou lis-tu une variable tableau ?
Je pense que le plus simple, c'est de construire un tableau contenant le résultat de la requête de la 1e page (toutes les entreprises, avec leur identifiant). Ensuite, sur ta page détails, tu fais une requête avec un "WHERE idEnt=..." et pour le suivant, utilise la fonction next().
cs_didou8513
Messages postés58Date d'inscriptionvendredi 1 octobre 2004StatutMembreDernière intervention11 mars 2005 9 mars 2005 à 09:49
Merci de me répondre, oui pour sélectionner la bonne entreprise j'utilise son identifiant et ce dernier s'inscrit dans l'url de la page détails, et dans cette page j'accède aux données de la base.
Ton idée me paraît bien mais je ne connaît pas la fonction next.
arnal69130
Messages postés445Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention22 mars 20072 9 mars 2005 à 10:20
Si tu as bien un tableau contenant tous tes identifiants (de la forme
array(id1=>('NOM'=>'duchmol','Adresse'=>'rue truc',...), id2=>(...),...)
alors pour écrire ton lien vers l'entreprise suivante, essaie un truc du genre :
1./Recherche de l'identifiant en cours dans le tableau et positionnement du curseur du tableau sur cet élément (j'ai trouvé cette fonction sur http://www.php.net/manual/fr/function.current.php ) :
function array_set_current(&$array, $key)
{
reset($array);
while (current($array)!==FALSE){
if (key($array) == $key) {
break;
}
next($array);
}
return current($array);
}
Donc dans ton cas, ça doit donner à peu près ça :
array_set_current($TableauDesEntreprises, $idEnCours);
2./Déplacement du curseur du tableau sur l'élément suivant :
$suivant=next($TableauDesEntreprises); //cf http://www.php.net/manual/fr/function.next.php if ($suivant===FALSE) $suivant=reset($TableauDesEntreprises);
$idSuivant=key(TableauDesEntreprises);
3./ Puis construction du lien :
echo "suivant";
Si tu as d'autres questions, n'hésite pas.
Arnaud
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_didou8513
Messages postés58Date d'inscriptionvendredi 1 octobre 2004StatutMembreDernière intervention11 mars 2005 9 mars 2005 à 11:04
Désolé je ne maîtrise pas trop les tableaux, comment le remplir avec juste l'identifiant des entreprises. Merci
J'exécute la requete et tant qu'il y a un résultat j'insère le résultat dans le tableau. Ca doit être ca, mais quelle est la syntaxe pour l'insertion du résultat ?
Merci
arnal69130
Messages postés445Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention22 mars 20072 9 mars 2005 à 11:31
oui, c'est ça, en même temps que tu exploites le résultat de ta requète. Après, ça dépend de ta table entreprise. Tu peux faire un tableau qui contient quelques infos sur les entreprises :
$TableauDesEntreprises=array();
while($resultat...)
{
$id=résultat id
$TableauDesEntreprises[$id]['Nom']=resultat nom
$TableauDesEntreprises[$id]['Adresse']=resultat adresse;
}
ou alors un tableau contenant juste les id :
$TableauDesEntreprises=array();
while($resultat...)
{
$id=résultat id
array_push($TableauDesEntreprises,$id); //cf http://www.php.net/manual/fr/function.array-push.php }
Dans ce 2e cas, le tableau sera de la forme :
array(0=>id1, 1=>id2, ...) et le reste sera en fait plus simple, sur la page détails :
1./Recherche de l'identifiant en cours :
$cle=array_search($idEnCours, $TableauDesEntreprises); //cf http://www.php.net/manual/fr/function.array-search.php 2./$idSuivant= $TableauDesEntreprises[$cle+1];
3./idem
cs_didou8513
Messages postés58Date d'inscriptionvendredi 1 octobre 2004StatutMembreDernière intervention11 mars 2005 9 mars 2005 à 11:37
En fait c'est bon j'ai réussi a insérer les données dans mon tableau. Mais la je ne vois pas comment accéder à l'enregistrement suivant et précédent.
Pour trouver la valeur de l'entreprise que j'ai sélectionné c'est pas difficile car elle se trouve dans l'url. Après tu m'a dit si j'ai bien compris de trouver sa position dans le tableau comment faire ? Aussi, à l'affichage des résultats de ma requete j'ai fait un echo reset($tableau); ca marche ca affiche la valeur de la dernière ligne du tableau mais quand que sélectionne une entreprise qui me dirige vers la page détails et que je refait un echo reset($tableau); ca me met "Warning: Variable passed to reset() is not an array or object .....". C'est normal ? Merci
arnal69130
Messages postés445Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention22 mars 20072 9 mars 2005 à 14:11
Apparemment je n'ai pas été très clair. Je t'ai proposé 2 solutions pour remplir ton tableau (cf post précédent). Laquelle as-tu choisi ? Lorsque ton tableau est rempli et que tu fais print_r($tableau); obtiens-tu
array(id1=>('NOM'=>'duchmol','Adresse'=>'rue truc',...), id2=>(...),...)
ou
array(0=>id1, 1=>id2, ...)
?
Si tu as choisi cette 2e solution (c'est le plus simple), il te suffit ensuite, sur la page détails, de faire
1./Recherche de l'identifiant en cours :
$cle=array_search($idEnCours, $TableauDesEntreprises); //cf http://www.php.net/manual/fr/function.array-search.php 2./$idSuivant= $TableauDesEntreprises[$cle+1];
3./idem
C'est tout, plus besoin de function array_set_current(&$array, $key), ni de reset, ni de next.
Note : Si tu veux afficher un tableau, utilises "print_r($tableau)" et non pas "echo reset($tableau)"
cs_didou8513
Messages postés58Date d'inscriptionvendredi 1 octobre 2004StatutMembreDernière intervention11 mars 2005 9 mars 2005 à 14:35
J'y vois un peu plus clair maintenant, mais j'ai été un peu trop vite pour l'insertion des données dans mon tableau, je n'y arrive pas il m'affiche qu'un seul résultat et si je fais de ta manière avec array_push ya un message d'erreur : Fatal error: Only variables can be passed by reference .....
Merci