Ho scritto uno script che ha un comportamento un po' strano. Ho usato la funzione array_intersect per intersecare il risultato di due query. Tramite la funzione $risultato[$id] riesco a recuperare l'effettivo indice di una tabella di database. Quando però cerco di recuperare i record nella tabella usando questo come indice, questi record non vengono recuperati. Pensavo si trattasse di un problema di formato della variabile e ho provato a forzare a integer il valore con
Codice PHP:
$idc=$risultato[$id];
settype($idc,integer);
ma stranamente la successiva query sembra non funzionare. Il listato completo è questo:
Codice PHP:
<?php
session_start();
$utente="guest";
$passwd="guest";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
<head>
<title> Visualizzazione congresso </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form method="post" action="d_congresso.php">
Congressi:
<?php
$anno=$HTTP_POST_VARS["anno"];
$luogo=$HTTP_POST_VARS["luogo"];
$con=mysql_connect($host,$utente,$passwd) or die("Connessione non riuscita: " . mysql_error());
mysql_select_db("news") or die("Selezione del database non riuscita");
if($anno != ''){
$nca = "SELECT * FROM congresso,evento WHERE congresso.id_evento=evento.id_evento AND evento.Anno='$anno'";
$querya = mysql_query($nca);
if($rigaa = mysql_fetch_array($querya)){
$ar1=array($rigaa["id_congresso"]);
}
while($rigaa = mysql_fetch_array($querya)){
array_push($ar1,$rigaa["id_congresso"]);
}
}
if($luogo != ''){
$ncl = "SELECT * FROM congresso,evento WHERE congresso.Luogo='$luogo' AND congresso.id_evento=evento.id_evento";
$queryl = mysql_query($ncl);
if($rigal = mysql_fetch_array($queryl)){
$ar2=array($rigal["id_congresso"]);
}
while($rigal = mysql_fetch_array($queryl)){
array_push($ar2,$rigal["id_congresso"]);
}
}
else if($luogo == ''){
$ncl = "SELECT * FROM congresso,evento";
$queryl = mysql_query($ncl);
if($rigal = mysql_fetch_array($queryl)){
$ar2=array($rigal["id_congresso"]);
}
while($rigal = mysql_fetch_array($queryl)){
array_push($ar2,$rigal["id_congresso"]);
}
}
$risultato = array_intersect($ar1,$ar2);
$indici = array_keys($risultato);
?>
<select name="congresso">
<?php
$i=0;
$id=$indici[$i];
while($risultato[$id]) {
$idc=$risultato[$id];
settype($idc,integer);
$rcon = "SELECT * FROM congresso WHERE id_congresso='$idc'";
$queryr = mysql_query($rcon);
$rigar = mysql_fetch_array($queryr);
$ide = $rigar["id_evento"];
settype($ide,integer);
$rev = "SELECT * FROM evento WHERE id_evento='$ide'";
$queryre = mysql_query($rev);
$rigare = mysql_fetch_array($queryre);
echo "<option value='" . $idc . "'>" . $idc . "-" . $rigare["$Titolo"] . "-" . $rigare["$Anno"]. "-" . $rigar["$Luogo"]. "-" . $rigar["$Organizzazione"];
echo "</option>";
$i=$i+1;
$id=$indici[$i];
}
?>
</select>
</p>
<input type="submit" value="Invia >"/>
</p>
<?php
mysql_close($con);
?>
</form>
</body>
</html>
Sapreste per cortesia dirmi dove è il problema?
Grazie