Salve ragazzi,
vi spiego velocemente in problema. Ho realizzato un piccolo CMS per gestire la pubblicazione di articoli nella home page del mio sito. Per far ciò ho realizzato due tabelle, in una ci sono appunto gli articoli e l'altra l'ho chiamata "priorita". Ecco la prima tabella:
Codice PHP:
CREATE TABLE `articoli`
(
`art_id` int(5) unsigned NOT NULL auto_increment,
`titolo` varchar(255) NOT NULL,
`sottotitolo` varchar(255) default NULL,
`testo` text NOT NULL,
`autore` varchar(50) default NULL,
`data` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`nome` varchar(50) NOT NULL default '',
`size` varchar(25) NOT NULL default '',
`type` varchar(25) NOT NULL default '',
`immagine` longblob NOT NULL,
PRIMARY KEY (`art_id`)
)
Ecco la seconda, quella della priorita:
Codice PHP:
CREATE TABLE `priorita`
(`art_id` int(5) unsigned NOT NULL,
`flags` enum('1','2','3','4','5') NOT NULL default '1',
PRIMARY KEY (`flags`),
UNIQUE KEY (`art_id`)
)
Vi sono due script php che mi permettono di associare determinati articoli ad una specifica priorità. In pratica, ogni priorità corrisponde ad una determinata tabella della Home page, in modo che possa scegliere in quale parte della home page mettere un determinato articolo. Ad esempio, la priorità P1 inserisce il primo articolo in alto nella home page, una sorta di prima notizia. E così via. Vi posto il codice degli script per capirci. Il primo è questo:
Codice PHP:
<?
include("config.php");
mysql_connect($db_host, $db_user, $db_password, $db_name) or die ("non riesco a connettermi");
mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");
// inizializza l'array in cui memorizzare gli articoli che sono prioritari
$priority = array();
// preleva dal db gli articoli prioritari...
$query = "SELECT * FROM priorita ORDER BY flags";
$result = mysql_query($query)
or die(mysql_error());
// ...e li inserisce nell'array
while($row = mysql_fetch_array($result))
{
$flag = $row['flags'];
$priority[$flag] = $row['art_id'];
}
// seleziona gli ultimi 10 articoli e li memorizza in un array
$l_news = array();
$query = "SELECT *
FROM articoli Order by art_id
DESC LIMIT 0,20";
$result = mysql_query($query)
or die(mysql_error());
while($row = mysql_fetch_array($result))
{
$l_news[] = $row['art_id'];
}
// di seguito comincia a mandare in output codice html
?>
<table cellpadding='2' cellspacing='0' border='1'>
<tr>
<?
// 12 sono gli articoli prioritari, i primi 4 sono obbligatori
// cominciamo a scrivere la riga delle intestazioni
for($i =1; $i <= 5; $i ++)
{
// oltre il quinto articolo diamo la possibilita' di cancellare la priorita'
if($i > 4)
{
echo "\t\t<th>[url='p_delete.php?id=$i']P $i[/url]</th>\n";
}
else
{
echo "\t\t<th>P $i</th>\n";
}
}
?>
</tr>
<?
// cicliamo l'array degli articoli e mandiamo in output cio' che server
foreach($l_news as $key2 => $key3)
{
echo "\t<tr>\n";
$data = explode('-', $key3[1]);
for($flag = 1; $flag <= 5; $flag ++)
{
// se l'articolo risulta tra i prioritari gli mettiamo il grassetto e togliamo il link
if(isset($priority[$flag]))
{
if($key3[1] == $priority[$flag])
{
echo "\t\t<td>[b]$key3[1][/b]</td>\n";
}
else
{
echo "\t\t<td>[url='p_insert.php?art_id={$data[0]}&flags=$flag']$key3[1][/url]</td>\n";
}
}
else
{
echo "\t\t<td>[url='p_insert.php?art_id={$data[0]}&flags=$flag']$key3[1][/url]</td>\n";
}
}
echo "\t</tr>\n";
}
?>
</table>
E' commentato, quindi si capisce che fa. Il secondo è questo:
Codice PHP:
<?
// include i files coi parametri di configurazione per il db
include("config.php");
mysql_connect($db_host, $db_user, $db_password, $db_name) or die ("non riesco a connettermi");
mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");
// la prima parte controlla che i dati passati allo script siano corretti
$flags = array(1,2,3,4,5);
$request_data = array(
'art_id',
'flags',
);
if(isset($_GET))
{
foreach($_GET as $key => $value)
{
if(!in_array($key, $request_data))
{
header("Location: [url]http://www.iso-consulenze.it[/url]");
}
$id = (int) $_GET['art_id'];
$flag = (int) $_GET['flags'];
$db_table = 'priorita';
if(!is_numeric($id) || $id < 1 || !in_array($flag, $flags))
{
header("Location: [url]http://www.iso-consulenze.info[/url]");
}
}
// la seconda parte inserisce o aggiorna l'articolo
$query = "SELECT * FROM $db_table WHERE flags = '$flag'";
$result = mysql_query($query)
or die(mysql_error());
if(mysql_num_rows($result) > 0)
{
$query = "UPDATE $db_table SET art_id = '$id' WHERE flags = '$flag'";
$result = mysql_query($query)
or die(mysql_error());
}
else
{
$query = "INSERT INTO $db_table (art_id, flags) VALUES ('$id', '$flag')";
$result = mysql_query($query)
or die(mysql_error());
}
}
header("Location: [url]http://www.iso-consulenze.info/prova[/url] massimo/indexmassi.php?view_mod=priorita");
?>
Anche questo commentato, in pratica serve per inserire gli articoli nella tabella priorità ed assegnargli una determinata priorità da 1 a 5 (contraddistinta dai diversi valori del campo "flags").
Ora, tutto funziona, la tabella "priorità" viene compilata. Il mio problema è questo. Che non riesco a fare in modo di aggiornare la home page con i vari articoli. Le query dovrebbero essere queste:
Codice PHP:
$query = "SELECT * FROM priorita WHERE flags = '1'";
$result = mysql_query($query)
or die(mysql_error());
$row = mysql_fetch_array($result);
$id = $row['art_id'];
$flag = $row['flags'];
$query = "SELECT * FROM articoli WHERE art_id = '$id'";
$result = mysql_query($query)
?>
<?php echo "[b]<a href=\"page.php?id=".$result['art_id']."\">".$row['titolo']."</a>[/b]"; ?>
<?php echo $result['sottotitolo'];?>
Ora, come posso fare in modo di aggiornare la home page e stampare i dati estratti con le query? (in questo caso ad esempio Titolo e Sottotitolo). Se lancio infatti il file che contiene queste query, appunto il file index.php o Home page, non viene visualizzato nulla.
Come mai? Come potrei utilizzare la funzione File_get_contents?
Grazie