Probleem met selecteren

Status
Niet open voor verdere reacties.

koosklomp

Gebruiker
Lid geworden
28 jan 2010
Berichten
17
Ik heb een probleem met het selecteren van data uit sql. Voor een online game maak ik een tabel met gladiatoren en hun eigenschappen. De tabel ziet er dan zo uit:

Naam:.............Kracht:................Snelheid:
Apha............... 10......................25
Bravo.............. 20.......................5
Charly............. 30......................60

Nu heb ik 5000 gladiatoren en kan dus niet voor elke gladiator een nieuwe query gaan uitwerken. Ik heb dus voor de optie gekozen dat de hele tabel wordt getoond.

Nu selecteert sql ze allemaal en laat ze netjes zien, de gebruiker kan echter niets mer die informatie. Ik zou graag willen dat je op de naam van een galdiator klikt en dat er dan een nieuwe pagina opent.

Op welke manier kan ik de tabel dus letterlijk kopieren zodat iedere rij ook afzonderlijk te gebruiken is???

Alvast bedankt!!
 
Je kunt een WHERE opnemen met het id van de rij die je wilt tonen:

[sql]
SELECT *
FROM tabel
WHERE id = 5
[/sql]

Als je dan een php pagina maakt die uit de URL een id uitleest, dan kun je die ID in de query plaatsen om de juiste rij op te halen.

Dus:

HTML:
<a href="meerinfo.php?id=1">Open rij 1</a>

Nu verwijs je naar een PHP pagina met een variabele erin. Die 1 komt binnen in PHP op de volgende manier:

PHP:
$_GET['id']; // bevat dus het getal uit de url; in het voorbeeld 1 maar het kan ook wat anders zijn.

Dat getal voer je aan je query om de juiste rij te pakken:

PHP:
$query = "SELECT * FROM tabel WHERE id = " . (int) $_GET['id'];

Als je die uitvoert kun je dus elke willekeurige rij opvragen. Als je zorgt dat op je hoofdpagina onder elke naam een link komt met het juiste id erin, dan moet het goed komen :)

Succes!
 
Allereerst bedankt voor je snelle reactie! Echt geweldig!!

Helaas denk ik niet dat je voorgestelde methode gaat werken. Wat ik van je begrijp is dat een link in html gecreerd word die naar een php verwijst die via get id de juiste informatie uit de sql tabel zoekt.....

Probleem met deze methode is dat ik op voorhand niet weet welke id's er zijn. Die moet ik eerst uit de database opvragen. Ik kan dus niet een html link maken met een id van 1 terwijl ik niet weet of er een id 1 is.

Dit probleem speelt bijvoorbeeld bij een transfer markt voor mijn gladiatoren. Ik zou graag willen dat mensen spelers kunnen aanbieden (invoeren in de database) deze datbase tonen (dus verschillende id's hebbende) en deze weer kunnen kopen (en dus weer verdwijnen uit de database). Een dynamisch geheel dus.
 
Je zult met je eerste query alle id's op moeten vragen, en die moeten gebruiken om je lijst met links te genereren.

Je moet altijd ergens beginnen ;)
 
Helaas begrijp ik je manier nog steeds niet goed.

Stel ik gebruik jouw voorgestelde code (select * from database where id = 5) dan pakt sql alleen id 5. Je manier van linken snap ik vervolgens wel. Het gaat mij erom dat ik niet weet welk id nummer sql moet nemen omdat deze id's steeds veranderen (door de aan en verkoop van gladiatoren). Ik kan dus wel de lijst opvragen maar dan geeft sql alle data weer zonder dat ik daar iets mee kan :confused:
 
De speler weet zelf ook niet welk id nummer hij moet nemen... je begint gewoon met de hele lijst van gladiatoren tonen lijkt me, en dan klik je op degene die je wilt kopen/verkopen?

Heb je ergens uitgetekend hoe dit spelletje van je eruit gaat zien? Want ik begrijp nu ook niet helemaal waar je op vast loopt.
 
Helaas begrijp ik je manier nog steeds niet goed.

Stel ik gebruik jouw voorgestelde code (select * from database where id = 5) dan pakt sql alleen id 5. Je manier van linken snap ik vervolgens wel. Het gaat mij erom dat ik niet weet welk id nummer sql moet nemen omdat deze id's steeds veranderen (door de aan en verkoop van gladiatoren). Ik kan dus wel de lijst opvragen maar dan geeft sql alle data weer zonder dat ik daar iets mee kan :confused:

Waarom zou de id van een gladiator veranderen? Ik kan me niet voorstellen dat de id werkelijk verandert. Het kan zijn dat gladiatoren verdwijnen en hun id vervalt en dat er nieuwe gladiatoren bijkomen waardoor er ook nieuwe id's bijkomen.
Als dit niet het geval is heb je naar mijn idee een fout gemaakt in je database ontwerp. De id van een tabel betekent dat de waarde in deze kolom de rij identificeert en moet in feite altijd gelijk blijven voor de ene rij.

Frats bedoelt dat je begint met een query die de hele lijst van gladiatoren laat zien. In deze query wordt automatisch de id van elke rij ook opgehaald en die verwerk je in de lijst:

[SQL] SELECT * FROM gladiatoren [/SQL]

Met deze query zou je de volgende lijst kunnen krijgen:

id naam snelheid kracht ..
1 Alpha 10 25 ..
2 Bravo 25 10 ..
3 Charlie 20 20 ..
4 Delta 15 30 ..

Wanneer je in je PHP bij het uitprinten van de tabel de naam in een anchor plaatst en het id aan de hyperlink daarvan, dan kan je die meegestuurde id vervolgens gebruiken om de geklikte robot weer te geven:
PHP:
<tr>
  <td>
    <a href='robotdetailpage.php?robotid=<?php echo $row['id']?>'> 
      <?php echo $row['naam']?>
    </a>
  </td>
  <td>
    <?php echo $row['snelheid'] ?>
  </td>
  <td>
    <?php echo $row['kracht'] ?>
  </td>
</tr>

Als je dit voor elke row uit de resultset doet krijg je de volgende tabel:
id naam snelheid kracht ..
1 Alpha 10 25 ..
2 Bravo 25 10 ..
3 Charlie 20 20 ..
4 Delta 15 30 ..

Dan kan je vervolgens in robotdetailpage.php de id ophalen uit de querystring en deze gebruiken in de query van Frats:

PHP:
$query = "SELECT * FROM tabel WHERE id = " . (int) $_GET['id'];
 
Beste JP Romijn en Frats!

Het is gelukt!! Bedankt voor jullie hulp!
Het was inderdaad een kwestie van een slecht database ontwerp en jullie suggesties. Ik heb nu alle bijna werkend zoals ik het voor ogen had dankzij jullie hulp!

Vraag beantwoord en slotje erop!

Nogmaals dank! :thumb:

Koos
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan