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 :

Tableau PHP passer à la "ligne" d'après


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2013
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 28
    Points : 16
    Points
    16
    Par défaut Tableau PHP passer à la "ligne" d'après
    Coucou,

    alors voilà je dois faire un tableau en php qui doit servir à faire un tri puis après je récupère les données triées.

    Mon tableau est rempli de cette manière pour chaque ligne, donc ma clé correspond à mon $cpt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data[$cpt]=array('NumTop' => $NumTop, 'TitreTop' => $TitreTop, 'JourCreat' => $JourCreat, 'Identifiant' => $Identitfiant, 'NbMess' => $NbMess, 'Resum' => $Resum, 'JourMess' => $JourMess);
    En fait le but est de trier sur la valeur JourMess qui est une date car je dois avoir les derniers messages en premiers (pas possible de faire ça en sql car il y a trop de tables en jeu, sinon j'y ai déjà pensé!) pour cela j'utilise une fonction php arsort. Sauf que cette fonction garde la correspondance entre les index et les valeurs.

    Donc 1er question: y-a-t-il une fonction qui permet de trier le tableau sur ma valeur mais sans conserver la correspondance clé valeur?

    Si je pose cette question c'est parce que lorsque je vais rechercher mes autres valeurs je le fais avec la clé (dans mon cas $cpt) par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $TitreTop=$data[$cpt][2];
    2ème question: Est ce qu'une fonction existe pour passer à la "ligne" suivante de façon à ne pas avoir à faire $cpt=$cpt+1 parce que si l'ordre à changé, l'ordre des clés également. Ce que j'ai trouvé comme fonction c'est current mais ça ne correspond pas à ce que je veux car current change de "colonne" et non pas de "ligne".


    Merci d'avance pour vos réponses.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    pas possible de faire ça en sql car il y a trop de tables en jeu
    Je ne vois pas bien en quoi le nombre de tables empêche de faire un tri.

    Tu peux trier tout ton tableau avec array_multisort() :
    http://php.net/manual/fr/function.array-multisort.php
    regarde l'exemple #3

    Sinon pour parcourir un tableau, il y a foreach

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2013
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    A oui j'avais pas vu cette fonction dans le manuel php et pourtant j'ai cherché
    merci! je n'ai plus d'erreur sur mon script, mais je n'ai pas encore pu tester "complètement" car il faut que je crée les autres pages

    Sinon pour ce qui est des tables, je fais un tri sur une première requete, en suite en fonction de ce tri je fais d'autres requetes dont la dernière qui dépend d'une requete juste au dessus. Le tri se fait sur cette dernière requête uniquement s'il y a au moins un résultat. En deux mots pour moi je trouve plus clair de mettre les données dans un tableau, mais ce n'est que mon point de vue.

    En tout cas merci encore

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2013
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    en fait ça ne fonctionne pas

    voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if ($NbTopic>=2)
    {
    	foreach ($data as $key => $row) 
    	{
    		$JourMess[$key]  = $row['JourMess'];
    		$NumTop[$key] = $row['NumTop'];
    		$TitreTop[$key] = $row['TitreTop'];
    		$JourCreat[$key] = $row['JourCreat'];
    		$Identifiant[$key] = $row['Identifiant'];
    		$NumIns[$key] = $row['NumIns'];
    		$NbMess[$key] = $row['NbMess'];
    		$Resum[$key] = $row['Resum'];
    	}
    	$dataTri=array_multisort($JourMess,SORT_DESC,$data);
    Et voici les messages d'erreurs:

    Warning: Cannot use a scalar value as an array in C:...
    celui-ci apparait sur cette ligne: $NbMess[$key] = $row['NbMess'];

    Warning: array_multisort() [function.array-multisort]: Argument #1 is expected to be an array or a sort flag in C....
    et celui-ci apparait sur cette ligne: $dataTri=array_multisort($JourMess,SORT_DESC,$data);

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2013
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    j'ai essayé ceci mais ca ne marche pas non plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $NbMess[$key] = array();
    $NbMess[$key] = $row['NbMess'];

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Cela signifie que tu as déjà défini $NbMess quelque part et que tu ne peux pas la réutiliser comme un tableau (à moins de la détruire avant).

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2013
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    effectivement je l'ai juste renommé et j'ai plus cette erreur merci

    Par contre j'ai toujours l'erreur suivante.

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Contrôle ce que valent $date et $JourMess

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

Discussions similaires

  1. [PHP-JS] Passer un tableau php en tableau JS
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/12/2005, 11h36

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