phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

non visualizzare i campi vuoti

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
Rispondi
Avatar utente
alex75
phpBB Expert
phpBB Expert
Messaggi: 943
Iscritto il: 31/03/2012, 23:46
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.37
Database: MySQL 5.6.39
Località: palermo
Contatta:

non visualizzare i campi vuoti

Messaggio da alex75 » 16/10/2012, 10:27

Ciao ragazzi ;-)
Vorrei che in una lista di risultati, non venissero visualizzati i campi vuoti; ma soltanto quelli compilati.
Cercando su google, credo di aver trovato la soluzione, ma non riesco ad applicarla.
Questa è la stringa che ho inserito nella riga 15:

Codice: Seleziona tutto

('show_empty_elements' => false));
Questo è il mio codice:

Codice: Seleziona tutto

<?php
if (!defined('IN_PHPBB'))
{
exit;
}
$sql = "SELECT ut.user_id, ut.username, ut.user_from, pt.user_id, pt.pf_nome, pt.pf_vettura, pt.pf_foto, pt.pf_fotoa, pt.pf_fotob, pt.pf_fotoc, pt.pf_fotod, pt.pf_fotoe, pt.pf_fotof, pt.pf_fotog, pt.pf_fotoh, pt.pf_fotoi, pt.pf_fotol, pt.pf_fotom, pt.pf_foton, pt.pf_fotoo, pt.pf_fotop
FROM " . USERS_TABLE . " ut, " . PROFILE_FIELDS_DATA_TABLE . " pt 
WHERE pf_foto like '[%' 
AND ut.user_id = pt.user_id 
ORDER BY pt.user_id";
        
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('lista_foto',array(('show_empty_elements' => false));
'USERNAME_COR'   => $row['username'],
'USER_COR'    => $row['user_id'],
'NOME'    => $row['pf_nome'],
'LOCALITA'    => $row['user_from'],
'VETTURA'    => $row['pf_vettura'],
'FOTO'         => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_foto'])),
'FOTO_A'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_fotoa'])),
'FOTO_B'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_fotob'])),
'FOTO_C'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_fotoc'])),
'FOTO_D'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_fotod'])),
'FOTO_E'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_fotoe'])),
'FOTO_F'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_fotof'])),
'FOTO_G'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_fotog'])),
'FOTO_H'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_fotoh'])),
'FOTO_I'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_fotoi'])),
'FOTO_L'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_fotol'])),
'FOTO_M'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_fotom'])),
'FOTO_N'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_foton'])),
'FOTO_O'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_fotoo'])),
'FOTO_P'       => preg_replace('/\[img\](.+)\[\/img\]/', '$1', strtolower($row['pf_fotop']))
));
}
?>
Ho provato in diversi modi... ma va sempre in errore.
Premetto che il campo

Codice: Seleziona tutto

WHERE pf_foto like '[%'
é stato compilato volutamente con questa sintassi a prescindere dalla mia richiesta; mi serve a dare un primo controllo ai risultati. In pratica in questo modo visualizzo solo i risultati degli utenti, che abbiano compilato quel campo.

Avatar utente
alex75
phpBB Expert
phpBB Expert
Messaggi: 943
Iscritto il: 31/03/2012, 23:46
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.37
Database: MySQL 5.6.39
Località: palermo
Contatta:

Re: non visualizzare i campi vuoti

Messaggio da alex75 » 17/10/2012, 19:53

Sto provando ad ottenere lo stesso risultato (non visualizzare i campi vuoti) in maniera forse più semplice.
Invece di intervenire lato php, sto tentando dal lato del template, anteponendo una "if" al codice, in questa maniera:

Codice: Seleziona tutto

<!-- [if "{lista_foto.FOTO_P}" !== "0"] --><a href="{lista_foto.FOTO_P}" class=highslide onclick="return hs.expand(this)" title="Vitara Gallery"><img src="{lista_foto.FOTO_P}" width=150 alt="" title="Foto 15 vitara gallery  Click per ingrandire / ridurre"></a><!-- [endif] -->
In pratica il valore di default è 0 quindi sto provando (in html) a far elaborare il codice <a href= etc etc, solo se il campo è compilato, quindi diverso da 0.
Ma anche così non ho avuto successo. Cosa sbaglio?

Avatar utente
alex75
phpBB Expert
phpBB Expert
Messaggi: 943
Iscritto il: 31/03/2012, 23:46
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.37
Database: MySQL 5.6.39
Località: palermo
Contatta:

Re: non visualizzare i campi vuoti

Messaggio da alex75 » 19/10/2012, 18:00

Niente... proprio non riesco. :frustrante: Ho provato, sia da php con if !empty ed isset; che da template con un centinaio di tipi di "if".
Ma che voi sappiate, si può fare in modo di avere una lista di array, senza avere righe vuote?

Avatar utente
alex75
phpBB Expert
phpBB Expert
Messaggi: 943
Iscritto il: 31/03/2012, 23:46
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.37
Database: MySQL 5.6.39
Località: palermo
Contatta:

Re: non visualizzare i campi vuoti

Messaggio da alex75 » 21/10/2012, 15:12

Comincio a vedere uno spiraglio di speranza :)
Sul file html dove richiamo il ciclio di array con un begin; ho aggiunto una condizione prima del codice href.
In questo modo però non visualizzo più il risultato, in ogni caso (sia che l'array sia vuota sia che sia piena)

Codice: Seleziona tutto

<!-- IF "{lista_foto.FOTO_P}" > 0 --><a href="{lista_foto.FOTO_P}" etc etc etc etc etc</a><!-- ENDIF -->
Mentre in questo modo, visualizzo sempre il risultato dell'array (sia che l'array sia vuota sia che sia piena)

Codice: Seleziona tutto

<!-- IF "{lista_foto.FOTO_P}" != '' --><a href="{lista_foto.FOTO_P}" etc etc etc etc etc</a><!-- ENDIF -->
Deduco che la condizione "IF" funzioni, ma semplicemente non stiamo parlando la stessa lingua!
Qualcuno sa come risolvere?

Avatar utente
alex75
phpBB Expert
phpBB Expert
Messaggi: 943
Iscritto il: 31/03/2012, 23:46
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.37
Database: MySQL 5.6.39
Località: palermo
Contatta:

Risolto: non visualizzare i campi vuoti

Messaggio da alex75 » 27/10/2012, 18:04

Risolto!
commettevo 2 errori.
Il primo era quello di usare le graffe nella condizione IF
Il secondo quello di cercare confronti ad un valore che se è presente è già esistente!
In pratica mi è bastato scrivere semplicemente questo prima del codice href:

Codice: Seleziona tutto

<!-- IF lista_foto.FOTO_P -->

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 42 ospiti