Come visualizzare dei valori in modo allineato da un dabatase con PHP e MySQL

Garaux

Utente Attivo
24 Feb 2013
50
0
0
Ciao,
settimana scorsa ho postato un messaggio in cui chiedevo supporto per la visualizzazione in modo orizzontale di alcuni valori da un database.
Ora ho un'altra gatta da pelare.
In breve...

Ho creato un database con MySQL in cui figurano diverse tabelle relazionate tra di loro.
La tabella principale è denominata article in cui figurano tutti gli articoli associati agli autori, alle categorie e a diverse lingue.

La tabella article è così formata:
ID article_name author_id

La tabella autori
ID author_name
è relazionata con la tabella article.

Mentre questa è la tabella lang
ID lang_name
Per associare ad ogni articolo una o più lingue ho creato una tabella di lookup denominata
lookuplang
articleID langID

I valori vegono visualizzati così:
ArticoloLingua
Primo articoloItaliano
Primo articoloInglese
Primo articoloTedesco
Primo articoloFrancese
Secondo articoloItaliano

]


Mentre io vorrei poterli visualizzare in questa maniera:
ArticoloLingua 1Lingua 2 Lingua 3 Lingua 4
Primo articoloItalianoIngleseTedescoFrancese
Primo articoloItaliano

Ecco il codice utilizzato:
PHP:
//CREAZIONE QUERY
<?php
try { 
     
  $query_sql = 'SELECT article_name, author_name, lang_name FROM article  
                INNER JOIN author 
                ON article.author_id = author.id 
        inner join lookuplang 
                on article.id = lookuplang.articleID                              
                inner join lang 
                on langID = lang.id 
        ORDER BY article.id ASC'; 
                
  
      $result = $GLOBALS['pdo']->query($query_sql); 
} 


//VISUALIZZAZIONE RECORD 
foreach($result as $row) { 
    $valori[] = array('article_name'=>$row['article_name'],'author_name'=>$row['author_name'], 'lang_name'=>$row['lang_name']); 
} 
include 'test.html.php'; 

?>




<?php foreach($valori as $lista):?> 
<?php 
$lingua = $lista['lang_name'] . ': Status'; 
?> 
<tr> 
<td> <?php echo $lista['article_name']?></td> 
<td> <?php echo $lista['lang_name']?></td> 

  
   
 </tr> 
<?php endforeach?></table>

Potresti darmi una mano?

Grazie!
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Hai cambiato idea su come organizzare la tabella finale?
Ma devi solo visualizzare oppure hai proprio bisogno di ottenerlq con la query la tabella finale che desideri?
Perché se lo devi solo visualizzare con php fai subito.
 

Garaux

Utente Attivo
24 Feb 2013
50
0
0
Ciao, la visualizzazione in orizzontale la utilizzo per altri valori.
Io vorrei visualizzare i valori delle lingue come mostrato nella tabella con la query.
Dici che con PHP farei subito...in che modo?
Grazie
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Ti basta visualizzarle così?
Allora puoi sostituire l'ultima parte:
PHP:
<?php
$lingua="";
foreach($valori as $lista):
if($lingua!=$lista['lang_name']){
$lingua = $lista['lang_name']; 
echo "<tr><td>".$lista['article_name']."</td>";
}
echo "<td>".$lista['lang_name']."</td>";
endforeach?></table>
 

Garaux

Utente Attivo
24 Feb 2013
50
0
0
Ciao, purtroppo questa stringa mi restituisce questo:

Primo articolo English English
Qurto articolo Italian
Secondo articolo English English
Terzo articolo French

Tieni presente che nel prim articolo c'è Italiano, Inglese, Tedesco e Francese, cosi come nel secondo.
E invece mi stampa solo due volte la lingua Inglese.
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Ho fatto un po' di confusione:
PHP:
<?php
$nome="";
foreach($valori as $lista):
if($nome!=$lista['article_name']){
$nome = $lista['article_name']; 
echo "<tr><td>".$lista['article_name']."</td>";
}
echo "<td>".$lista['lang_name']."</td>";
endforeach?></table>
 
Ultima modifica:

Garaux

Utente Attivo
24 Feb 2013
50
0
0
Ciao, mi sembra che sia lo stesso codice con l'unica differenza della variabile nome.
 
Ultima modifica:

Garaux

