Data Goed Uitlezen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hendrik de Jager

Hendrik de Jager

15/11/2010 20:43:26
Quote Anchor link
Hallo,

Ik heb een vraagje over het uitlezen van data, ging altijd goed op mijn eigen manier, maar nu ik vandaag ben begonnen met inner join loop ik op een probleem, naja het werk wel, maar bijvoorbeeld orderen werkt niet.

Ik kan niet goed vinden op het net hoe ik nu alle data goed kan laten zien.

Ik heb als voorbeeld world of warcraft races en classes genomen, de getallen met de desbetreffende race/class in het tables daarvan werken goed, dus de innerjoins.

Alvast bedankt.

De code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
echo "<table border='0'><tr><td width='200'><b>Name</b></td><td width='200'><b>Race</b></td><td width='200'><b>Class</b></td><td><b>Level</b></td></tr>";
for ($i = 1; $i <= maxid('PlayerId','playertable'); $i++) {
    $result = mysql_query("
    SELECT playertable.PlayerName, racetable.RaceName, classtable.ClassName, classtable.ClassColor, classtable.ClassIcon, playertable.PlayerLevel, racetable.RaceIcon
    FROM playertable
    INNER JOIN racetable
    ON playertable.RaceId=racetable.RaceId
    INNER JOIN classtable
    ON playertable.ClassId=classtable.ClassId
    WHERE PlayerId='$i'
    ORDER BY playertable.PlayerName
    ")
    or die(mysql_error());  

    $row = mysql_fetch_array($result);

    echo "<tr><td>" . $row['PlayerName'] . "</td><td><img src='" . $row['RaceIcon'] . "'>" . $row['RaceName'] . "</td><td><img src='" . $row['ClassIcon'] . "'><font color='" . $row['ClassColor'] . "'>" . $row['ClassName'] . "</font></td><td>" . $row['PlayerLevel'] . "</td></tr>";
}
echo "</table>";


De DB:
Afbeelding

De Output:
Afbeelding
Gewijzigd op 15/11/2010 20:45:08 door Hendrik de Jager
 
PHP hulp

PHP hulp

19/04/2024 05:18:17
 
Noppes Homeland

Noppes Homeland

15/11/2010 20:54:42
Quote Anchor link
Les 1:
Schrijf je queries netjes uit, plak niet zomaar alles achter elkaar

Les 2:
_fetch_array is niet echt handig zonder de method - 2de parameter - mee te geven, en aangezien je toch in feite altijd zal moeten gaan voor ASOC kan je net zo goed _fetch_assoc gebruiken

Les 3:
Je weet zeker dat je alle tabellen een 1 op 1 relatie hebt, lijkt mij van niet
Verdiep je eens in de verschillende manieren van JOINEN
http://www.w3schools.com/Sql/sql_join.asp

Les 4:
Het is efficienter om strings te qouten met enkele quotes

Les 5:
or die() staat gelijk aan een 1 malige afvoer naar het kerkhof dan wel de asla van het crematorium

pas fatsoenlijke foutafhandeling opdat de code die volgt en afhankelijk er van is gewoon doorlopen kan worden

Les 6:
php variabelen buiten quotes

Les 7:
Ken Sql statements toe aan een variabele welke je dan aan bij _query gebruikt. Op deze manie rkan je dan indien het fout gaat de error geven en het sql statement.
Dat geeft vaak meer inzicht van wat er aan de hand is dan alleen maar de error omschrijving
Gewijzigd op 15/11/2010 21:06:20 door Noppes Homeland
 
Hendrik de Jager

Hendrik de Jager

16/11/2010 15:02:33
Quote Anchor link
Bedankt voor je reactie, alleen zou ik graag willen weten hoe ik snel en makkelijk mijn database inhoud show, ik doe het nu door mijn $i naar de $maxid te laten gaan.

Ik had ooit iets opgepakt met Key ofzo? Alvast Bedankt.
 
Teun Hesseling

Teun Hesseling

16/11/2010 16:25:49
Quote Anchor link
in die code hierboven ben je de $ vergeten voor maxid... en waarschijnlijk doel je op foreach?
 
Wouter J

Wouter J

16/11/2010 16:31:27
Quote Anchor link
Bedoel je misschien while?
 
Hendrik de Jager

Hendrik de Jager

16/11/2010 17:06:58
Quote Anchor link
Teun Hesseling op 16/11/2010 16:25:49:
in die code hierboven ben je de $ vergeten voor maxid... en waarschijnlijk doel je op foreach?


Ja wss wel, maar wat vraag ik hem dan, foreach wat?
 
Noppes Homeland

Noppes Homeland

16/11/2010 18:55:29
Quote Anchor link
en wat doe die functie maxid dan?
 
Hendrik de Jager

Hendrik de Jager

16/11/2010 19:57:34
Quote Anchor link
die haalt de maxid uit de tabel, zodat ik weet wat het hoogste id is en tot war ik moet loopen, dit werkt wel id voor id een het weergeeft mooi, maar dit gaat een probleem op leveren als ik het bijvoorbeeld wil sorteren.

Sorry dat ik zo noob ben (waarschijnlijk) maar ik nog maar een beginnen die toch wil beginnen aan het hogere werk.

Alvast bedankt.
 
Noppes Homeland

Noppes Homeland

16/11/2010 20:09:57
Quote Anchor link
Wel de normale stuctuur is gewoon:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$sql
= "SELECT ORDER BY"

if (($result = mysql_query($sql)) === false) {
   // foutafhandeling
}
else {

   // je kan hier iet doen met _num_rows

   while ($row = mysql_fetch_assoc($result)) {
       print_r($row);
   }
}

?>


de query is dermate dat je die gegevens ophaalt die je wilt ophalen en ook alsdanig in een volgorde waarop je een bepaalde layout kan baseren.

}
Gewijzigd op 16/11/2010 20:10:21 door Noppes Homeland
 
