Gå til innhold

Hvordan kan jeg få en mysql spørring til å legge seg likt med en annen en (Mer detaljer i post)


Anbefalte innlegg

Ja hei. jeg holder på å lage en "CLAN" kode for et lite øvelse prosjekt, men støtt opp på no tull. Jeg har to spørringer, en som henter ut Player info, og en annen som heter ut navn og privilegier for ranken brukeren har.. Tabellene heter

 

 

team_union_ranks og

team_union

 

Den viser rankene men problemet er at den viser BARE den SISTE ranken som ligge i database. (som i dette tilfelle er Guildmaster) så isteden for at jeg får opp de rette rankene viser den som ligger sist i databasen.

 

Kode:

<?
session_start(); 
$action = $_GET['action'];
include "config.php";
$sessionaccountid = "1";
$sessionbyid = "1";
$sessionmoney = $_SESSION['currentgold'];
$date = date("m/d/Y.H:i:s");

$result = mysql_query("SELECT * FROM byer WHERE id=$sessionbyid ") or die(mysql_error());  
while ($rad = mysql_fetch_array($result)){
$byid = $rad['id'];
$byunion = $rad['union_id'];
}


$result1 = mysql_query("SELECT * FROM team_union") or die(mysql_error());   
while ($rad1 = mysql_fetch_array($result1)){
$unionid = $rad1['id'];
$unionnavn = $rad1['navn'];
}


$result3 = mysql_query("SELECT * FROM team_union_ranks WHERE union_id=$unionid ") or die(mysql_error());   
while ($rad3 = mysql_fetch_array($result3)){
$rank_navn = ($rad3['rank_name']);
}


echo "<center><h3>Union profile for <u>$unionnavn</u></h3></center>";
echo "<table border=1><th>Member</th><th>Level</th><th>Rank</th>";
$result2 = mysql_query("SELECT * FROM byer WHERE union_id=$byunion") or die(mysql_error());   
while ($rad2 = mysql_fetch_array($result2)){
$bynavn = $rad2['bynavn'];
$popularity = $rad2['popularity'];

echo "<tr><td>$bynavn</td><td>$popularity</td><td>$rank_navn</td></tr>";
}
echo "</table>";



?>

 

Resultat:

Haugesund 60 Guildmaster

Vormedal 4 Guildmaster

Rekado 2 Guildmaster

Mehonda 12 Guildmaster

Flyingfock 45 Guildmaster

 

 

Som du ser her er alle Guildmasters. men det som skal være korrekt er at BARE Flyingfock skal være guildmaster, og resten skal ha andre ranker (noe som ligger i databasen )

 

 

Om noe er uklart si ifra..

 

 

Hilsen Dryper

Lenke til kommentar
Videoannonse
Annonse

Det er klart alle får samme rank, når du henter ut ranks i en separat spørring og alltid overskriver variabelen $rank_navn. Post databasestrukturen til team_union_ranks og team_union.

 

Edit: SELECT * er for øvrig en utrolig dårlig vane.

Endret av Jonas
Lenke til kommentar
Det er klart alle får samme rank, når du henter ut ranks i en separat spørring og alltid overskriver variabelen $rank_navn. Post databasestrukturen til team_union_ranks og team_union.

 

Edit: SELECT * er for øvrig en utrolig dårlig vane.

 

 

Ja er klar over at SELECT * ikke er bra :) dette skal jeg fikse på når jeg er ferdig.. , vet aldri når jeg bruker mer av DBen :)

 

Ok jeg poster den her

 

team_union_ranks:

union_id|rank_name|kick|union_bank|note|welcome_message| (Litt rotete med alle privilegiene.. skal lage nytt system der.

 

team_union:

|id|navn|leder|level|created|melding|

 

 

Nja dette var alt :)

 

Takker for svar

Lenke til kommentar

Kolonne-navnene virket ikke veldig konsekvente, var ikke så lett å se relasjonene mellom tabellene bare ut ifra det. Kan du forklare disse? (Det du spør etter gjøres for øvrig med kun èn spørring)

 

Edit: Jeg gjetter noe følgende.

 

SELECT
team_union.navn,
team_union.level,
team_union_ranks.rank_name
FROM
team_union,
team_union_ranks
WHERE
team_union.level = team_union_ranks.union_id

Endret av Jonas
Lenke til kommentar
Kolonne-navnene virket ikke veldig konsekvente, var ikke så lett å se relasjonene mellom tabellene bare ut ifra det. Kan du forklare disse? (Det du spør etter gjøres for øvrig med kun èn spørring)

 

