Salve ragazz*, è la prima volta che scrivo e lo faccio per chiedere un consiglio: devo realizzare un sito web che permetta di visualizzare gli artisti e le relative opere presenti nel database dei musei Tate, è il progetto per l'esame di Basi di Dati. Da premettere che ho iniziato con questo esame a scrivere in html, css, php e ad utilizzare mysql quindi sono ancora a livello base. Stando alle linee guida del progetto, il sito web deve poter offrire alcune funzionalità di minima che sto cercando di implementare. Questa è quella che sto provando a fare in questo momento:
-"ricerca di un artista inserendo uno o più parametri (anche parziali) - nel caso in cui nessun parametro venga specificato deve essere presentata la lista completa degli artisti".
Richiamo correttamente il nome dell'artista inserendo il nome per intero o la lettera, l'anno, il sesso ecc ecc e funziona correttamente.
Quello che dovrei fare ora è "inserendo uno o più parametri". Immagino quindi che oltre alla barra di ricerca per il nome (o per il singolo parametro che decida di usare), debba aggiungere anche quella per un secondo o terzo parametro per la ricerca (ad esempio nome+data di nascita, o nome + luogo di nascita + anno ecc ecc). Come faccio quindi a creare un form con più caselle per la stessa ricerca e poi fare in modo che questa ricerca a più parametri vada a buon fine? Ho provato ad andare ad intuito ma invece di una ricerca incrociata, mi esce l'elenco completo di tutti gli artisti e non va bene.
Probabilmente la soluzione è stupida ma a me non viene in mente (data ancora la scarsa conoscenza di php). Come posso risolvere la cosa?
Vi posto qui le pagine già scritte e funzionanti:
Questa è la pagina iniziale dove ho il form per la ricerca:
<?php
include 'progIntestazione.php';
?>
<form action="progRicerca.php" method="POST">
<input type="text" name="search" placeholder="Nome Autore">
<button type="submit" name="submit-search">Cerca</button>
</form>
<h1>Prima pagina</h1>
<h2>Elenco generale:</h2>
<div class="elenco-autori-opere">
<?php
$sql = "SELECT A.name, O.title
FROM Artista AS A, Opera AS O
WHERE A.id=O.artistId AND A.name=O.artist";
$result = mysqli_query($conn, $sql);
$queryResults = mysqli_num_rows($result);
if ($queryResults > 0) {
echo '<table border: 1px solid #000 ><tr><th>Nome Autore</th><th>Titolo Opera</th></tr>';
while ($row = mysqli_fetch_assoc($result)){
echo "<tr class='tabella-autori-opere'><td>".$row['name']."</td>
<td>".$row['title']."</td></tr>";
}
}
?>
</div>
</body>
</html>
Questa invece è la ricerca vera e propria:
<?php
include 'progIntestazione.php';
?>
<h1>Pagina di ricerca per Autore</h1>
<div class="elenco-autori-opere">
<?php
if(isset($_POST['submit-search'])) {
$search = mysqli_real_escape_string($conn, $_POST['search']);
$anno = mysqli_real_escape_string($conn, $_POST['anno']);
$sql = "SELECT *
FROM Artista
WHERE name LIKE '%$search%' OR id LIKE '%$search%' OR gender LIKE '%$search%' OR dates LIKE '%$search%'";
$result = mysqli_query($conn, $sql);
$queryResult = mysqli_num_rows($result);
if ($queryResult > 0) {
echo '<table border: 1px solid #000 ><tr><th>Id</th><th>Nome</th><th>Sesso</th><th>Date</th><th>Anno di nascita</th><th>Anno di morte</th><th>Luogo di nascita</th><th>Luogo di morte</th><th>url</th></tr>';
while($row = mysqli_fetch_assoc($result)){
echo "<tr class='tabella-autori-opere'><td>".$row['id']."</td>
<td>".$row['name']."</td><td>".$row['gender']."</td><td>".$row['dates']."</td><td>".$row['yearOfBirth']."</td><td>".$row['yearOfDeath']."</td><td>".$row['placeOfBirth']."</td><td>".$row['placeOfDeath']."</td><td>".$row['url']."</td></tr>";
}
}else{
echo "Non ci sono risultati corrispondenti alla tua ricerca!";
}
}
?>
</div>
Infine una cosa che non sto capendo, vi posto l'immagine perchè non saprei come altro descrivere il problema:
A cosa sono dovuti i punti interrogativi? E come posso toglierli facendo vedere correttamente i trattini (ed altre robe) che dovrebbero esserci?