Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
mysql > CREATE TABLE squadra (
-> id_squadra int(5) NOT NULL auto_increment,
-> nome varchar(25) default ' ',
-> marca varchar(25) default ' ',
-> sponsor varchar(25) default ' ',
-> allenatore varchar(25) default ' ',
-> id_stadio int(3) default ' 0 ',
-> PRIMARY KEY (nome)
-> );
L'interfacciamneto per l'inserimento, modifica e cancellazione ha avuto successo.
Ora però vorrei unire le tabelle associando ad ogni nome e cognome di un giocatore una nome e allenatore della squadra.
So che il comando in mysql per fare ciò è:
SELECT giocatore.nome, giocatore.cognome,
squadra.nome, squadra.allenatore FROM giocatore LEFT JOIN squadra ON
giocatore.id_giocatore=squadra.id_squadra;
e funziona correttamente. Ora però il rpoblema nasce quando devo interfacciare in php la funzione JOIN.
Ho provato a fare [codice PHP]
$sql = "SELECT giocatore.nome, giocatore.cognome,
squadra.nome, squadra.allenatore FROM giocatore LEFT JOIN squadra ON
giocatore.id_giocatore=squadra.id_squadra";
$query_giocatorejoin = @mysql_query($sql) or die (mysql_error());
while($giocatore = my_sql_fetch_array(query_giocatorejoin) {
Riguardati bene la documentazione per questa ultima funzione (mysql_fetch_array), non credo che tu abbia capito bene come funziona... nel tuo codice fai riferimento ad una variabile "$allenatore" che non ho ben capito dove la peschi.
Al posto di usare $giocatore usa una variabile più descrittiva... di solito io chiamo la funzione così:
Mi scusi, ma forse non mi sono spiegato bene:
Io dovrei creare un collegamento tra le due tabelle, associando della tabella squadra il nome della squadra al nome e cognome della tabella giocatore.
Difatti in mysql questa funzione è tradotta con
SELECT giocatore.nome, giocatore.cognome, squadra.nome FROM squadra LEFT JOIN giocatore ON squadra.id_squadra = giocatore.id_giocatore;
Ora il mio problema è come faccio a visualizzare la funzione sopra descritta in php??
Grazie...spero ci siamo capiti
giocala, non fare troppo affidamente alle guide, magari e solo un esempio di illustrazione di una funzione, ma ci sono metodi molto più efficaci appunto quello che ti sta consigliando piero.
questo e quanto piero intendeva spigarti.
un solo ciclo che racchiude dati di una o piu tabelle in sincronia.
molto piu veloce e ordinato.
Assolutamente no, il metodo che hai postato non e' piu' veloce. Anzi.
Non c'e' dubbio che il metodo di TheJuster funziona, ma non e' la miglior via per farlo funzionare. Il codice da te utilizzato causera' molteplici chiamate a mysql_query e mysql_fetch_array (che non sono proprio leggere). Con l'aumentare dei record le performance si faranno sentire.
In questo caso usare le JOIN e' giustissimo ed eri nella giusta via. Ti mancava l'implementazione corretta in PHP.
Partendo dalla tua query: SELECT giocatore.nome, giocatore.cognome, squadra.nome FROM squadra LEFT JOIN giocatore ON squadra.id_squadra = giocatore.id_giocatore;
Intanto bisogna togliere le ambiguita': hai due campi "nome" (uno in giocatore e uno in squadra).
Per questo c'e' la parola AS.
SELECT giocatore.nome AS giocatore_nome, giocatore.cognome AS giocatore_cognome, squadra.nome AS squadra_nome FROM squadra LEFT JOIN giocatore ON squadra.id_squadra = giocatore.id_giocatore;
Il codice sarebbe qualcosa come:
Codice sorgente - presumibilmente Php
$query=mysql_query("SELECT giocatore.nome AS giocatore_nome, giocatore.cognome AS giocatore_cognome, squadra.nome AS squadra_nome FROM squadra LEFT JOIN giocatore ON squadra.id_squadra = giocatore.id_giocatore",$link);
Grazie a tutti ragazzi..Però volevo dirti una cosa piero, il tuo metodo va benissimo solo che mi visualizza tutti i giocatori con la relativa squadra, se io volessi che al selezionare di una squadra mi visualizzi quel determinato giocatore e non gli altri?
dovrei creare un for all'interno del while?
Ciauz
Il problema ora è questo: Come faccio a visualizzare solo il giocatore associato alla squadra? Ho provato a fare un if($id_squadra == $id_giocatore) nel while postato giù in fondo al codice, ma niente non mi visualizza nulla (eppure è strano visto che nel selezionare la squadra mi escono solo le caratteristiche della stessa e non delle altre, vorrei che fosse così anche per la query giocatore)..Come mai?
Ho provato a modificare //Funzione JOIN in
//Funzione JOIN
$query = @mysql_query("SELECT giocatore.nome as giocatore_nome, giocatore.cognome as
giocatore_cognome, squadra.nome as squadra_nome FROM squadra
WHERE id_squadra IN ('$id_squadra')LEFT JOIN giocatore
WHERE id_giocatore IN ('$id_giocatore') ON
squadra.id_squadra = giocatore.id_giocatore");
if(!$query) {
echo "Associazione fallita!";
}
mi da Associazione fallita!...bah?!
[Codice PHP:]
<head>
<title>Gestione Campionati di calcio(dabase_squadra)</title>
</head>
<body>
<?php
// Connettiti col server database
$dbcnx = @mysql_connect('localhost', 'root', 'admin');
if(!$dbcnx) {
echo "Impossibile connettersi al Server";
}
// Seleziona il database
if(!@mysql_select_db('progettoBDSI')) {
echo "Errore nel selezionare il database!..Controllare che il database esista!";
}
//Visualizza le informazioni relative alla squadra selezionata
$id_squadra = $_GET['id_squadra'];
$info_s = @mysql_query("SELECT * FROM squadra WHERE id_squadra IN ($id_squadra)");
//Visualizza le informazioni relative al giocatore
$id_giocatore = $_GET['id_giocatore'];
$info = @mysql_query("SELECT * FROM giocatore WHERE id_giocatore IN ('$id_giocatore')");
if(!$info &&
!$info_s) {
echo '<p>Errore nel selezionare i record!</p>';
}
//Eventuale errore
if(!$info_s)
echo "Errore nel selezionare i record";
echo "<h1><b>Informazioni generali sulla squadra</b></h1><br/>";
//Visualizza i record di squadra
while($values_squadra = mysql_fetch_array($info_s)) {
echo "<b>nome</b>: <i>$values_squadra[nome]</i><br/><br/>
<b>marca maglia</b>: <i>$values_squadra[marca]</i><br/><br/>
<b>sponsor squadra</b>: <i>$values_squadra[sponsor]</i><br/><br/>
<b>allenatore</b>: <i>$values_squadra[allenatore]</i><br/><br/>";
}
echo "<br/><br/><b>FORMAZIONE:</b><br/><br/>";
//Funzione JOIN
$query = @mysql_query("SELECT giocatore.nome as giocatore_nome, giocatore.cognome as
giocatore_cognome, squadra.nome as squadra_nome FROM squadra
LEFT JOIN giocatore ON
squadra.id_squadra = giocatore.id_giocatore");
if(!$query) {
echo "Associazione fallita!";
}
//Visualizza gli elementi associati alla squadra selezionata
while($values = mysql_fetch_array($query)) {
if($id_squadra == $id_giocatore) {
echo "<i>" . $values['giocatore_nome'] . " " . $values['giocatore_cognome'] . "</i><br/><br/>";
} else {
echo "Nn ci sono giocatori in questa squadra";
}
}
?>
<p><a href="new_giocatore.php">Inserisci una rosa di giocatori</a></p>
<p><a href="index.php">Ritorna alla pagina iniziale</a></p>