Edit: Jeg gjetter noe følgende.

 

SELECT
team_union.navn,
team_union.level,
team_union_ranks.rank_name
FROM
team_union,
team_union_ranks
WHERE
team_union.level = team_union_ranks.union_id

 

 

Jo nå skal vi se her :=)

 

 

fra team_union:

 

Dette er her unionen basen ligger da.. Navn, hvem som er leder (som er basert på id nummere til brukeren som ligger i en tabell kalt byer, og litt mer info om denne union.. denne har da et eget id nummer

 

team_union_ranks:

Det er her rankene blir hentet ut fra.. de har også en id som skal være lik den unionen den hører til. en bruker får denne ranken med at det liggen en kolonne i "byer" som har iden til denne

Lenke til kommentar

Jeg har nå skrevet litt og har fått til og få alt i hop utenom ranken, den har jeg bare klart og få id tallene fra union_rank på.. Noe ide om hvordan jeg kan gjøre det? :) takker for svar!

 

Noen forbedringen?. Allt er positivt :)

 

$result = mysql_query("SELECT * FROM byer WHERE id=$sessionbyid ") or die(mysql_error());  
while ($rad = mysql_fetch_array($result)){
$byid = $rad['id'];
$byunion = $rad['union_id'];
$byunionrank = $rad['union_rank'];
}

$result1 = mysql_query("SELECT * FROM team_union") or die(mysql_error());   
while ($rad1 = mysql_fetch_array($result1)){
$unionid = $rad1['id'];
$unionnavn = $rad1['navn'];
}

echo "<center><h3>Union profile for <u>$unionnavn</u></h3></center>";
echo "<table border=1><th>Member</th><th>Level</th><th>Rank</th>";
$result2 = mysql_query("SELECT * FROM byer, team_union_ranks WHERE byer.union_id=$byunion AND team_union_ranks.id=$byunionrank ") or die(mysql_error());   

while ($rad2 = mysql_fetch_array($result2)){

$bynavn = $rad2['bynavn'];

$bra	= $rad2['union_rank'];

$popularity = $rad2['popularity'];

$rank_navn = ($rad2['rank_name']);



echo "<tr><td>$bynavn</td><td>$popularity</td><td>$bra</td></tr>";
}
echo "</table>";
?>

 

 

Resultat:

 

Haugesund 60 1

Karmøy 3 1

Vormedal 4 2

Oslo 32 2

Rekado 2 3

Pappi 52 3

Mehonda 12 4

Retoktor 45 4

Flyingfock 45 5

Lilleby 24 5

Lenke til kommentar
Kolonne-navnene virket ikke veldig konsekvente, var ikke så lett å se relasjonene mellom tabellene bare ut ifra det. Kan du forklare disse? (Det du spør etter gjøres for øvrig med kun èn spørring)

 

Edit: Jeg gjetter noe følgende.

 

SELECT
team_union.navn,
team_union.level,
team_union_ranks.rank_name
FROM
team_union,
team_union_ranks
WHERE
team_union.level = team_union_ranks.union_id

... og du klager over at han bruker «SELECT *»? Kartesiske produkter (kryssprodukt) sluker såvidt jeg veit ytelse. Hva med å bruke ordentlig JOIN-syntaks? :)

SELECT team_union.navn, team_union.level, team_union_ranks.rank_name
FROM team_union JOIN team_union_ranks ON team_union.level = team_union_ranks.union_id

 

Det er vel sikkert nyttig læring for endel vil jeg tro.

Endret av Ernie
Lenke til kommentar
Kolonne-navnene virket ikke veldig konsekvente, var ikke så lett å se relasjonene mellom tabellene bare ut ifra det. Kan du forklare disse? (Det du spør etter gjøres for øvrig med kun èn spørring)

 

Edit: Jeg gjetter noe følgende.

 

SELECT
team_union.navn,
team_union.level,
team_union_ranks.rank_name
FROM
team_union,
team_union_ranks
WHERE
team_union.level = team_union_ranks.union_id

... og du klager over at han bruker «SELECT *»? Kartesiske produkter (kryssprodukt) sluker såvidt jeg veit ytelse. Hva med å bruke ordentlig JOIN-syntaks? :)

SELECT team_union.navn, team_union.level, team_union_ranks.rank_name
FROM team_union JOIN team_union_ranks ON team_union.level = team_union_ranks.union_id

 