Hendrik de Jager

Hendrik de Jager

16/11/2010 20:14:46
Quote Anchor link
Oke ik begin het te snappen, zou ik je om een voorbeeld code mogen vragen?

Zo Ja:
Wat zou de code zijn als ik om mijn html pagina alle Druids wil zien? (Race 5)
En wat zou de code zijn ik op mijn html pagina de spelers op alfabetishe volgorde wil laten zien?

Mega Bedankt Alvast!
 
Wouter J

Wouter J

16/11/2010 20:30:28
Quote Anchor link
Bij alles laten zien als RaceID=5 wordt de code ong. zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
define('DEBUG_MODE', true); //True is foutmelding aan, false is foutmelding uit

#Contact maken met database

$mysql = mysql_connect('localhost','gebruikersnaam','wachtwoord');

if(!$mysql) { //Als $mysql false is, dus geen contact
  echo "Er kan geen verbinding met de database worden gemaakt.";
  if(DEBUG_MODE) { //Als je de functie bovenaan op true hebt gezet
    echo "<br />".mysql_error($mysql);
  }
}

else { //Als $mysql true is, dus contact
  
  $db = mysql_select_db('databasenaam',$mysql);

  if(!$db) { //Als $db false is, dus geen db
    echo "Er kan geen database worden gevonden";

    if(DEBUG_MODE) { //Als DEBUG true is
      echo "<br />".mysql_error($db);
    }
  }

  else { //Als $db true is, wel db

  $query = "SELECT ClassId where RaceID=5";
  $result = mysql_query($query, $mysql);

    while($row = mysql_fetch_assoc($result)) {

      echo $row['ClassId'];

    }
  }
}

?>
 
Hendrik de Jager

Hendrik de Jager

16/11/2010 22:21:20
Quote Anchor link
Wouter J op 16/11/2010 20:30:28:
Bij alles laten zien als RaceID=5 wordt de code ong. zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
define('DEBUG_MODE', true); //True is foutmelding aan, false is foutmelding uit

#Contact maken met database

$mysql = mysql_connect('localhost','gebruikersnaam','wachtwoord');

if(!$mysql) { //Als $mysql false is, dus geen contact
  echo "Er kan geen verbinding met de database worden gemaakt.";
  if(DEBUG_MODE) { //Als je de functie bovenaan op true hebt gezet
    echo "<br />".mysql_error($mysql);
  }
}

else { //Als $mysql true is, dus contact
  
  $db = mysql_select_db('databasenaam',$mysql);

  if(!$db) { //Als $db false is, dus geen db
    echo "Er kan geen database worden gevonden";

    if(DEBUG_MODE) { //Als DEBUG true is
      echo "<br />".mysql_error($db);
    }
  }

  else { //Als $db true is, wel db

  $query = "SELECT ClassId where RaceID=5";
  $result = mysql_query($query, $mysql);

    while($row = mysql_fetch_assoc($result)) {

      echo $row['ClassId'];

    }
  }
}

?>


Echt ongelofelijk bedankt, eindelijk is dit wat ik zoek, ozo simpel (i guess), maar het werkt, THX!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.