Visualizzazion modulo di ricerca in PHP e MySql

  • Creatore Discussione Creatore Discussione Garaux
  • Data di inizio Data di inizio

Garaux

Utente Attivo
24 Feb 2013
50
0
0
Ciao a tutti,
Sto realizzando un modulo di ricerca con cui visualizzare tutti gli articoli contenuti in un database.
Allo stato attuale, la ricerca può essere effettuata per categoria, testo contenuto negli articoli, data online e offline come mostrato nell'immagine sottostante
1.jpg

Il codice usato è questo:
PHP:
<?php
  //SELECT DI BASE
  $select = 'SELECT id, article_name, online_date, offline_date';
  $from   = ' FROM article';
  $where  = ' WHERE TRUE';

  $placeholders = array();
  

  if ($_GET['category'] != '') //CERCA CATEGORIE
  {
    $where .= " AND author_id = :author_id";
    $placeholders[':author_id'] = $_GET['category'];
  }

 
   if ($_GET['searchOnlineDate'] != '') //CERCA ONLINE DATE
  {
    $where .= " AND online_date LIKE :online_date";
    $placeholders[':online_date'] = '%' . $_GET['searchOnlineDate'] . '%';
  }

 
  
   if ($_GET['searchOfflineDate'] != '') //CERCA OFFLINE DATE
  {
    $where .= " AND offline_date LIKE :offline_date";
    $placeholders[':offline_date'] = '%' . $_GET['searchOfflineDate'] . '%';
  }

  

  if ($_GET['text'] != '') //RICERCA TESTO INCLUSO NEGLI ARTICOLI
  {
    $where .= " AND article_name LIKE :article_name";
    $placeholders[':article_name'] = '%' . $_GET['text'] . '%';
  }

  try
  {
    $sql = $select . $from . $where;
    $s = $GLOBALS['pdo']->prepare($sql);
    $s->execute($placeholders);
  }
  catch (PDOException $e)
  {
    $error = 'Errore recupero articoli' . $e->getMessage();
    include 'error.html.php';
    exit();
  }

  foreach ($s as $row)
  {
    $articles[] = array('id' => $row['id'], 'text' => $row['article_name'], 'searchOnlineDate'=>$row['online_date'], 'searchOfflineDate'=>$row['offline_date']);
  }

?>

Fino qui tutto bene...poi dopo ore di lavoro mi sono accorto che non è il risultato che voglio e quindi mi sono incartato.

Ciò che vorrei è che una volta inseriti i criteri di ricerca il risultato fosse quello riportato in basso, ovvero presentare tutti i dati associati agli articoli e non solo quelli generati dalle opzioni di ricerca:

2.jpg

Ecco il codice con cui visualizzo la tabella che vorrei:
PHP:
<?php
include 'includes/db.inc.php';

//CREAZIONE QUERY
try {
	
  $query_sql = '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.id';
               
 
      $result = $GLOBALS['pdo']->query($query_sql);
}


catch(PDOException $e) {
	$error = 'Selezione al DB non riuscita' . $e->getMessage();
	include 'error.html.php';
 	exit();
}




//VISUALIZZAZIONE RECORD
foreach($result as $row) {
	$valori[] = array('id'=>$row['id'], 'article_name'=>$row['article_name'], 'online_date'=>$row['online_date'], 'offline_date'=>$row['offline_date'],'date_month'=>$row['date_month'],'date_year'=>$row['date_year'], 'author_name'=>$row['author_name'], 'lang_name'=>$row['group_concat(lang_name)']);
}
include 'articoli.html.php';


?>

La mia domanda è: come posso visualizzare tutti i dati della seconda tabella dopo aver scelto i criteri di ricerca?
Spero di essermi spiegato bene.

Grazie
 

Discussioni simili