Det er vel sikkert nyttig læring for endel vil jeg tro.

 

 

Det jeg ikke helt ser er hvor dere får denne team_union.level fra :) den kommer fra

 

byer og kolonna heter popularity :) kansje ikke sagt det :) xD

Lenke til kommentar
... og du klager over at han bruker «SELECT *»?

Nope, jeg tipser etter min beste evne.

 

 

 

Det er egentlig ikke noe viktig for meg hvor mye dette trekker, er bare et øvelse prosjekt. men dette får jeg ikke til :) om noe har en ide om hvordan jeg kan få det til som jeg la til i mitt siste inlegg hadde det vært fett xD

Lenke til kommentar
... og du klager over at han bruker «SELECT *»?

Nope, jeg tipser etter min beste evne.

 

 

 

Det er egentlig ikke noe viktig for meg hvor mye dette trekker, er bare et øvelse prosjekt. men dette får jeg ikke til :) om noe har en ide om hvordan jeg kan få det til som jeg la til i mitt siste inlegg hadde det vært fett xD

 

Noen som kan hjelpe med å sette dette opp?

 

Takker

Lenke til kommentar
... og du klager over at han bruker «SELECT *»?

Nope, jeg tipser etter min beste evne.

 

 

 

Det er egentlig ikke noe viktig for meg hvor mye dette trekker, er bare et øvelse prosjekt. men dette får jeg ikke til :) om noe har en ide om hvordan jeg kan få det til som jeg la til i mitt siste inlegg hadde det vært fett xD

 

Noen som kan hjelpe med å sette dette opp?

 

Takker

 

Hmm jeg lagde nettop et temp system som da har ferdiglagte ranker, men problemet er at jeg vil ha "Custom ranks" fra databasen. er det mulig at noen kan hjelpe meg? Det er den samme koden som er ovenfor.

 

i den ene tabellen så har jeg jo alle bruker infoen, og der står det et id rank nummer. og da fra den andre tabellen som heter ranks står det da hvilke Union dette hører til og hvilke ID den er.. men hvordan kan jeg skrive dette? noen forslag?

 

Takker for hjelp.

Lenke til kommentar
... og du klager over at han bruker «SELECT *»?

Nope, jeg tipser etter min beste evne.

 

 

 

Det er egentlig ikke noe viktig for meg hvor mye dette trekker, er bare et øvelse prosjekt. men dette får jeg ikke til :) om noe har en ide om hvordan jeg kan få det til som jeg la til i mitt siste inlegg hadde det vært fett xD

 

Noen som kan hjelpe med å sette dette opp?

 

Takker

 

Hmm jeg lagde nettop et temp system som da har ferdiglagte ranker, men problemet er at jeg vil ha "Custom ranks" fra databasen. er det mulig at noen kan hjelpe meg? Det er den samme koden som er ovenfor.

 

i den ene tabellen så har jeg jo alle bruker infoen, og der står det et id rank nummer. og da fra den andre tabellen som heter ranks står det da hvilke Union dette hører til og hvilke ID den er.. men hvordan kan jeg skrive dette? noen forslag?

 

Takker for hjelp.

 

Hva med å vise oss alle tabellene. Så langt har jeg dekodet byer til å innehode noe slikt:

Byer:

id, bynavn, union_id, popularity

 

team_union_ranks:

union_id|rank_name|kick|union_bank|note|welcome_message| (Litt rotete med alle privilegiene.. skal lage nytt system der.

 

team_union:

|id|navn|leder|level|created|melding|

 

Jeg har også gjettet på at union_id i byer og team_union_ranks henger sammen. Da skulle vi få noe slikt:

 

 

Select b.bynavn, b.popularity, tur.rank_name From byer b union team_union_rank tur on b.union_id = tur.union_id

 

med ditt eget skript som utgangspunkt:

echo "<center><h3>Union profile for <u>$unionnavn</u></h3></center>";
echo "<table border=1><th>Member</th><th>Level</th><th>Rank</th>";
$result2 = mysql_query("Select b.bynavn, b.popularity, tur.rank_name From byer b union team_union_rank tur on b.union_id = tur.union_id
") or die(mysql_error());   

while ($rad2 = mysql_fetch_array($result2)){

echo "<tr><td>$rad2['bynavn']</td><td>$rad2['popularity']</td><td>$rad2['rank_name'];</td></tr>";
}

 

Anbefaler sterkt å endre navn for bedre lesbarhet.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...