pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Per semplificarci l'analisi, potresti postarci la struttura delle tue tabelle? Elenca i campi di squadra e giocatore e le loro associazioni.
|
|
giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
Allora, innanzitutto mi scuso per la troppa generalità nel scrivere le cose.
Piero ti spiego, io ho due tabelle: squadra, giocatore.
-Tabella SQUADRA -> Inserire una squadra e quindi tutti i suoi campi; OK
- a questo punto ad ogni squadra inserita viene associato un link "INFO" che conterrà tutte le informazioni relative alla squadra selezionata (es. Milan INFO, Juve INFO, ...); OK
- la pagina INFO.php, conterrà i campi di ogni squadra selezionata in precedenza ed un link "Inserisci giocatori"; OK
- A questo punto mi blocco, perchè dovrò far corrispondere il/i giocatore/i inserito/i alla squadra selezionata. Come faccio?
Codice PHP prova.php [visualizza le squadre presenti nel database e il corripsettivo link "INFO":
....
//Richiedi informazioni al database table squadra
$sql_squadra = @mysql_query('SELECT id_squadra, nome FROM squadra');
//Messaggio per un eventuale errore
if(!$sql_squadra) {
echo "<p>WARNING!..Nessuna squadra selezionata.</p>";
}
//Visualizza il nome della squadra
echo "<b>Elenco SQUADRE</b>";
while($result_squadra = mysql_fetch_array($sql_squadra)) {
$id_squadra = $result_squadra['id_squadra'];
echo '<p>' . $result_squadra['id_squadra'] . " " . $result_squadra['nome'] .
"<a href='prova2.php?id_squadra=$id_squadra'>INFO</a>" . '</p>';
}
....
Codice PHP prova2.php [visualizza i campi della sola squadra selezionata ed il corripsettivo link "Inserisci giocatori":
...
//Visualizza le informazioni relativi alla squadra selezionata
$id_squadra = $_GET['id_squadra'];
$info_squadra = @mysql_query("SELECT * FROM squadra WHERE id_squadra IN ('$id_squadra')");
//Eventuale errore
if(!$info_squadra) {
echo '<p>Errore nel selezionare i record!</p>';
}
echo '<b>Info SQUADRA:</b><ul>';
while($result_info_squadra = mysql_fetch_array($info_squadra)) {
echo "<b>nome</b>: <i>$result_info_squadra[nome]</i><br/><br/>
<b>marca</b>: <i>$result_info_squadra[marca]</i><br/><br/>
<b>sponsor</b>: <i>$result_info_squadra[sponsor]</i><br/><br/>
<b>allenatore</b>: <i>$result_info_squadra[allenatore]</i><br/><br/>";
}
echo '</ul>';
?>
<p><a href="prova3.php">Inserisci giocatori</a></p>
...
Codice PHP prova3.php [visualizza il form per l'inserimento dei dati relativi al singolo giocatore:
...
//Inserisci le squadre
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$data_nascita = $_POST['data_nascita'];
$luogo_nascita = $_POST['luogo_nascita'];
$cittadinanza = $_POST['cittadinanza'];
$peso = $_POST['peso'];
$altezza = $_POST['altezza'];
$sql = "INSERT INTO giocatore SET
nome = '$nome',
cognome = '$cognome',
data_nascita = '$data_nascita',
luogo_nascita = '$luogo_nascita',
cittadinanza = '$cittadinanza',
peso = '$peso',
altezza = '$altezza'";
//Condizione per un eventuale errore
if(@mysql_query($sql)) {
echo '<p>Giocatore inserito correttamente</p>';
} else {
echo '<p>Errore!..Inserimento fallito!</p>';
}
....
A questo punto sorge il problema, una volta che carico il giocatore con i rispettivi campi, devo associarlo alla squadra selezionata in precedenza.
Es: Lista squadre
Milan INFO
Juve INFO
Lecce INFO
-> Clicco su Lecce INFO
-> Visualizzo i campi relativi alla squadra, quindi sponsor, marca, ...
-> Clicco sul link "Inserisci giocatori"
-> Inserisco i dati giocatori
-> Problema: Come faccio ad associare il giocatore inserito alla squadra Lecce???
Spero di essere stato chiaro..Ciao e grazie ancora.
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
La tua tabella giocatori deve avere un campo id_squadra che si riferisce alla squadra.
Ad esempio se Milan ha ID 5, quando inserisci un giocatore del Milan nel suo campo id_squadra inserirai 5.
|
|
giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
Scusami piero, se ho capito bene dovrei inserire
id_squadra int(5) NOT NULL auto_increment
nella tabella giocatore di mysql?..
Con la funzione join associare quindi id_squadra con gli 11 id_giocatori inseriti nel form?
Giusto?..
Grazie comunque.
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Ho guardato adesso lo schema che hai postato nel primo topic, e il campo id_squadra c'e' gia' nella tabella giocatori. Quindi lo schema delle tabelle e' a posto.
Ora tutte le altre operazioni le puoi gestire con SQL. Quando crei un giocatore (come ti ho spiegato nel post precedente) assegni al campo id_squadra l'ID della squadra che il giocatore appartiene. Nel caso del Milan, se Milan ha ID 5, inserirai un giocatore appartenente al Milan settando il suo campo id_squadra a 5.
Qual'e' il problema?
|
|
giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
Il problema piero è che mi visualizza tutti i giocatori appartenti alle squadre e non alla singola squadra selezionata.
Codice PHP
....
//Visualizza le informazioni relativi alla squadra selezionata
$id_squadra = $_GET['id_squadra'];
$info_squadra = @mysql_query("SELECT * FROM squadra WHERE id_squadra IN ('$id_squadra')");
//Eventuale errore
if(!$info_squadra) {
echo '<p>Errore nel selezionare i record!</p>';
}
echo '<b>Info SQUADRA:</b><ul>';
while($result_info_squadra = mysql_fetch_array($info_squadra)) {
$id_squadra = $result_info_squadra['id_squadra'];
echo "<b>nome</b>: <i>$result_info_squadra[nome_s]</i><br/><br/>
<b>marca</b>: <i>$result_info_squadra[marca]</i><br/><br/>
<b>sponsor</b>: <i>$result_info_squadra[sponsor]</i><br/><br/>
<b>allenatore</b>: <i>$result_info_squadra[allenatore]</i><br/><br/>";
}
echo '</ul>';
//Funzione JOIN associa i giocatori alla squadra selezionata
$join = @mysql_query ("SELECT id_giocatore, nome, cognome, nome_s FROM giocatore, squadra
WHERE giocatore.id_squadra = squadra.id_squadra");
//Eventuali errori
if(!$join) {
echo "Errore JOIN!";
}
//Visualizza i giocatori associati
echo "<br/><b>ROSA di giocatori</b>:" . " " . " " .
"<a href='prova3.php?id_squadra=$id_squadra'>Inserisci giocatori</a>" . "<br/><ul>";
while ($values_giocatori = mysql_fetch_array($join)) {
$id_giocatore = $values_giocatori['id_giocatore'];
$nome = $values_giocatori['nome'];
$cognome = $values_giocatori['cognome'];
echo "<p><b>nome</b>: <i>$nome $cognome</i> " .
"<a href='prova4.php?id_giocatore=$id_giocatore'>INFO</a>" . "<br/>";
}
echo '</ul>';
..
La funzione join prende tutti gli id_squadra della tabella squadra e li associa correttamente agli id_squadra della tabella giocatori. OK
Io però vorrei che al selezionare INFO della squadra Milan, mi visualizzasse solo i giocatori del milan e non, ad esempio, anche quelli della juve...
Come posso fare?
Ho provato a modificare la funzione join in
$join = @mysql_query ("SELECT id_giocatore, $id_squadra, nome, cognome, nome_s FROM giocatore, squadra
WHERE giocatore.id_squadra = squadra.('$id_squadra')");
ma niente mi da errore
A questo punto mi chiedo, potrebbe essermi utile un ciclo for o if nel while di visualizzazione dei giocatori??
Piero ti ringrazio ancora per la pazienza...
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Codice sorgente - presumibilmente PHP |
SELECT id_giocatore, nome, cognome, nome_s FROM giocatore, squadra WHERE giocatore.id_squadra = squadra.id_squadra AND giocatore.id_squadra = $id_squadra
|
|
|
giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
Piero mi è sorto un altro problema nel collegare altre tabelle...Ti spiego
Ho due altre tabelle
Tabella Campionato_naz:
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| id_campionato | varchar(5) | NO | PRI | | |
| anno | int(4) | YES | | 0 | |
| nazione | varchar(25) | YES | | NULL | |
| attivo | smallint(1) | YES | | 0 | |
+---------------+-------------+------+-----+---------+-------+
tabella stadio
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id_stadio | int(3) | NO | UNI | NULL | auto_increment |
| nome | varchar(25) | NO | PRI | | |
| citt� | varchar(25) | NO | PRI | | |
| nazione | varchar(25) | YES | | | |
+-----------+-------------+------+-----+---------+----------------+
Ho creato due file.php
index.php:
//Leggi il campo id_campionato
$campionato = @mysql_query("SELECT id_campionato, nazione FROM campionato_naz");
if(!$campionato) {
echo "Errore nel selezionare la query campionato_naz";
}
//Visualizza il campo id_campionato con un link INFO
echo "<ul><ul><b><i>Campionato nazionale</b></i></ul></ul>";
while ($result_campionato = mysql_fetch_array($campionato)) {
$id_campionato = $result_campionato['id_campionato'];
$nazione = $result_campionato['nazione'];
echo '<p>' . '<ul><ul>' . '<i>' . $result_campionato['id_campionato'] . '</i>' . " " .
"<a href='info_campionato.php?id_campionato=$id_campionato?nazione=$nazione'> INFO</a>" . '</ul></ul>';
}
info_campionato.php
//Visualizza le informazioni relative al campionato selelzionato
$nazione = $_GET['nazione'];
$id_campionato = $_GET['id_campionato'];
$campionato = @mysql_query("SELECT * FROM campionato_naz WHERE id_campionato IN ('$id_campionato') AND nazione IN ('$nazione)");
if(!$campionato) {
echo "Errore nel selezionare la query campionato_naz";
}
while($result_campionato = mysql_fetch_array($campionato)) {
$id_campionato = $result_campionato['id_campionato'];
$nazione = $result_campionato['nazione'];
//Condizione per valutare l'attvità o inattività del campionato
if($result_campionato['attivo'] == 0) {
echo "<ul>Campionato inattivo" . //Link per attivare il campionato
"<a href='attiva_campionato.php?id_campionato=$id_campionato'> ATTIVA</a>" . "</ul>" . "<br/>";
}
if($result_campionato['attivo'] == 2) {
echo "Stagione conclusa!";
} else{
echo "<b>nome</b>: <i>$result_campionato[id_campionato]</i><br/><br/>
<b>anno</b>: <i>$result_campionato[anno]</i><br/><br/>
<b>nazione</b>: <i>$result_campionato[nazione]</i><br/><br/>
<b>attivo</b>: <i>$result_campionato[attivo]</i><br/></br>";
}
}
Il problema è il seguente: in questo modo non mi visualizza le informazioni relative alla tabella info_campionato. Ho notato questo però:
se io cambio il link da
"<a href='info_campionato.php?id_campionato=$id_campionato?nazione=$nazione'> INFO</a>" . '</ul></ul>';
a
"<a href='info_campionato.php?id_campionato=$id_campionato'> INFO</a>" . '</ul></ul>';
tutto fila liscio, la visulizzazione ha esito positivo.
Ma a me servirebbe che mi prendesse in cosiderazione anche la nazione perchè poi dovrò fare un JOIN con una terza tabella...
Come mai mi da quest'intoppo?..e come posso risolverlo?
Ringranzio anticipatamente...
|
|