Allineare il testo dentro una select composta da più campi pesi da un db

Akille67

Utente Attivo
24 Giu 2012
25
0
1
Salve sto uscendo pazzo per risolvere un problema apparentemente semplice....

Ho una select in cui le option non create pendendo dati da un DB.

Per una corretta visualizzazione mi piacerebbe che i vari dati siano formattati a colonne.

es:
<OPTION value=$matricola>$id - $parametro - $matricola - $cognome $nome - $tzona &nbsp; <B>$giorno</B> - $linea_t $inizio_t $fine_t </OPTION>

in questo momento mi restituisce:

2 - SOC - SOCCORSO - 13:20 - 20:15 - 06:55 - S
117 - RIS - RISERVA - 13:20 - 20:15 - 06:55 - S

mentre a me piacerebbe:

2 | SOC | SOCCORSO | 13:20 | 20:15 | 06:55 | S
117 | RIS | RISERVA | 13:20 | 20:15 | 06:55 | S

o qualcosa di simile...

Gazie Alberto
 
Ciao, o non ho capito bene o la soluzione è banale!
Basta che sostituisci il segno trattino (-) con il segno pipe (|)
Codice:
<OPTION value=$matricola>$id | $parametro | $matricola | $cognome $nome | $tzona &nbsp; <B>$giorno</B> | $linea_t $inizio_t $fine_t </OPTION>
 
Non mi sono saputo spiegare ... vorrei che i valori presi dal db fossero incolonnati come se fossero in una tabella,
cioè l'inizio di ogni valore uno sotto l'altro... Spero di essere stato chiaro
 
Non sono stato chiaro vorrei che i dati presi dal DB fossero incolonnati come in una tabella per facilitare la lettura..
 
spero che tu debba preparare queste option una sola volta, perché il mio suggerimento forse non è il migliore, ma funziona
HTML:
<select style="font-family: monospace; font-size: 12pt;">
<option>2&nbsp;&nbsp;&nbsp;|&nbsp;SOC&nbsp;|&nbsp;SOCCORSO&nbsp;|&nbsp;13:20&nbsp;|&nbsp;20:15&nbsp;|&nbsp;06:55&nbsp;|&nbsp;S</option>
<option>117&nbsp;|&nbsp;RIS&nbsp;|&nbsp;RISERVA&nbsp;&nbsp;|&nbsp;13:20&nbsp;|&nbsp;20:15&nbsp;|&nbsp;06:55&nbsp;|&nbsp;S</option>
</select>
<br /> <br /> <br />
<select style="font-family: monospace; font-size: 12pt;">
<option>2&nbsp;&nbsp;&nbsp;&nbsp;SOC&nbsp;&nbsp;SOCCORSO&nbsp;&nbsp;13:20&nbsp;&nbsp;20:15&nbsp;&nbsp;06:55&nbsp;&nbsp;S</option>
<option>117&nbsp;&nbsp;RIS&nbsp;&nbsp;RISERVA&nbsp;&nbsp;&nbsp;13:20&nbsp;&nbsp;20:15&nbsp;&nbsp;06:55&nbsp;&nbsp;S</option>
</select>

scusa ... ho letto dopo il titolo, se prendi da db, puoi creare una funzione php a cui passi la stringa e la lunghezza che deve avere e all'interno, aggiungi gli spazi come nell'esempio html, restituendo la stringa a lunghezza "costante"
 
Ultima modifica:
ciao
ti schematizzo come potresti fare, considera però che non otterrai mai un allineamento perfetto perchè i caratteri hanno una loro "larghezza"
e quindi occupano spazi diversi
PHP:
<?php
function allinea($ar){
	$stringa=array();
	$str_allineata=array();
	$stringa=$ar;
	foreach($stringa as $chiave => $valore){
		switch($chiave){
			case "id": $lun=4;break;
			case "nome": $lun=15;break;
			case "citta": $lun=15;break;
		}
		/*
		aggiungo degli spazi davanti chr(32)
		però a monitor gli spazi doppi (o più) risultano come unico spazio
		quindi li sostituiso con &nbsp;
		non posso usare direttamente &nbsp; perchè str_pad
		non lo considera spazio, ma una stringa quindi aggiunge &n ...
		*/
		$str_all=str_pad($valore,$lun,chr(32),STR_PAD_LEFT);
		$str_allineata[]= str_replace( chr(32) , '&nbsp;' , $str_all);
	}
	return implode("|",$str_allineata);
	
}
//TEST
//simulo estrazione da db
$da_db[1]['id']=37;//[1] primo record
$da_db[1]['nome']="pinco";
$da_db[1]['citta']="abbiategrasso";
$da_db[2]['id']=11;//[2] swecondo record
$da_db[2]['nome']="sofonisba";
$da_db[2]['citta']="aosta";
$da_db[3]['id']=999;//[3] terzo record
$da_db[3]['nome']="pallo";
$da_db[3]['citta']="verona";
foreach($da_db as $record){
	echo allinea($record)."<br>";
}
?>
per un buon allineamento ti convine usare le tabelle
 

Discussioni simili