Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - problema con interfacciamento php...
Forum - PHP - problema con interfacciamento php... - Pagina 2

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:06
Mercoledì, 02/12/2009
Per semplificarci l'analisi, potresti postarci la struttura delle tue tabelle? Elenca i campi di squadra e giocatore e le loro associazioni.


Il mio blog: https://piero.dev
PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 17:59
Mercoledì, 02/12/2009
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???8-|

Spero di essere stato chiaro..Ciao e grazie ancora.




PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 20:06
Mercoledì, 02/12/2009
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.


Il mio blog: https://piero.dev
PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 20:26
Mercoledì, 02/12/2009
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.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 22:05
Mercoledì, 02/12/2009
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?


Il mio blog: https://piero.dev
PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 15:49
Giovedì, 03/12/2009
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:d
A questo punto mi chiedo, potrebbe essermi utile un ciclo for o if nel while di visualizzazione dei giocatori??8-|

Piero ti ringrazio ancora per la pazienza...

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 15:55
Giovedì, 03/12/2009
Codice sorgente - presumibilmente PHP

  1. SELECT id_giocatore, nome, cognome, nome_s
  2. FROM giocatore, squadra
  3. WHERE giocatore.id_squadra = squadra.id_squadra
  4. AND giocatore.id_squadra = $id_squadra



Il mio blog: https://piero.dev
PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 13:09
Sabato, 05/12/2009
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...

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo