Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    ordinare dei record recuperati dal database in base a una scelta definita

    ciao a tutti
    mi spiego meglio
    estraggo dal database diversi elementi
    ad esempio estraggo 4 elementi( non so a priori quanti elementi ci sono se 3 o 4 o 10)
    ipotizziamo 4 e li ordino in ASC

    1
    2
    3
    4

    ora diciamo che $campi è un array contentente 1 2 3 4

    Se io volessi cambia l'ordine di questa "resa" come dovrei fare?

    Ad esempio se io voglio iniziare la "resa" da 2 quindi stampare:

    2
    3
    4
    1

    Oppure volessi parire da 4

    4
    1
    2
    3

    come dovre fare?
    Grazie ciao
    www.infrattoni.com
    Videochat & News sempre Fresche!
    https://www.facebook.com/Infrattoni.VideoChat

  2. #2
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,647
    Ma in base a quale logica ordini?

  3. #3
    ok entro un pò più nel dettaglio

    allora ho 4 foto nel database e le estraggo normalmente in ASC
    quindi ho

    1.jpg
    2.jpg
    3.jpg
    4.jpg

    ora io questi 4 elementi li trasformo in json, (mi serve per fare altre cose)

    quindi avrò

    [
    1.jpg,
    2.jpg,
    3.jpg,
    4.jpg,
    ]


    ora io voglio cambiare questo ordine in base alla foto che devo selezionare....tipo seleziono la foto 2.jpg
    bene ora il json si deve trasformare in

    [
    2.jpg,
    3.jpg,
    4.jpg,
    1.jpg,
    ]

    quindi la domanda è....
    Come faccio a ordinare questi elementi in base alla foto che scelgo?


    sto provando a complicarmi la vita cosi

    Codice PHP:
    //ipotizziamo che la lista deve iniziare dalla foto 2, quindi $start = 2
    public function listAction($name$start 2) {
            
    $repository $this->getDoctrine()->getRepository('AcmeAlbumBundle:Album');
    //$album è l'array contenente le foto
            
    $album $repository->findOneByName($name);
    //provo a creare un array $prova e a mettere come indice lo $start
    //da qui in poi mi sono incasinato dovrei iniziare l'array con l'indice [1]
            
    $prova = array();
            
    $start1 $start;
            foreach (
    $album->getImages() as $key => $value) {
    if(
    $key == $start){
                
    $prova[] = $key ' ' $value->getImageName() . '
    '
    ;
    }
            }

    //poi qui li dovrei riordinare di nuovo
       
    for ($x $start1$x count($album->getImages())+$start1$x++){
          
    //echo $prova[$x].'---------'.$x;
       
    }

        } 
    www.infrattoni.com
    Videochat & News sempre Fresche!
    https://www.facebook.com/Infrattoni.VideoChat

  4. #4
    esiste una funzione php sugli array che in base all'indice me li ordina?

    tipo gli dico di ordinarmi l'array a partire dall'indice 2 e lui mi elenca

    2
    3
    0
    1

    www.infrattoni.com
    Videochat & News sempre Fresche!
    https://www.facebook.com/Infrattoni.VideoChat

  5. #5
    sono riuscito a semplificare un pò le cose
    allora

    Codice PHP:
     $immagini = array('1.jpg','2.jpg');

            
    $prova= array();

            foreach (
    $immagini as $key=> $immagine) {
                 
    $prova[] = $immagine;
            }
    //$x sarà la foto selezionata in questo caso indice [1] e quindi seconda foto
            
    for($x=1$xcount($prova); $x++){
                echo 
    $prova[$x];
    //mi stampa correttamente la foto selezionata cioè 2.jpg
    //ma ora come continuare a stampare anche 1.jpg?
            

    www.infrattoni.com
    Videochat & News sempre Fresche!
    https://www.facebook.com/Infrattoni.VideoChat

  6. #6
    Originariamente inviato da Infrattoni
    sono riuscito a semplificare un pò le cose
    allora

    Codice PHP:
     $immagini = array('1.jpg','2.jpg');

            
    $prova= array();

            foreach (
    $immagini as $key=> $immagine) {
                 
    $prova[] = $immagine;
            }
    //$x sarà la foto selezionata in questo caso indice [1] e quindi seconda foto
            
    for($x=1$xcount($prova); $x++){
                echo 
    $prova[$x];
    //mi stampa correttamente la foto selezionata cioè 2.jpg
    //ma ora come continuare a stampare anche 1.jpg?
            

    La soluzione di lavorare sugli indici è già più decente di quella di voler ordinare l'array!
    Ignoro il motivo per cui effettui una copia dell'array delle immagini piuttosto che lavorare su quello originale, magari ti manca qualche cognizione sulla struttura e l'utilizzo degli array
    Per il resto:

    Codice PHP:
    <?php
    $selected_photo 
    1;
    $immagini = array('1.jpg''2.jpg''3.jpg''4.jpg''5.jpg');

    for(
    $x 0$start $selected_photo$x count($immagini); $x++, $start = ($start 1) % count($immagini)) {
        echo 
    $immagini[$start]."
    "
    ;
    }
    ?>
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    grazie ho risolto in un altro modo, cmq anche la tua soluzione è ottima grazie ciao
    www.infrattoni.com
    Videochat & News sempre Fresche!
    https://www.facebook.com/Infrattoni.VideoChat

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.