Visualizzare dati da DB mysql

Daniele Rapinesi

Utente Attivo
7 Gen 2014
60
0
0
Ciao a tutti,
sto facendo un sito per una palestra e vorrei far vedere in una pagina le attività che si svolgono e quelle che potrebbero essere aggiunte, prendendo i dati da un DB mysql.
Il database contiene, ad esempio, 5 attività (sci, calcio, nuoto, basket e tennis), io ho visualizzato "ATTIVITA' SVOLTE": calcio, nuoto con a fianco un link ELIMINA per eliminarle da questa posizione, ma vorrei visualizzare sotto "AGGIUNGI ATTIVITA': sci, basket e tennis (con un link INSERISCI) - ovvero voglio visualizzare le attività che non compaiono sopra (se elimino calcio, calcio passa sotto e sparisce da sopra, se inserisco sci passa sopra e va via da sotto) .....
Ho provato con vari tentativi ma non so come dirgli "mostrami sotto quello che non è mostrato sopra"....

Grazie in anticipo del vostro aiuto !!!
 
Immagino che i dati che stanno sopra li recuperi con una query. Se così fosse per quelli "sotto" fan una query al contrario.

Esempio:
Se sopra nella query hai WHERE posto='sopra'
In quella sotto puoi fare
WHERE posto!='sopra'

In questo modo ti restituisce tutti gli altri elementi della tanella
 
Allora ... ti posto la query che visualizza quelli SOPRA

<?php
$query = "SELECT * FROM tbl_palestra WHERE palestra = '$palestra'";
$res = mysql_query($query);
$row = mysql_fetch_assoc ($res);
$query = "SELECT tbl_attivita.attivita, tbl_attivita.cod_attivita, tbl_palestra_attivita.idattivita, tbl_palestra_attivita.palestra_id
FROM tbl_attivita JOIN tbl_palestra_attivita ON tbl_attivita.cod_attivita = tbl_palestra_attivita.idattivita WHERE palestra_id = '$row[idpalestra]'";
$res = mysql_query($query);
$idpalestra = $row['idpalestra'];

if (mysql_num_rows($res)>0){
echo "<h2>Servizi offerti</h2>";
while ($row = mysql_fetch_assoc($res)){
$palestraid = $row['palestra_id'];
$attivita = $row['attivita'];
$codattivita = $row['cod_attivita'];
$idattivita = $row['idattivita'];
?>
<table width="50%">
<tr>
<td width="20%"><?php echo $attivita ?></td>
<td><?php echo "<a href=\"004_02_elimina_att.php?palestraid=$palestraid&idattivita=$idattivita \" onclick=\"return(confirm('stai eliminando $attivita'))\">ELIMINA</a>" ?></td>
</tr>
</table>
<?php
}
} else {
echo "<h2>Servizi offerti</h2>";
echo "Non ci sono servizi inseriti in questa palestra</b>";
}
?>





Questa è per visualizzare quelli sotto ...

<?php
$query = "SELECT * FROM tbl_attivita";
$res = mysql_query($query);
if (mysql_num_rows($res)>0) {
echo "<h2>Servizi da inserire</h2>";
while ($row = mysql_fetch_assoc($res)) {
?>
<table width="50%">
<tr>
<td width="20%"><?php echo $row['attivita'] ?></td>
<td><?php echo "<a href=\"004_03_inserisci_att.php?palestraid=$idpalestra&idattivita=$row[cod_attivita] \" onclick=\"return(confirm('stai inserendo $row[attivita]))\">INSERISCI</a>" ?></td>
</tr>
</table>
 
se ho capito,

la prima query estrae le attività gestite dalla palestra
Codice:
SELECT 
  A.attivita, 
  A.cod_attivita,
  PA.palestra_id
FROM tbl_attivita A
INNER JOIN tbl_palestra_attivita PA
ON A.cod_attivita = PA.idattivita 
WHERE PA.palestra_id = '$row[idpalestra]'
(poteva essere semplificata con la select su 2 tabelle senza la join)

la seconda estrae le attività NON gestite dalla palestra
Codice:
SELECT 
  A.attivita, 
  A.cod_attivita,
  PA.palestra_id
FROM tbl_attivita A
LEFT JOIN tbl_palestra_attivita PA
ON A.cod_attivita = PA.idattivita 
WHERE PA.palestra_id = '$row[idpalestra]'
AND PA.idattivita is NULL

may be ....
ciao
Marino
 
meglio la via semplice ...
la select per esistente può essere fatta in due modi, che ti riporto
la select per non esistente è la condizione contraria di una delle due precedenti
Codice:
SELECT 
  attivita, 
  cod_attivita,
  palestra_id
FROM tbl_attivita, tbl_palestra_attivita
WHERE cod_attivita = idattivita 
and palestra_id='$row[idpalestra]'
order by cod_attivita

SELECT 
  attivita, 
  cod_attivita
FROM tbl_attivita
WHERE cod_attivita in (select idattivita from tbl_palestra_attivita where palestra_id='$row[idpalestra]')
order by cod_attivita



SELECT 
  attivita, 
  cod_attivita
FROM tbl_attivita
WHERE cod_attivita not in (select idattivita from tbl_palestra_attivita where palestra_id='$row[idpalestra]')
order by cod_attivita

ciao
Marino
 

Discussioni simili