- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- GET + contenuto tabella da MySQL
-
GET + contenuto tabella da MySQL
Salve a tutti.
Sto strutturando il mio sito con MySQL e il PHP che richiama i contenuti dal database con GET.
Ho una pagina index.php e una view.php.view.php
[PHP]
<?php
/// Connessione al database già effettuata
$query="SELECT contenuto FROM pagine WHERE id=$_GET[id]";
$result=mysql_query($query,$connessione);
$righe=mysql_num_rows($result);
for ($i=0;$i<$righe;$i++)
{
$array_result=mysql_fetch_row($result);
$contenuto=$array_result[0];
echo $contenuto;
}
?>
[/PHP]index.php
[HTML]
<a href="view.php?id=13">Cliccami!</a>
[/HTML]Il database contiene una tabella di nome "pagine" che contiene a sua volta le tabelle "contenuto", "titolo" e "id" che è una chiave Primaria con Auto-Increment.
Ora il punto è questo: il sistema funziona benissimo, cliccando su "Cliccami!" visualizzo il contenuto di "About" che corrisponde all' Id 13.
Ora se io volessi fare in modo tale che index.php sia in questo modoindex.php
[HTML]
<a href="view.php?titolo=about">Cliccami!</a>
[/HTML]come dovrei fare ? Sto provando in tutti i modi ma PHP mi dà un errore alla linea 11 (che corrisponde a $righe=mysql_num_rows($result);)
-
where titolo=$_GET['titolo']
atentione i dati prelevati da $_GET e $_POST vanno prima filtrati non bisogna mai fidarsi dei visitatori
-
dovresti passargli nella query MYSql il titolo anzichè l'id ottenendo una cosa simile alla seguente:
$query="SELECT contenuto FROM pagine WHERE titolo=$_GET[titolo]";Però occhio, la sintassi non è un optional di conseguenza la riga va corretta in questo modo:
$query="SELECT contenuto FROM pagine WHERE titolo = '" . $_GET[titolo] . "'";Quando passi una stringa all'interno della query mysql necessita sempre di essere racchiusa tra apici.
Il mio consiglio è quello di passargli la querystring con un ID anzichè una stringa, sia per una questione di sicurezza sia perchè ID è un numero univoco che non verrà mai modificato nel corso della vita della tua applicazione.
-
Poi se usa l'id potrà verifficare meglio se quello che l'utente ha nel link è valido, io al posto tuo farei cosi:
$id = htmlspecialchars(strip_tags($_GET['id']));
if(!is_numeric($id)) echo 'Errore!';
else {
//connessione database;
//istruzioni
}