Ciao ragazzi...sono nuovissimo!!!
Prima di tutto un grande saluto
Avrei bisogno del vostro aiuto..
Io non me ne intendo molto di php, ma devo realizzare un sito per un corso all'università..
Vi spiego il mio problema..
Ho una query sql che legge da un db il campo "titolo", che è una variabile GET, e mi restituisce in echo il titolo e il testo dei vari campi..
Il problema è che quando ho titoli con apostrofi, me li interpreta come apici , quindi mi da' errore nella query.. che diavolo posso fare??
Vi spiego quello che ho provato a fare io:
1. Nella pagina di inserimento dei dati nel db la funzione htmlentities per codificare gli apici singoli (') come apostrofi, e tutti i caratteri speciali. Ma non funzionava ugualmente..
2. Allora sempre in quella pagina ho aggiunto la funzone str_replace che mi modifica la codifica dell'apice in apostrofo vero e proprio (&prime)
Questo è il codice della pagina di inserimento
codice:
<? session_start();
?>
<div align="right">
<table width="85%" id="titoli" cellpadding="5">
<tr>
<td align="center" valign="top" width="15%"><font face="Verdana" size="4">Leggi</font></td>
<td align="center" valign="top" width="15%"><font face="Verdana" size="4">
Scrivi</font></td>
<td align="center" valign="top" width="15%"><font face="Verdana" size="4">Modifica</font></td>
<td align="center" valign="top" width="15%"><font face="Verdana" size="4">Segnala</font></td>
</tr></table></div>
<?
//creo una nuova connessione con i parametri della variabile.inc
include("variabile.inc");
$conn = @new mysqli($host, $user, $pwd, $db_name);
//controllo la connessione, e eventualmente gestisco l'errore
if (mysqli_connect_errno() != 0) {
$err_no = mysqli_connect_errno();
$err_msg = mysqli_connect_error();
echo "Errore nella connessione: $err_msg ($err_no)";
}
else { $conn -> query("SET NAMES 'utf8'");
$testo = htmlentities ($_POST['text'],ENT_QUOTES);
$titolo = htmlentities ($_POST['titolo'],ENT_QUOTES);
$titolomod = str_replace ("'", "&prime",$titolo);
$aut = htmlentities($_POST['autore'],ENT_QUOTES);
$sql_text = "INSERT INTO articoli (titolo, testo, autore) VALUES
('$titolomod','$testo','$aut')";
$ris_text = $conn -> query($sql_text);
if ( $ris_text === FALSE ) {
$err_no = $conn -> errno;
$err_msg = $conn -> error;
echo "Errore nella query: $err_msg ($err_no)";}
else {
echo "
Articolo inserito correttamente
";}
}
$conn -> close() ?>
Mentre la pagina che accede al database per visualizzare i risultati, è molto semplice.
Ora non mi dà errore nella query, ma non mi associa alcun valore all'echo, perchè, credo, nel url il get del titolo mi aggiunge alcuni caratteri (ad esempio %%"%)..
Questo è il codice
codice:
<? $art = $_GET['risultato'] ;
$art2 = $_GET['articolo'] ;
include ('variabile.inc');
$conn = @new mysqli($host, $user, $pwd, $db_name);
if (mysqli_connect_errno() != 0) {
$err_no = mysqli_connect_errno();
$err_msg = mysqli_connect_error();
echo "Errore nella connessione: $err_msg ($err_no)";
}
else {
$conn -> query("SET NAMES 'utf8'");
$sql = "SELECT * FROM articoli where titolo= '$art' or titolo = '$art2'";
$ris = @$conn -> query($sql);
if ( $ris === FALSE ) {
$err_no = $conn -> errno;
$err_msg = $conn -> error;
echo "Errore nella query: $err_msg ($err_no)";
}
else {if($rec = $ris -> fetch_assoc()) {
$ric = $rec['testo'];
echo $ric;
echo $rec['titolo']; }
else {echo "nessuna corrispondenza";}
$ris -> close();
$conn -> close();}
}
?>
Qualcuno ha qualche suggerimento o idea???
Grazie sto impazzendo da 5 giorni...