Modificare una funzione per creazione tabella html

Monital

Utente Attivo
15 Apr 2009
778
2
18
Mis cuso se apro questo topic dato che questo è un argomento più volte trattato però io e le funzioni non andiamo molto d'accordo e non so come "manometterle"

sul Web ho trovato una funzione che fa al caso mio però questa mi lista l'array solo su una colonna mentre io voelvo distribuire l'array su 3 colonne.

il contenuto dell'array può variare continuamente quindi non ho la minima idea di come fare

la funzione che ho trovato èq eusta

PHP:
function mostratabella($array) {
    //trasforma un array di array in una tabella
    echo('<table>');
    foreach($array as $row) {
        //ogni elemento dell'array è un array a sua volta, per la precisione una riga della tabella
        echo('<tr>');
        foreach($row as $cell) {
            //ogni elemento della riga è finalmente una cella
            echo('<td>'.$cell.'</td>');
        }
        echo("</tr>\n");
    }
    echo('</table>');
}

con uno script listo solo le directory presenti in una mia dir e voelvo intabellare tutte le directory trovate,associandole ad un immagine, insomma sto cercando di creare un pannello dia mministrazione.

perquesto ho già fatto ma volevo intabellarlo usando questa funzione che mi sembra abbastanza valida per il mio caso

qualcuno sa come fare?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
a me sembra che viene distribuito già su 3 colonne
PHP:
<?php

$array = array(
    0 =>
    array(
        'campo0' => '0 valore 0',
        'campo1' => '0 valore 1',
        'campo2' => '0 valore 2'
    ),
    1 =>
    array(
        'campo0' => '1 valore 0',
        'campo1' => '1 valore 1',
        'campo2' => '1 valore 2'
    )
);

function mostratabella($array) {
    //trasforma un array di array in una tabella
    echo('<table>');
    foreach ($array as $row) {
        //ogni elemento dell'array è un array a sua volta, per la precisione una riga della tabella
        echo('<tr>');
        foreach ($row as $cell) {
            //ogni elemento della riga è finalmente una cella
            echo('<td>' . $cell . '</td>');
        }
        echo("</tr>\n");
    }
    echo('</table>');
}

mostratabella($array);
?>
Sempre che l'array abbia tre elementi , se ne ha quattro le colonne saranno quattro
ma forse non ho capito benen il problema
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Ciao,
a me sembra che viene distribuito già su 3 colonne
PHP:
<?php

$array = array(
    0 =>
    array(
        'campo0' => '0 valore 0',
        'campo1' => '0 valore 1',
        'campo2' => '0 valore 2'
    ),
    1 =>
    array(
        'campo0' => '1 valore 0',
        'campo1' => '1 valore 1',
        'campo2' => '1 valore 2'
    )
);

function mostratabella($array) {
    //trasforma un array di array in una tabella
    echo('<table>');
    foreach ($array as $row) {
        //ogni elemento dell'array è un array a sua volta, per la precisione una riga della tabella
        echo('<tr>');
        foreach ($row as $cell) {
            //ogni elemento della riga è finalmente una cella
            echo('<td>' . $cell . '</td>');
        }
        echo("</tr>\n");
    }
    echo('</table>');
}

mostratabella($array);
?>
Sempre che l'array abbia tre elementi , se ne ha quattro le colonne saranno quattro
ma forse non ho capito benen il problema


penso dia ver trovato il difetto

facendo un count del mio array(diciamo di 5 elementi) invece di uscirmi 5 mi da
1
1
1
1
1

:crying:
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
allora qualcosa non quadra

