Relazionare 2 tabelle

leon-kennedy

Utente Attivo
19 Mag 2010
147
0
0
Ciao a tutti...scusate torno a rompervi le scatole,ma vorrei il vostro aiuto!0:)
Devo mettere in relazione 2 tabelle...potete aiutarmi o spiegarmi con un esempio pratico?

PHP:
<?php 
//giocatori 
$team = $_SESSION['username']; 
$query = "SELECT * FROM GIOC_giovani WHERE squadra = '$team' ORDER BY numero ASC"; 
$result = mysql_query($query) or die (mysql_error()); 
while($row = mysql_fetch_array($result)){ 
$costo = number_format($row['costo'], "0", "", ".");  

echo <<<END 
<table> 
        <tr> 
        <td width="30px"><a href="modifica_num.php?id_gioc={$row['id']}">{$row['numero']}</a></td> 
        <td width="125px">{$row['nome']}</td> 
        <td width="125px">{$row['cognome']}</td> 
        <td width="50px">{$row['ruolo']}</td> 
        <td width="50px">{$row['età']}</td> 
        <td width="130px">$costo €</td> 
        <td width="90px">Salute: {$row['forma_fisica']}</td> 
        <td width="90px">Morale: {$row['morale']}</td> 
        </tr> 
</table> 
END; 
} 
//portieri 
$query = "SELECT * FROM GIOC_giovani_port WHERE squadra = '$team' ORDER BY numero ASC"; 
$result = mysql_query($query) or die (mysql_error()); 
while($row = mysql_fetch_array($result)){ 
$costo = number_format($row['costo'], "0", "", ".");  
echo <<<END 
<table> 
        <tr> 
        <td width="30px"><a href="modifica_num_port.php?id_gioc={$row['id']}">{$row['numero']}</a></td> 
        <td width="125px">{$row['nome']}</td> 
        <td width="125px">{$row['cognome']}</td> 
        <td width="50px">{$row['ruolo']}</td> 
        <td width="50px">{$row['età']}</td> 
        <td width="130px">$costo €</td> 
        <td width="90px">Salute: {$row['forma_fisica']}</td> 
        <td width="90px">Morale: {$row['morale']}</td> 
        </tr> 
</table> 
END; 
} 
?>

Vorrei che i risultati di "SQUADRA_giovani" e "SQUADRA_giovani_port" venissero messi in ordine crescente in base al numero...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
cosa intendi per mettere in relazione? se voi invece ordinare i dati in modo discendente (dal più grande al più piccolo) devi usare DESC, al contrario ASC (che è il modo di default di ORDER BY).
mettere in relazione due tabelle (almeno secondo me) vuol dire operare su due tabelle una in funzione di alcuni valori dell'altra (es nelle join).
ma forse ho capito male cosa intendi.
anche se (forse) mi sembra di capire cosa ti capita. esempio hai i giocatori
1 portiere
2 terzino dx
3 terzino sx
ecc..
10 attaccante dx
11 attaccante sx

se i "numeri" non sono numeri ma stringhe (varchar in tabella?) è facile che l'ordine DESC diventi

1 portiere
10 attaccante dx
11 attaccante sx
2 terzino dx
3 terzino sx
ecc...

se ti capita così è perche la stringa "11" viene alfabeticamente prima della stringa "2"
se è questo e vuoi l'ordine esatto forse ti conviene trattare i numeri come interi (int(2) in tabella) e allora l'ordine viene giusto
 

leon-kennedy

Utente Attivo
19 Mag 2010
147
0
0
Ciao io ho la tabella GIOC_giovani (dove ci sono tutti i ruoli tranne il portiere) e quella GIOC_giovani_port(dove ci sono i portieri)...

Come vedi io estraggo i dati dalle due tabelle e ripeto per due volte "ORDER BY numero BY ASC" e mi viene un risultato così:

il campo "numero" è INT (2) da 1 a 99

E quindi vengono ordinati distintamente,io vince vorrei ottenere un ordine generico così:

1 PT
2 PT
4 DF
5 CC
7 ES
10 AT
12 PT