Utente Attivo
24 Feb 2013
50
0
0
Sì, ma non funziona...la variabile lingua non è definita
Notice: Undefined variable: nome in C:\EasyPHP\www\progetti\CMS\versione_stabile\frontend\test.html.php on line 103
 

Garaux

Utente Attivo
24 Feb 2013
50
0
0
Sì, ho fatto così, ma invece di ottenere questo risultato

Articolo Lingua 1 Lingua 2 Lingua 3 Lingua 4
Primo articolo Italiano Inglese Tedesco Francese
Primo articolo Italiano

ottengo questo

Primo articolo English English
Qurto articolo Italian
Secondo articolo English English
Terzo articolo French

Il primo articolo dovrebbe stampare Italiano, Inglese, Tedesco e Francese, cosi come il secondo.
E invece mi stampa solo due volte la lingua Inglese.

La query sql è sempre la stessa:
PHP:
//CREAZIONE QUERY
<?php
try { 
     
  $query_sql = 'SELECT article_name, author_name, lang_name FROM article  
                INNER JOIN author 
                ON article.author_id = author.id 
        inner join lookuplang 
                on article.id = lookuplang.articleID                              
                inner join lang 
                on langID = lang.id 
        ORDER BY article.id ASC'; 
                
  
      $result = $GLOBALS['pdo']->query($query_sql); 
} 


//VISUALIZZAZIONE RECORD 
foreach($result as $row) { 
    $valori[] = array('article_name'=>$row['article_name'],'author_name'=>$row['author_name'], 'lang_name'=>$row['lang_name']); 
} 
include 'test.html.php'; 

?>
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Sicuro che hai messo il codice dell'ultimo post?
Ho fatto una prova e a me funziona perfettamente.
 

Garaux

Utente Attivo
24 Feb 2013
50
0
0
Sì, ho inserito il codice nel file che visualizza i valori.
Lo script funziona, ma non produce la tabella che vorrei, ovvero:

ArticoloLingua ALingua BLingua CLingua D
Primo articoloItalianoIngleseTedescoFrancese
Secondo articoloItaliano

Il risultato che ottengo, al contrario, è:

ArticoloLingua ALingua BLingua CLingua D
Primo articoloIngleseInglese
Secondo articoloItaliano

Non c'è un modo per isolare ciascuna lingua direttamente dalla matrice $lista['lang_name']?
Ovviamente se volessi estrarre $lista['lang_name'][0] mi darebbe I per l'italiano F per il francese etc...
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
In teoria potresti stampare già in quel ciclo senza usare l'altro come in questo esempio:
PHP:
//CREAZIONE QUERY 
<?php 
try {  
      
  $query_sql = 'SELECT article_name, author_name, lang_name FROM article   
                INNER JOIN author  
                ON article.author_id = author.id  
        inner join lookuplang  
                on article.id = lookuplang.articleID                               
                inner join lang  
                on langID = lang.id  
        ORDER BY article.id ASC';  
                 
   
      $result = $GLOBALS['pdo']->query($query_sql);  
}  

$articolo="";
//VISUALIZZAZIONE RECORD  
foreach($result as $row) {  
if($articolo!=$row[article_name]){
  $articolo= $row[article_name];
  echo "<tr><td>".$row['article_name']."</td>";
}  
echo "<td>".$row['lang_name']."</td>";
}
include 'test.html.php';  

?>
 

Garaux

Utente Attivo
24 Feb 2013
50
0
0
Ho provato entrambe le cose ma non visualizza i valori come vorrei.
Io vorrei che tutti i valori contenuti nella tabella lingue, ovvero tutte le lingue relazionate con gli articoli, venissero visualizzate così:

ArticoloLingue aLingue bLingue cLingue d
Primo articoloIngleseItalianoTedescoFrancese
Secondo articoloIngleseItalianoTedescoFrancese

E invece gli script che ho provato visualizzano cosi:
ArticoloLingue aLingue bLingue cLingue d
Primo articoloInglese
Secondo articoloInglese

Praticamente i valori contenuti nella tabella lingue non vengono visualizzati, ma solo il primo id Inglese.
 

Garaux

Utente Attivo
24 Feb 2013
50
0
0
Tieni presente però che la tabella lingue, che ha un tipo di relazione uno a molti, è associata alla tabella articoli con una tabella di lookup.
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
A me va bene. Non ho usato pdo però, prova a fare un:
PHP:
print_r($result);
E dimmi cosa ti esce fuori.
 