ho trovato uno script per leggere solo le directory (visto che non ne venivo a capo da solo) e l'ho adattato al mio caso
PHP:
$dir = "dir";
$d = dir($dir);
while ($entry = $d->read()) {
if(is_dir($dir."/".$entry)){
if($entry!="." && $entry!=".."){ 

echo "<center><a href=\"./".$dir."/".$entry."/index.php\"><img src=img/".$entry.".png widht=\"50\" height=\"50\"><center>".$entry."</a><br>";

a me serviva listare solo le directory presenti in /dir però la variabile $entry mi sa che non viene considerato array difatti con var dump non mi da la sequenza dell'array ma solo la lunghezza delle stringhe

perdonatemi l'ignoranza ma pian pianello i sto arrivando a quessti array.

sto andando nel pallone
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Per creare un array delle directory puoi provare cosi:

PHP:
$dir = "dir";
$d = dir($dir);
$array_directory = array();
while ($entry = $d->read()) {
    if (is_dir($dir . "/" . $entry) && strpos($entry, ".") === false) {
        $array_directory[] = $entry;
    }
}
// lo mostri
var_dump($array_directory);

non capisco però cosa centra la funzione mostratabella()
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Per creare un array delle directory puoi provare cosi:

PHP:
$dir = "dir";
$d = dir($dir);
$array_directory = array();
while ($entry = $d->read()) {
    if (is_dir($dir . "/" . $entry) && strpos($entry, ".") === false) {
        $array_directory[] = $entry;
    }
}
// lo mostri
var_dump($array_directory);

non capisco però cosa centra la funzione mostratabella()

in pratica io vorrei che la lista delle dir (a cui ogni dirè associata un immagine) mi si intabelli in colonne da 3 o da 4

però col tempo le dir possono aumentare quindi non ho un numero fisso

in sostanza sto cercando dic reare un pannello admin dove ogni operazione deve essere collegata ad una dir

però ora usando il tuo suggerimenti mi lascia tutto su una riga mentre io vorrei in sostanza dividere il totale dell'array per 3 o per 4
PHP:
$numero_colonne=3
//oppure 4

 $righe= $numero_array/$numero_colonne

maronn :hammer:
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Prova cosi:

PHP:
<?php
$dir = "dir";
$d = dir($dir);
$array = array();
while ($entry = $d->read()) {
    if (is_dir($dir . "/" . $entry) && strpos($entry, ".") === false) {
        $array[] = $entry;
    }
}
function mostratabella($array) {
    echo('<table border=1>');
    foreach ($array as $row) {
        echo('<tr>');
        echo('<td><img src="' . $row . '.png" alt="image"/></td>');
        echo('<td>' . $row . '</td>');
        echo("</tr>\n");
    }
    echo('</table>');
}
mostratabella($array);
?>
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
allora

intanto l'immagine deve anch'essa indirizzare al file quidni deve essere così

PHP:
		echo "<center><a href=\"./".$dir."/".$entry."/index.php\"><img src=img/".$entry.".png widht=\"50\" height=\"50\"><center>".$entry."</a><br>";

cmq anche togliendo n'attimo il problema della dir delle immagini e dell'hyperlink comunque la tabella la incolonna in due su una gli mette l'immagine sull'altra il nome della dir

mentre io voglio na cosa del genere

poniamo il caso di avere 6 directory
Nome
Cognome
Cose
Citta
Cantanti
Mestieri

in ognuna di questa directory c'è un file index.php che fa quelloc he deve fare. al di fuori di questo ho creato una dir chiamata img dove ho le immagini di ogni dir ad esempio" Mestieri.png"

ora lo script in sostanza mi deve listare le directory ed incolonnarle tipo

Nome | Cognome |Cose
Città |Cantanti |Mestieri


Pensavo bastasse modificare la funzione mostratabella dandogli i parametri di numero colonna invece mi sa che non è così
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ah, ora ho capito :D

ti basta andare a capo nel ciclo ogni 3 td chiudendo la tr

Ora devo uscire, se non ti risponde nessuno o se non riesci da solo quando rientro ti faccio un esempio

:byebye:
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
non rieco a fare il ciclo

cioè ilcilco ce la faccio pure ma salta sempre le righe :hammer:

inizio ad ofiare ste tabelle

il problem e che non mi si infila nel cervello il meccnismo
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
In effetti non è stato facile come pensavo, meglio i div che le tabelle
PHP:
<?php
$dir = "dir";
$d = dir($dir);
$array = array();
while ($entry = $d->read()) {
    if (is_dir($dir . "/" . $entry) && strpos($entry, ".") === false) {
        $array[] = $entry;
    }
}
function mostratabella($array) {
    echo('<table>');
    $i = 1;
    foreach ($array as $row) {
        if ($i == 1) {
            echo('<tr>');
        }
        echo('<td><img src="img/' . $row . '.png" alt="image "/>' . $row . '</td>');
        if ($i == 3) {
            echo('</tr>');
            $i = 1;
        } else {
            $i++;
        }
    }
    // creo le td che mancano
    if ($i != 1) {
        echo ('<td colspan="' . (4 - $i) . '">&nbsp;</td>');
        echo('</tr>');
    }
    echo('</table>');
}
mostratabella($array);
?>

Dimmi se hai bisogno che te lo commenti
 
Ultima modifica:

Monital

Utente Attivo
15 Apr 2009
778
2
18
figurati non c'è bisogno ho capito tutto :incazz::incazz::incazz::incazz::incazz:


funziona :tifoso::tifoso::tifoso:

se me la puoi commentare mi sarà molto utile sia per capirne il procedimento sia per il futuro.
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
un ultima(ma non ci sperare :D) domanda al riguardo.

al posto dell'href ho usato un button però in entrambi i casi l'ordine dei button avviene credo epr ultima modifica, difatti quando modiifco il nome della cartella ad esempio il button cambia posizione come posso fare per ancorare il button o perlomeno dagli un ordine alfabetico?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Intanto ho commentato il codice:
PHP:
<?php

// percorso della directory
$dir = "dir";
// istanza della classe Directory 
$d = dir($dir);
//inizializzo l'array
$array = array();
// leggo il contenuto della directory con un ciclo
while ($entry = $d->read()) {
    // se trovo una directory che non contiene il . (punto)
    if (is_dir($dir . "/" . $entry) && strpos($entry, ".") === false) {
        // popolo l'array
        $array[] = $entry;
    }
}

function mostratabella($array) {
// apro la tabella
    echo('<table>');
    // inizializzo un contatore Servirà per contare le colonne e chiudere la tr
    $i = 1;
    // inizio a ciclre l'array creato
    foreach ($array as $row) {
        // se sono alla prima colonna
        if ($i == 1) {
            // apro la riga della tabella
            echo('<tr>');
        }
        // creo la colonna
        echo('<td><img src="img/' . $row . '.png" alt="image "/>' . $row . '</td>');
        // se sono alla terza colonna (qui si modifica in base alle colonne che si vuole visualizzare)
        if ($i == 3) {
            // chiudo la riga della tabella
            echo('</tr>');
            // riporto il contatore alla prima colonna
            $i = 1;
            // altrimenti
        } else {
            // incremento il mumero della colonna
            $i++;
        }
    }
    // qui sono fuori dal ciclo
    // Se chiuso il ciclo non ho ancora completato le 3 colonne 
    if ($i != 1) {
        // conto le colonne che mancano e le riempio con uno spazio vuoto
        echo ('<td colspan="' . (4 - $i) . '">&nbsp;</td>');
        // chiudo la riga che è rimasta aperta
        echo('</tr>');
    }
    // chiudo la tabella
    echo('</table>');
}

// richiamo la funzione mostratabella()
mostratabella($array);
?>

di quale href parli? mi sono perso!
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
grazie del commenot intanto ora me lo leggo ben bene

si vabè vicino all'img avevo inserito un href per poi sostituirlo con un button così cliccando su un elemnto dell'array mi indirizza su determinate apgine

i button altro non sono che le directory, directory che quando nea ggiungo una o ne modifico il nome cambiano la disposizione sull'index mentre io le volevo ancorate.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
prova cosi :
PHP:
// creo la colonna
 echo('<td><img src="img/' . $row . '.png" alt="image "/><button onclick="location.href=\'' . $row . '/index.php\'">' . $row .'</button></td>');
devi stare molto attento agli apici
 
Discussioni simili
Autore Titolo Forum Risposte Data
W Non riesco più a modificare i dati di una tabella da phpmyadmin MySQL 0
R [Photoshop] Modificare luminosità dei bordi in una foto Photoshop 2
A come modificare gli elementi di una lista e gli editText? Sviluppo app per Android 0
napuleone Modificare attributi di una classe con js Javascript 2
J Come modificare un elemento all'interno di una tabella. jQuery 5
G [WPF] Modificare aspetto ad una comboBox .NET Framework 2
blackhawk Dare la possibilità all'amministratore di modificare il contenuto di una pagina del sito PHP 8
E Modificare le linee che compaiono alla creazione di una nuova pagina su dreamviewer HTML e CSS 2
F Modificare dati da una tabella PHP 3
I modificare una pagina PHP 17
M Modificare form email affinchè mandi una copia BCC CMS (Content Management System) 1
G Come modificare una ricerca nel proprio sito con piu elenchi Classic ASP 1
J Come inserire una jpeg in un file XML o modificare il Font Flash 2
G Pagine in flash, modificare solo una parte della pagina al caricamento Flash 0
P Devo modificare una pagina ma non riesco... qualcuno mi aiuta? PHP 1
A modificare una proprietà con Js Javascript 0
R Aiuto. come modificare il contenuto di una query a campi incrociati Database 0
L creare o modificare una .GIF da mettere su una pagina HtmL HTML e CSS 5
M [cerco webmaster] sito web da modificare Offerte e Richieste di Lavoro e/o Collaborazione 0
G Come modificare un pdf in php PHP 1
napuleone modificare il valore dellascroll bar di webkit HTML e CSS 8
Shyson Modificare codice e creare link PHP 0
J Modificare panorami 360 ps 2020 Photoshop 0
napuleone modificare il contenitore di un div Javascript 2
napuleone modificare il contenitore di un div Javascript 1
D modificare questo codice per inserimento in text e non in tabella jQuery 1
C modificare sito in locale con dreamWeaver HTML e CSS 3
T Modificare ruolo utenti in fase di registrazione E-Commerce 0
M modificare un file .XML da database Sql PHP 13
S Modificare intestazione documento pdf con LO Draw Linux e Software 0
felino Radio button e Bootstrap: modificare il colore di default! HTML e CSS 1
Shyson Modificare funzione php PHP 15
W Modificare il Type di un Input box in javascript ovunque si trovi Javascript 0
F Modificare report di etichette di access con vba MS Access 0
D [PHP] Tabella: modificare direttamente i valori PHP 6
P [Woocommerce] Modificare il Bottone Checkout di Woocommerce in base alla categoria di prodotto E-Commerce 10
Q impossibile modificare un file ....... C/C++ 2
C [HTML] modificare la scritta della copyright HTML e CSS 2
G [PHP] MODIFICARE DATI TABELLA CONTESTUALMENTE PHP 6
Y [PHP] [HTML] Modificare i quadranti PHP 1
A [PHP] Modificare campo database in base alla scelta dell'utente PHP 2
V [WordPress] Come modificare link in tasto menu css WordPress 21
Y Modificare script php PHP 5
G Fullcalendar: modificare colore testo, backgroup e bordi per tutti gli eventi jQuery 3
paloppa Bootstrap.min.css modificare il file HTML e CSS 6
Merlina3377 [PHP] modificare file su form immagine thump PHP 1
G [HTML] Modificare ordine dei div in mobile responsive HTML e CSS 5
pfranco [PHP] Modificare pagina web online PHP 9
Shyson Modificare codice jQuery 0
A [Javascript] modificare il contenuto della barra indirizzi di un browser Javascript 1

Discussioni simili