C'è un modo? :)
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prova in questo modo (ma non so se funzi, non sono molto esperto nelle join)
PHP:
<?php
//.....
$query = "SELECT * FROM GIOC_giovani AS giov,GIOC_giovani_port AS port  WHERE giov.squadra = '$team' AND port.squadra = '$team' ORDER BY numero ASC";
$result = mysql_query($query) or die (mysql_error()); 
echo "<table>";
while($row=mysql_fetch_array($result)){
$costo = number_format($row['costo'], "0", "", ".");   
echo <<<END   
        <tr>  
        <td width="30px"><a href="modifica_num.php?id_gioc={$row['id']}">{$row['numero']}</a></td>  
        <td width="125px">{$row['nome']}</td>  
        <td width="125px">{$row['cognome']}</td>  
        <td width="50px">{$row['ruolo']}</td>  
        <td width="50px">{$row['età']}</td>  
        <td width="130px">$costo €</td>  
        <td width="90px">Salute: {$row['forma_fisica']}</td>  
        <td width="90px">Morale: {$row['morale']}</td>  
        </tr>
END;  
}
echo "</table>";
//....
?>
se non funzia non mandarmi....prima o poi una soluzione salta fuori
posta gli eventuali messaggi di errore, poi metti eventuali var_dump e dimmi cosa risulta

p.s.
sia che funzi o no porta il tag <table></table> fuori dal ciclo while, perche vuoi fare 100 tabelle? quando ti bastano le righe/colonne?

p.s. al ps
mi è venuto un dubbio al bosto di AND poi prova OR
 

leon-kennedy

Utente Attivo
19 Mag 2010
147
0
0
PHP:
<?php
$team = $_SESSION['username'];  
$query = "SELECT * FROM GIOC_giovani AS giov,GIOC_giovani_port AS port  WHERE giov.squadra = '$team' AND port.squadra = '$team' ORDER BY numero ASC";  
$result = mysql_query($query) or die (mysql_error());  
echo "<table>";
while($row = mysql_fetch_array($result)){  
$costo = number_format($row['costo'], "0", "", ".");   

echo <<<END
	<tr>   
        <td width="30px"><a href="modifica_num.php?id_gioc={$row['id']}">{$row['numero']}</a></td>   
        <td width="125px">{$row['nome']}</td>   
        <td width="125px">{$row['cognome']}</td>   
        <td width="50px">{$row['ruolo']}</td>   
        <td width="50px">{$row['età']}</td>   
        <td width="130px">$costo €</td>   
        <td width="90px">Salute: {$row['forma_fisica']}</td>   
        <td width="90px">Morale: {$row['morale']}</td>   
        </tr> 
END;
}  
echo "</table>";
?>
Ciao...innanzitutto grazie per la risposta!Non ti ci manderei mai,perchè almeno ci provi a darmi una mano! :p
Per prima cosa ho messo il tag <table> fuori dal ciclo while...
Ho provato la tua soluzione sia con AND e con OR e mi restituisce questo errore:

Column 'numero' in order clause is ambiguous
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
immaginavo, ci avevo penbsato tutta la notte e mi era venuto il dubbio.
se hai pazienza guardo la clausolo UNION e (forse) ti so dire.
ma fai comunque una prova
ORDER BY giov.numero, port.numero
anche se credo che non sia la via giusta
 

leon-kennedy

Utente Attivo
19 Mag 2010
147
0
0
Ok,grazie! :)
Provo come mi hai detto!

EDIT:
Ho trovato quest'altra soluzione e funziona :D

PHP:
$query = "SELECT * FROM GIOC_giovani WHERE squadra = '$team' UNION SELECT * FROM GIOC_giovani_port WHERE squadra = '$team' ORDER BY numero ASC";
Grazie mille per l'aiuto!! :)
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
stavo postando la soluzione che hai trovato, siamo giunti allo stesso punto:),
per quello che riguarda l'id, ora do un occhio poi ti so dire
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto puoi fare questo
1. nella pagina modifica_num.php metti il nome della pagina in cui hai
td width="30px"><a href="modifica_num.php?id_gioc={$row['id']}">{$row['numero']}</a></td>
(non sapendo come la chiami metto un nome a caso, poi tu lo cambi)

