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 :

Tri avec 1er élément aléatoire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut Tri avec 1er élément aléatoire
    Désolé pour mon charabia...

    Je voudrais que le résultat d'une requête soit classé par ordre ascendant mais avec le 1er élément tiré au hasard.

    Tout est ascendant si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ORDER BY 
    `i`.`order` ASC;

    Mais j'ai l'ordre totalement aléatoire si je fais :
    Je voudrais un mix des 2

    C'est à dire que seulement le 1er sorti soit aléatoire et que tous les autres soient ensuite classés...

    Comment faire ?

  2. #2
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Tu fais 2 select ma poule LOOL

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Euh... je ne vois pas du tout comment faire ça...

    J'ai ce code à la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    		// SQL query for slides
    		$query = '
    		SELECT 
    			`c`.`sectionid` AS `sid`,
    			`c`.`catid` AS `cid`,
    			`c`.`title` AS `ctitle`, 
    			`c`.`introtext` AS `introtext`,
    			`i`.`name` AS `name`, 
    			`i`.`filename` AS `filename`, 
    			`i`.`article` AS `article`, 
    			`i`.`title` AS `title`,
    			`i`.`link_type` AS `link_type`, 
    			`i`.`link` AS `link`, 
    			`i`.`content` AS `content`
    		FROM 
    			#__slides AS `i` 
    		LEFT JOIN 
    			#__content AS `c` 
    			ON 
    			`i`.`article` = `c`.`id` 
    		WHERE 
    			`i`.`group_id` = '.$this->group_id.'
    			AND
    			`i`.`published` = 1
    			AND 
    			`i`.`access` <= '.(int) $aid.'
    		ORDER BY 
    			`i`.`order`,
    			`i`.`access` ASC;
    		';
    Un petit coup de pouce ?

  4. #4
    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
    Par défaut
    - Tu fais un SELECT ordonné
    - Tu ranges tout dans un tableau PHP
    - Tu tires en PHP un éléments au hasard dans le tableau

    ca sera plus simple que de faire deux requetes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 24

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    @ sabotage
    Si je comprends bien la suite du code, il place effectivement les données ordonnées DESC dans un tableau. Mais je ne sais pas comment tirer en PHP au hasard la 1ère...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    		// running query
    		$database->setQuery($query);
    		// if results exists
    		if( $datas = $database->loadObjectList() )
    		{
    			// parsing data
    			foreach($datas as $item)
    			{
    				// cleaning array
    				unset($prepared_image);
    				// array with prepared image
    				$prepared_image = array(
    					'sid' => $item->sid,
    					'cid' => $item->cid,
    					'ctitle' => $item->ctitle,
    					'introtext' => $item->introtext,
    					'name' => $item->name,
    					'filename' => $item->filename,
    					'article' => $item->article,
    					'title' => $item->title,
    					'link_type' => $item->link_type,
    					'link' => $item->link,
    					'content' => $item->content
    				);
     
    				array_push($this->slide_data, $prepared_image);
    			}
    		}
    @ eswiac
    j'arrive pas à me connecter sur iGoogle...

Discussions similaires

  1. Réponses: 15
    Dernier message: 02/05/2015, 17h21
  2. [AC-2007] Pb avec le 1er élément d'une liste déroulante
    Par waonmd dans le forum IHM
    Réponses: 1
    Dernier message: 25/07/2014, 14h55
  3. tri avec l'ordre UPDATE et incrementation d'une colonne
    Par Staron dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/02/2004, 08h48
  4. tri avec les champs vides en dernier
    Par r-zo dans le forum Requêtes
    Réponses: 11
    Dernier message: 03/09/2003, 13h40
  5. Récupérer 10 nb différents avec un calcul aléatoire
    Par BXDSPORT dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2002, 02h35

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