ciao a tutti, riscrivo l'intervento allegando tutto il codice, visto che non avevo avuto risposta.
sto da giorni tentando di risolvere questa magagna: ho un database con una tabella 'opera' che contiene degli scritti, ho fatto un prodotto cartesiano con la tabella 'utenti' che contiene gli autori degli scritti. Ho fatto una form per effettuare il browsing delle opere per tipo, autore, soggetto e tipologia. Per fare le query ho aggiunto la variabile $aggiunta ad una query base. inizialmente $aggiunta = ""; poi a seconda dei campi secondo cui uno effettua la ricerca cambia valore.
Nonostante abbia più volte ricontrollato, l'unico effetto che la ricerca con questa query produce, per qualsiasi campo io cerchi, è di darmi tutti i valori degli scritti meno il primo. Che può essere?
Grazie a chi mi risponderà.
Codice PHP:
function enum_select($table,$field) {
$result=mysql_query("SHOW COLUMNS FROM `$table` LIKE '$field'");
if(mysql_num_rows($result)>0){
$row=mysql_fetch_row($result);
$options=explode("','", preg_replace("/(enum|set)\('(.+?)'\)/","\\2", $row[1]));
$options2 = array();
foreach ($options as $value) {
$options2[] = array(
'value' => $value
);
}
echo "
";
print_r($options2);
foreach ($options as $value)
echo $value;
} else {
$options=array();
}
return $options2;
}
echo "
<form action=\"?go=scritti\" method=\"POST\">
<h4>cerca per titolo</h4>
";
echo "
<input type=\"text\" name=\"titolo\" />
<h4>cerca per autore <span>(inserisci cognome)</span></h4>
";
echo "
<input type=\"text\" name=\"autore\" />
[*]
<h4>cerca per tipologia</h4>
<select name=\"scegli_tipo\">
<option></option>
";
$matrioshka_tipo = enum_select("opera","opera_tipo");
foreach ($matrioshka_tipo as $array_interno)
foreach ($array_interno as $valore)
if (isset($_POST['scegli_tipo']) && $_POST['scegli_tipo'] == $valore)
echo "<option value='{$valore}' selected='selected'>{$valore}</option>";
else
echo "<option value='{$valore}'>{$valore}</option>";
echo "
</select>
<h4>scegli per soggetto</h4>
<select name=\"scegli_soggetto\">
<option></option>
";
$matrioshka_soggetto = enum_select("opera","opera_soggetto");
foreach ($matrioshka_soggetto as $array_interno)
foreach ($array_interno as $valore2)
if (isset($_POST['scegli_soggetto']) && $_POST['scegli_soggetto'] == $valore2)
echo "<option value='$valore2' selected='selected'>$valore2</option>";
else
echo "<option value='$valore2'>$valore2</option>";
echo "
</select>
<input type=\"submit\" name=\"cerca\" value=\"cerca\">
</form>
";
$aggiunta = "";
if (isset($_POST['cerca'])){
if (
($_POST['titolo'] == "" && $_POST['autore'] == "" && $_POST['scegli_tipo'] == "" && $_POST['scegli_soggetto'] == "") ||
($_POST['titolo']!= "" && strlen($_POST['titolo']) < 4) || ($_POST['autore']!= "" && strlen($_POST['autore']) < 4)
)
echo "<div class=\"pren_compl\">non hai inserito neppure un valore valido</div>";
else
{
$sql_cerca_opere = mysql_query("
SELECT *
FROM utenti, opera
WHERE opera_approvazione = 1
AND utenti_approvazione = 1
AND opera_autore = utenti_id
{$aggiunta}
ORDER BY opera_id
");
$dati_opere = mysql_fetch_array($sql_cerca_opere);
if ($_POST['titolo'] != "" && strlen($_POST['titolo']) >= 4 )
$aggiunta .= "AND opera_titolo LIKE '%" .ucwords($_POST['titolo']). "%' ";
if ($_POST['autore'] != "" && strlen($_POST['autore']) >= 4)
$aggiunta .= "AND utenti_cognome LIKE '%" .ucwords($_POST['autore']). "%' ";
if ($_POST['scegli_tipo'] != "")
$aggiunta .= "AND opera_tipo = {$_POST["scegli_tipo"]}";
if ($_POST['scegli_soggetto'] != "")
$aggiunta .= "AND opera_soggetto = {$_POST["scegli_soggetto"]}";
$conta_righe = mysql_num_rows($sql_cerca_opere);
if ($conta_righe == 0)
echo "Non ci sono risultati presenti nel database";
else
{
echo "
<table>
<tr>
<th>ID</th><th>foto</th><th>titolo</th><th>autore</th><th>testo</th><th>tipo</th><th>soggetto</th><th>commento</th><th>data</th>
</tr>
";
while ($dati_opere = mysql_fetch_array($sql_cerca_opere)){
$foto = "img_scritti/{$dati_opere["opera_id"]}.jpg";
$foto_esiste = file_exists($foto);
$giorno = substr($dati_opere["opera_data"], 8, 2);
$mese = substr($dati_opere["opera_data"], 5, 2);
$anno = substr($dati_opere["opera_data"], 0, 4);
$data_formatt = $giorno."/".$mese."/".$anno;
$sql_commenti = mysql_query("
SELECT *
FROM commenti_scritti
WHERE commenti_opera = {$dati_opere["opera_id"]}
ORDER BY commenti_id
");
$dati_commenti = mysql_fetch_array($sql_commenti);
echo "
<tr>
<td>{$dati_opere["opera_id"]}</td>
<td>
";
if ($foto_esiste)
echo "<a href=\"{$foto}\" rel=\"lightbox\" title=\"{$dati_opere["opera_titolo"]}\"><img class=\"table\" src=\"{$foto}\" alt=\"\" /></a>";
else
echo "<img class='table' src=\"images/noimg_opere.gif\" alt=\"\" />";
echo "</td>";
echo "
<td>{$dati_opere["opera_titolo"]}</td>
<td>{$dati_opere["utenti_cognome"]}</td>
<td>";
$sometext = $dati_opere["opera_testo"];
$lines = explode(" ", $sometext);
if (count($lines) > 14)
for ($j=0; $j<16; $j++)
echo $lines[$j]. " ";
else
echo $sometext;
echo "
[url='?go=leggi_scritto&id={$dati_opere["opera_id"]}']va' al testo completo[/url]</td>
<td>{$dati_opere["opera_tipo"]}</td>
<td>{$dati_opere["opera_soggetto"]}</td>
<td>{$dati_commenti["commenti_testo"]}</td>
<td>{$data_formatt}</td>
</tr>
"; };
echo "</table>";
};
}
}