Problema risultati duplicati

  • Creatore Discussione Creatore Discussione dny18
  • Data di inizio Data di inizio

dny18

Nuovo Utente
16 Feb 2015
18
0
0
Ciao a tutti,
Ho creato le seguenti tabelle

giocatore
id | numero | nome | ruoloid | data | squadraid

posizione_giocatore
gicoatoreid | posizioneid

posizione
id | nome_posizione

ruolo
id | nome_ruolo

squadra
id | nome_squadra

Ho creato un form per inserire i giocatori per poi visualizzarli in un elenco in una tabella, con le seguenti colonne:

numero | nome | nome_ruolo | data | nome_posizione | nome_squadra

Riesco ad inserire tutti i dati nel database correttamente, mentre nel visualizzare i risultati ho un problema con la colonna nome_posizione che mi dovrebbe elencare tutti le posizioni in campo che un giocatore può coprire (attaccante, attaccante esterno ec...).

Esempio di come dovrebbe essere:
7 Ronaldo ATT 05/02/1985 AS, ATT, AD Real Madrid

Invece, come risultato ho questo:
7 Ronaldo ATT 05/02/1985 AS Real Madrid
7 Ronaldo ATT 05/02/1985 ATT Real Madrid
7 Ronaldo ATT 05/02/1985 AD Real Madrid

Posto il codice:

index.php code:

PHP:
include $_SERVER['DOCUMENT_ROOT'] . '/manualmanager/includes/db.inc.php';

try
{
  $result= $pdo->query ("SELECT giocatore.id, numero, nome, nome_ruolo, anno, DATE_FORMAT(anno, '%d-%m-%Y') as anno, nome_squadra, nome_posizione
          FROM giocatore
		  INNER JOIN ruolo ON ruoloid= ruolo.id
		  INNER JOIN squadra ON squadraid= squadra.id
		  INNER JOIN posizione_giocatore ON giocatore.id= giocatoreid
		  INNER JOIN posizione ON posizioneid= posizione.id
		  
			");	
		  			   
					  
}
catch (PDOException $e)
{
  $error = 'Errore nel recupero dei giocatori dal database' . $e->getMessage();
  include 'error.html.php';
  exit();
}


$giocatori=array();

foreach ($result as $row)
{
  $giocatori[] = array('id'=> $row['id'], 'numero' =>$row['numero'], 'nome'=> $row['nome'], 'nome_ruolo'=> $row['nome_ruolo'], 'anno'=> $row['anno'], 'nome_posizione'=> $row['nome_posizione'], 'nome_squadra'=> $row['nome_squadra']);
}


include 'giocatori.html.php';



giocatori.html.php code:

PHP:
<?php include_once $_SERVER['DOCUMENT_ROOT'] . '/manualmanager/includes/helpers.inc.php'; ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Gestione Giocatori</title>
</head>
<body>
<h1>Gestione Giocatori</h1>
<p><a href="?add">Aggiungi un giocatore</a></p>
<ul>
 <?php foreach ($giocatori as $giocatore): ?>
 <li>
  <form action="" method="post">
   <div>
   <input type="hidden" name="id" value=" <?php echo $giocatore['id']; ?> "> 
   <?php htmlout($giocatore['numero']); ?>
   <?php htmlout($giocatore['nome']); ?> 
   <?php htmlout($giocatore['nome_ruolo']); ?> 
   <?php htmlout($giocatore['anno']); ?>
   <?php htmlout($giocatore['nome_posizione']); ?> 
   <?php htmlout($giocatore['nome_squadra']); ?> 
    
   
   
   
   <input type="submit" name="action" value="Edit">
   <input type="submit" name="action" value="Delete">
   </div>
  </form>
 </li>
 <?php endforeach; ?>
</ul>
  
</body>
</html>

Mi date una mano?

Grazie
 
Prova intanto a vedere se c'è solo un cristiano ronaldo nel database con un solo ruoloid.
 
Sempre controllando nel database (visto che la query mi sembra corretta) vedi se nella tabella RUOLO ci sono più ruoli con lo stesso id.
 
Allora nella tabella ruolo non ci sono doppioni, mentre nella tabella posizione_giocatore, che è una tabella di lookup, nella colonna giocatoreid ci sono tre id uguali (Ronaldo) ognuno di questi associato ad una posizioneid (AS, ATT, AD).
 
Gli id sono identificativi e non devono MAI essere uguali.
Metti un valore diverso agli id (1,2,3 per AS,ATT,AD) altrimenti non ha senso.
 

Discussioni simili