PHP:
<?php
$arrivo=basename($_SERVER['PHP_SELF']);
if($arrivo !="pagina_con_id.php"){
	header("Location: http://www.tuo_dominio.it/pagina_con_id.php/");
}else{
	$id_trasmesso=htmlspecialchars($_GET['id_gioc']);
	//qui tutto quello che devi fare nella pagina modifica_num.php
}
?>
queto impedisce intanto che uno possa scrivere sulla riga di comando del bw l'indirizzo della pagina non riesce ad accedere.
2. poi potresti convertire l'id in una base arbitraria e poi riconvertirlo
PHP:
<?php
while($row = mysql_fetch_array($result)){  
$costo = number_format($row['costo'], "0", "", ".");   
$id_conv=base_convert($row['id'],10,16);//lo converti in esadecimale oppure in una base qualsiasi
//$id_conv=base_convert($row['id'],10,3);
//eventualmete prima di convertirlo poi fare delle operazioni matematiche in modo che il valore dell'id non parta da 1
//es
//$id_mod=$row['id']+33336;
//$id_conv=base_convert($id_mod,10,3);
echo <<<END
    <tr>   
        <td width="30px"><a href="modifica_num.php?id_gioc={$id_conv}">{$row['numero']}</a></td>   
        <td width="125px">{$row['nome']}</td>   
        <td width="125px">{$row['cognome']}</td>   
        <td width="50px">{$row['ruolo']}</td>   
        <td width="50px">{$row['età']}</td>   
        <td width="130px">$costo €</td>   
        <td width="90px">Salute: {$row['forma_fisica']}</td>   
        <td width="90px">Morale: {$row['morale']}</td>   
        </tr> 
END;
}  
echo "</table>";
?>
poi nella pag modifica_num.php lo riporti al valore che deve avere
se non fai operazioni matematiche
PHP:
<?php
//.....
$id_trasmesso=base_convert($_GET['id_gioc'],16,10);//inverti le basi
//....
?>
oppure se fai le operazioni
PHP:
<?php
//....
$id_trasmesso=base_convert($_GET['id_gioc'],3,10)-33336;//inverti le basi e togli quello che avevi sommato
//....
?>
dato che non credo che tu tratti segreti della "casa bianca" dovrebbe essere sufficiente ad impedire quello che dicevi tu, il numero che vedi non è l'id reale
 
Discussioni simili
Autore Titolo Forum Risposte Data
W relazionare 2 tabelle Database 3
N [MS Access] Come relazionare DB Libri trasposti in Film e viceversa MS Access 1
M relazionare due menu tendina Database 0
G Dal diagrmma relazionare a E/R Database 1
max75 query su due tabelle e dati doppioni MS Access 2
S Consiglio si relazione tabelle MS Access 1
E Info relazione tabelle MySQL 17
E Query differenza tra tabelle MySQL 5
F Somma di più tabelle da script Javascript 0
T come ordinare dei record recuperati da due tabelle MySQL 0
K Estrazione di più risultati da tabelle correlate PHP 5
A Visualizzazione due tabelle PHP 1
T colonne di tabelle mysql ordinate MySQL 0
T Query su due tabelle con totali Database 4
L Import massivo di immagini in tabelle piattaforma IONIC Presentati al Forum 1
R Join articolato su 3 tabelle MySQL 5
M Join 3 tabelle PHP 0
M Aggiornare stesso campo in due tabelle PHP 0
M Problemi con query a più tabelle PHP 3
L estrarre valori max tra più tabelle MySQL 2
M Problema su query JOIN in tre tabelle PHP 0
MarcoGrazia Dati nulli su join tra più tabelle MySQL 1
S Problema esportazione tabelle Mysql in Excel PHP 0
M Problema su update di 3 tabelle PHP 1
M Aggiornare simultaneamente i campi di due tabelle collegate con id PHP 4
Tommy03 Unire dati da due tabelle MySQL 5
Tommy03 Unione query di 4 tabelle MySQL 1
G eseguire calcoli matematici su risultati 2 tabelle mysql PHP 4
G Problema caricamento tabelle MySql da PhP PHP 0
R Relazione tra tabelle MS Access 5
Tommy03 Query tra 3 tabelle MySQL 2
G Controllare valori in 2 tabelle PHP 5
L update tabelle in php mysql [risolto] PHP 6
K Unire più tabelle in una singola tabella PHP 3
M Esportare tabelle mdb con relazioni in mysql MS Access 0
elpirata [MySQL] Sincronizzare dati tra due tabelle sullo stesso host MySQL 0
M [HTML] Tool per tabelle complesse responsive HTML e CSS 0
Spenalzo Creare tabelle multiple con Access via VBA MS Access 2
P [PHP] Inserti su più tabelle PHP 3
L [PHP] CMS con DB/tabelle perdsonale PHP 0
felino [Wordpress] Tabelle appartenenti a plugin rimossi WordPress 0
T mysql tutorial per importare tabelle access in mysql aiuto MySQL 2
P [PHP] Stampare record di diverse tabelle ma con nomi uguali PHP 6
S [PHP] come esportare due tabelle in file excel su due fogli distinti PHP 8
G [PHP] backup manuale(o automatico) tabelle msql PHP 6
A [Javascript] Multi input su due tabelle correlate Javascript 1
D [MySQL] Tabelle "molti a molti", SELECT con troppe QUERY MySQL 7
K [PHP] Collegamento tra più tabelle PHP 10
K [MS Access] query da tabelle relazionate MS Access 4
S [PHP] Inner join su 4 tabelle PHP 6

Discussioni simili