- Home
- Categorie
- Coding e Sistemistica
- Coding
- Aiuto per query di selezione
-
Aiuto per query di selezione
Salve, ho un DB con le seguenti 3 tabelle:
persone
-id
-nome- cognome
persone_tornei
-id_persona
-ID_torneotornei
-ID
-torneo- anno
- tipologia_torneo
Devo fare una pagina per gestire le iscrizioni ai tornei che mi visualizzi per la persona richiamata nell'URL le seguenti informazioni:
Nome **Torneo Situazione Gestisci** Risiko Iscritto Cancella Monopoli Non Iscritto Iscrivi
Io ho creato il seguente codice ma non funziona come vorrei:
[PHP]
<?php
require_once "header.php";
include "connect.php";echo "<a href='index.htm'>Torna alla home</a>";
//Prendi id persona e identificala
$id = $_GET['id'];
$anno = $_GET['anno'];
$tipo = $_GET['tipo'];$persona = @mysql_query("SELECT nome, cognome FROM persone WHERE id='$id' ");
if (!$persona) {
exit('<p>Persona non trovata<br/>'.'Error: '.mysql_error().'</p>');
}
$persona = @mysql_fetch_array($persona);
echo "<h2>Elenco tornei per ".$persona['cognome']." ".$persona['nome']."</h2>";//Tabella tornei a cui puoi iscriversi
$tornei_esistenti = @mysql_query("SELECT tornei.ID AS ID, tornei.torneo AS torneo FROM tornei WHERE tornei.anno='$anno' AND tornei.tipologia_torneo='$tipo' ");
if (!$tornei_esistenti) {
exit('<p>Errore nella selezione dei tornei <br/>'.'Error: '.mysql_error().'</p>');
}$tornei_iscritti = @mysql_query("SELECT ID_torneo FROM persone_tornei WHERE ID_persona='$id' ");
if (!$tornei_iscritti) {
exit('<p>Errore nella selezione dei tornei iscritti<br/>'.'Error: '.mysql_error().'</p>');
}echo "<table border='1' bordercolor='#0000CC' cellpadding='5' cellspacing='0'><tr>";
echo "<td><b>Torneo</b></td>";
echo "<td><b>Situazione</b></td>";
echo "<td><b>Gestione</b></td></tr>";while ($torneo_esistente = @mysql_fetch_array($tornei_esistenti)) {
while ($torneo_iscritto = @mysql_fetch_array($tornei_iscritti)) {
if ($torneo_esistente['ID']==$torneo_iscritto['ID_torneo']) {
echo "<tr>";
echo "<td>".$torneo_esistente['torneo']."</td>";
echo "<td>Iscritto </td>";
echo "<td><a href='cancella_torneo_iscritto.php?id=".$torneo_iscritto['ID_torneo']."'>Cancella</a></td></tr>";
}
else {
echo "<tr>";
echo "<td>".$torneo_esistente['torneo']."</td>";
echo "<td>Non iscritto</td>";
echo "<td><a href='cancella_torneo_iscritto.php?id=".$torneo_iscritto['ID_torneo']."'>Iscrivi</a></td></tr>";
}
}
}echo "</table>";
require_once "footer.php";
?>
[/PHP]
In pratica non penso che funzionino i due cicli while annidati ( e forse non è il modo più semplice per ottenerlo).
Qualcuno ha qualche suggerimento?Grazie
-
Sarebbe meglio facessi il tutto facendo delle JOIN sulle varie tabelle in questo modo ti risparmi cicli annidati o altro.
-
ho seguito il consiglio, ho stravolto tutto il codice e sono riuscito a farlo funzionare
ecco il codice
[PHP]<?php
require_once "header.php";
include "connect.php";
include "core.php";//Prendi id persona e identificala
$id = $_GET['id'];
$anno = $_GET['anno'];
$tipo = $_GET['tipo'];$persona = dbarray(dbquery("SELECT nome, cognome FROM persone WHERE id='$id' "));
echo "<h2>Elenco tornei per ".$persona['cognome']." ".$persona['nome']."</h2>";//Tabella elenco tornei
$tornei = dbquery("SELECT tt.ID, tt.torneo, pt.ID_persona
FROM tornei tt
LEFT JOIN persone_tornei pt ON tt.ID=pt.ID_torneo
WHERE tt.anno='$anno' AND tt.tipologia_torneo='$tipo' ");echo "<table border='1' bordercolor='#0000CC' cellpadding='5' cellspacing='0'><tr>";
echo "<td><b>Torneo</b></td>";
echo "<td><b>Stato</b></td>";
echo "<td><b>Gestione</b></td></tr>";while ($torneo = dbarray($tornei)) {
echo "<tr>"; echo "<td>".$torneo['torneo']."</td>"; echo "<td>".(($id == $torneo['ID_persona']) ? "Iscritto" : "Non iscritto")."</td>"; echo "<td>".(($id == $torneo['ID_persona']) ? "<a href='cancella_persona_torneo.php?ID=".$torneo['ID_persona']."'>Cancella</a>" : "<a href='iscrivi_persona_torneo.php?ID=".$torneo['ID_persona']."'>Iscrivi</a>")."</td></tr>";
}
echo "</table>";
require_once "footer.php";
?>[/PHP]
-
Forse mi sfugge qualcosa vista l'ora...
Ma non potevi fare il JOIN anche con la tabella persone con le altre due?
L'ID non corrisponde a IDPersona?