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

    ordinare array secondo altro array numerico

    Ciao a tutti:

    ho un file di testo che mi fa da database, lo leggo riga per riga in un array e vorrei ordinare le righe a mio piacimento da un form, per cui nel file ho:

    Codice PHP:
    <?php       
    $my_database_txt 
    './testi/album.txt';       
    $array_righi file($my_database_txt);       
    foreach(
    $array_righi as $key => $albums){           
    list(
    $nomeal$urlal$urlmin$descr) = explode("|"$albums);           
    $num = ($key 1);         
    $nom str_replace("-"" "$nomeal);         
    echo 
    '         
    <tr><td align="left" valign=top" width="30">'
    .$num.'</td><td align ="left" valign="top" width="200">[b]'.$nom.'[/b]</td><td align="left" valign="top" width="30"><input name="'.$key.'" type="text" class="campiform2" size="20" value="'.$num.'" /></td></tr>                   
     '
    ;                
    }         
    ?>
    Il form rimanda alla pagina stessa e quindi continuando ho:

    Codice PHP:
    <?php $posizioni = array();  
    if(isset(
    $_POST['Ordina']))           {          
    // inizializzo la variabile $errore a 0        
    $errore '0';         
    do {         
    // apro il file di testo in un array         
    $my_database_txt './testi/album.txt';              
    $array_righi file($my_database_txt);         
    // controllo che il numero di elementi tra i due array concida         
    $countfile count($array_righi);         
    $countpost count($_POST);         
    if (
    $countfile != $countpost){             
    $errore '1';          
    }elseif{         
    // vorrei fare altri controlli tipo che i numeri inseriti siano in sequenza per evitare che si scrivano numeri che non possano ordinare l'array e poi vorrei riordinare le righe dell'array ma non so come fare           
    }         
    }while (
    $errore == '0');         
    if (
    $errore == '1'){         
    echo 
    '<h1> Perfavore ricontrolla l\'ordine che hai inserito</h1>';         
    }     
    }         
     
    ?>
    Nei commenti si legge quale è il mio problema ma lo riscrivo, in pratica il problema è il controllo sui valori inseriti nel form, e poi il riordino delle righe dell' array ottenuto con la funzione file();

    Grazie a chi mi volesse aiutare
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106
    ma questo non è un problema!

    non hai scritto codice che non funzioni mi sembra...

    se vuoi riordinare un array usa il classico algoritmo bubble sort

  3. #3
    Eh si, il codice funziona perchè la parte "corposa" ovvero quella che fa ciò che deve fare non l'ho scritta....

    Innanzitutto non so come fare quello che mi consigli, ma mi informerò, e poi c'è il problema degli altri controlli sui campi inseriti, non so come farli...

    Ed infine non so come riscrivere il file da un array, tipo


    Codice PHP:

    $fp 
    fopen($my_database_txt'w');
    fwrite($fp$nuovoarr);
    fclose($fp); 
    mica funziona
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106
    Originariamente inviato da carlaravelli
    Ed infine non so come riscrivere il file da un array, tipo
    Codice PHP:
    $fp fopen($my_database_txt'w');
    fwrite($fp$nuovoarr);
    fclose($fp); 
    mica funziona
    prova così
    Codice PHP:
    $test print_r($nuovoarr); 
    fwrite($fp$test) or die('error!'); 
    Oppure fai un classico foreach tipo così

    Codice PHP:
    foreach($nuovoarr as $key => $value){ 
       
    fwrite($fp,$value."\t"); 


  5. #5
    Gli ultimi due dovrebbero andare bene, non capisco il significato di \t e non \r\n alla fine di ogni riga.

    Per l'ordinamento?

    in pratica io ho un array che mi proviene da una serie di campi di un form che contiene delle posizioni (per esempio 4, 2, 3, 1)

    e poi ho un file di testo che è trasformato con file in un array di righe tipo (riga1, riga2, riga3, riga4)

    alla fine io voglio che i numeri siano le nuove posizioni di un nuovo array di righe tipo (riga4, riga2, riga3, riga1)

    e voglio stamapare questo array sul file dal quale ho tratto l'arrai di righe iniziale (che quindid eve essere cancellato prima di scriverci sopra)

    L' array con le posizioni deve contenere numeri naturali in sequenza che partano da 1, senza duplicati e senza salti (questi sono i controlli che vorrei fare).
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106
    Originariamente inviato da carlaravelli
    Gli ultimi due dovrebbero andare bene, non capisco il significato di \t e non \r\n alla fine di ogni riga.
    è uguale... documentazione

    Originariamente inviato da carlaravelli Per l'ordinamento?

    in pratica io ho un array che mi proviene da una serie di campi di un form che contiene delle posizioni (per esempio 4, 2, 3, 1)

    e poi ho un file di testo che è trasformato con file in un array di righe tipo (riga1, riga2, riga3, riga4)

    alla fine io voglio che i numeri siano le nuove posizioni di un nuovo array di righe tipo (riga4, riga2, riga3, riga1)

    e voglio stamapare questo array sul file dal quale ho tratto l'arrai di righe iniziale (che quindid eve essere cancellato prima di scriverci sopra)

    L' array con le posizioni deve contenere numeri naturali in sequenza che partano da 1, senza duplicati e senza salti (questi sono i controlli che vorrei fare).
    è un pò macchinoso però dovrai necessariamente mettere le righe del file txt in un array e poi confrontarlo con l'altro... potresti anche lavorare con le key -> value
    vedi te come ti sta più semplice...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.