Visualizzazione dei risultati da 1 a 6 su 6

Discussione: stampa su due colonne

  1. #1

    stampa su due colonne

    Buongiorno a tutti-e,
    mi servirebbe un aiuto per risolvere questo problema:
    Ho questo script che mi stampa regolarmente tutto quindi sostanzialmente non ha problemi. L'unica cosa che vorrei è che mi stampasse non in un unica colonna ma in due colonne ( metà file in una metà in un'altra).
    Vi ringrazio in anticipo

    <?php

    $file = file('elenco.txt');

    $nomi = array();

    foreach($file as $riga){
    array_push($nomi, $riga);
    }
    asort($nomi);
    $ipart=0;

    foreach($nomi as $nome){

    $ipart++;
    print ("<tr>\n");
    print ("<td width=20% colspan=0 align=right>$ipart - </td>\n");
    print ("<td colspan=0 width=40% align=left>$nome</td>\n");
    }

    print ("</tr>\n");
    ?>

  2. #2
    puoi fare in molti modi

    la sostanza è che con array_count() sai quanti elementi contiene l'array.. e mantenendoti un contatore nel ciclo puoi stampare al momento opportuno l'html necessario a cambiare colonna.

  3. #3
    ci ho provato come dici te ma niente di nuovo............sono sempre al solito punto
    Qualcosa di più specifico.....

    grazie di nuovo

  4. #4
    Qulacuno mi puo' dare una mano gentilmente per fare in modo che questo script stampi su quattro colonne differenti ma alla stesso tempo adiacenti in base al ciclo if.....else?

    Ex:

    1colonna 2colonna 3colonna 4colonna

    1 anna 2 claudia
    3 claudio 4 federico

    <table align="center" border="1" cellpadding="0" cellspacing="0">

    <?php

    $file = file('nomi.txt');
    $nomi = array();

    foreach($file as $riga)
    {
    array_push($nomi, $riga);
    }
    asort($nomi);
    $ipart=0;
    $num=count($nomi);
    $num1= intval($num/2);

    foreach($nomi as $nome) {
    $ipart++;

    if ($ipart<=$num1)
    {

    print ("<td width=20% colspan=0 align=right>$ipart</td>\n");
    print ("<td colspan=0 width=40% align=left> $nome</td>\n");

    }

    else

    {
    print ("<td width=20% colspan=0 align=right>$ipart </td>\n");
    print ("<td colspan=0 width=40% align=left> $nome</td>\n");
    }
    }

    ?>
    </table>

    Grazie e buona giornata

  5. #5
    Qulacuno mi puo' dare una mano gentilmente per fare in modo che questo script stampi su quattro colonne differenti ma alla stesso tempo adiacenti in base al ciclo if.....else?

    Ex:

    1colonna 2colonna 3colonna 4colonna

    1 anna 2 claudia
    3 claudio 4 federico

    <table align="center" border="1" cellpadding="0" cellspacing="0">

    <?php

    $file = file('nomi.txt');
    $nomi = array();

    foreach($file as $riga)
    {
    array_push($nomi, $riga);
    }
    asort($nomi);
    $ipart=0;
    $num=count($nomi);
    $num1= intval($num/2);

    foreach($nomi as $nome) {
    $ipart++;

    if ($ipart<=$num1)
    {

    print ("<td width=20% colspan=0 align=right>$ipart</td>\n");
    print ("<td colspan=0 width=40% align=left> $nome</td>\n");

    }

    else

    {
    print ("<td width=20% colspan=0 align=right>$ipart </td>\n");
    print ("<td colspan=0 width=40% align=left> $nome</td>\n");
    }
    }

    ?>
    </table>

    Grazie e buona giornata

  6. #6
    Il procedimento dovrebbe essere questo:

    $i: è il contatore
    $array[]: è l'array che contiene i tuoi dati

    1) Conti quanti elementi ha $array[]
    2) Dividi il risultato ottenuto per il numero di colonne che vuoi arrotondando per eccesso.
    In pratica mettiamo che
    $array[] = 21
    e tu voglia 4 colonne

    Fai:

    $array[]/4 = 5,250000

    Arrotondi per eccesso (il risultato è 6)

    cominci a processare il tuo array

    Ad ogni controllo sull'elemento fai in questo modo:

    if ($i/$num_array == 0)
    {
    echo 'tag per chiudere la colonna ed aprirne una nuova';
    }
    In questo modo hai ottenuto le 4 colonne.

    Ma c'è un problema:
    Cosa succede se nell'ultima colonna non ci sono abbastanza elementi da far risultare $i/$num_array == 0?
    Succede che l'ultima colonna non verrà chiusa.

    Io ovvierei al problema in qesto modo
    Stamperei a priori la chiusura dell'ultima colonna
    Inserirei un altro contatore che mi faccia sapere a che colonna sto (viene incrementato quando stampi i tag di chiusura della colonna e apri quelli per la nuova colonna)
    Quando arriva il momento di stampare i tag di apertura e chiusura controllo anche il contatore delle colonne: se è uguale al numero di colonne che vuoi ottenere allora non stampi niente.

    Se non sono stato chiaro o non hai capito qualcosa posta che ti spiegomeglio.

    Cmq forse ti risulterà più chiaro con uno pseudo codice:

    codice:
    $array[] = 21;
    $cols = 4;
    
    $num_array = $array[]/$cols; //5,250000
    $num_array = arrotonda_per_eccesso($num_array); // 6
    
    $icols = 0;
    $iarray = 0;
    
    echo 'apri tabella-apri colonna';
    foreach (---------------)
           {
              fai quello che divi fare con l'array
              if ($iarray == $num_array)
                {
                   if ($icols != $cols)
                     {
                        echo 'tag chiusura colonna-apertura colonna';
                        icols++;
                     }
                   $iarray++;
                }
              
           }
    echo 'chiudi tabella-chiudi colonna';
    Così dovrebbe funzionare.
    Fammi sapere! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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.