Garaux

Utente Attivo
24 Feb 2013
50
0
0
Ciao, mi esce questo:
PDOStatement Object ( [queryString] => SELECT article_name, online_date, offline_date, date_month, date_year, article.id, author.author_name, group_concat(lang_name) FROM article INNER JOIN author ON article.author_id = author.id inner join lookuplang on article.id = lookuplang.articleID inner join lang on langID = lang.id GROUP BY article_name )
 
Discussioni simili
Autore Titolo Forum Risposte Data
ecosito [WordPress] Visualizzare una mappa con i pin dei post tramite GPS? WordPress 4
Nik Come visualizzare dei record in sequenza Classic ASP 1
C far visualizzare in html dei dati inseriti in txt box PHP 7
I visualizzare lista utenti registrati PHP 1
N php problemi a visualizzare video PHP 3
P come posso visualizzare l'nvr online IP Cam e Videosorveglianza 0
K Visualizzare del html responsive in una Webview Sviluppo app per Android 0
M Visualizzare ultima data registrata MS Access 2
G Numero zero null non deve visualizzare nulla PHP 0
D visualizzare solo foto filtrate jQuery 1
M Visualizzare nuove domande in base a risposta precedente PHP 0
N Non Autorizzato. Dovresti rimuovere il parametro customize_messenger_channel per visualizzare l'anteprima in frontend. WordPress 1
M visualizzare ip cam in windows IP Cam e Videosorveglianza 0
W visualizzare solo file html e sottocartelle di una cartella PHP 1
napuleone visualizzare il codice senza usare gli & HTML e CSS 1
Y Come caricare e visualizzare un'immagine PHP 0
M Visualizzare file PDF con link preso dal DB PHP 0
Alex_70 Visualizzare 2 bandiere PHP 6
Alex_70 Visualizzare anteprima foto in dropdown PHP 2
L Visualizzare tabella all'interno finestra modal PHP 4
P Visual Studio VB.NET Visualizzare un messaggio alla scadenza. .NET Framework 0
J [PHP] Visualizzare risultato query stessa pagina PHP 3
B visualizzare una sola riga Database 3
Alex_70 [PHP] Visualizzare foto tramite select PHP 0
K [ASP] Visualizzare nome del file selezionato Classic ASP 3
M [PHP] Visualizzare un array partendo dal numero 1 e non 0 PHP 5
L [PHP] Visualizzare utente dopo login PHP 0
L [PHP] Visualizzare se una pagina è pingata PHP 1
M [PHP] Visualizzare nell'alert il calcolo PHP 4
D [WordPress] come fare per estrarre dati da un db MySQL tramite una form e visualizzare il risultato WordPress 0
L come visualizzare array di oggetti php PHP 9
S [PHP] visualizzare commento su un prodotto precedentemente selezionato PHP 2
V [Javascript] Visualizzare o nascondere div figlio Javascript 4
W [PHP] Visualizzare errori su Statements in MySQLi PHP 3
S [javascript] visualizzare/nascondere div Javascript 3
felino [Javascript] [jQuery] Slick Carousel: visualizzare una porzione dell'immagine successiva Javascript 0
W [Javascript] Visualizzare l'href di un link nascosto Javascript 0
L [HTML] Problemi a visualizzare le modifiche eseguite alle pagine del sito. HTML e CSS 2
G [HTML] Visualizzare iframe in un blog non funziona sempre xchė? HTML e CSS 3
tritabit [HTML] Visualizzare stelle tipo rating HTML e CSS 5
A Visualizzare div quando le immagini sono state uploadate con successo (Ajax) Ajax 0
T Visualizzare un Xml su un sito in modo semplice XML 1
F Visualizzare data in formato gg/mm/aaaa da database mysql. PHP 3
M [PHP] Visualizzare record nel db PHP 2
M Visualizzare immagini in PHP - MYSQL PHP 0
M Visualizzare immagini da DB in php PHP 0
G [PHP] CodeIgniter - Visualizzare singolo risultato PHP 4
Y VISUALIZZARE IMMAGINI DA DB PHP/MYSQL PHP 7
trattorino [PHP] funzione per visualizzare solo carattere PHP 2
S [HTML] Visualizzare XML formattato in HTML HTML e CSS 9

Discussioni simili