Hey ben ik weer :P
Hoe kan je een koppel tabel ofzo maken
ik had hulp van benny gekregen met een badge
systeem waar ik heel erg blij mee ben.
Daarvoor wil ik hem nog even bedanken:
Bedankt :P zo nu weet iedereen het >:P
Naja maar met dat script kon je niet een badge
aan meerdere mensen geven dus nu zegt php_newbie ofzo dat je et anders moet dan maar dan met een koppel tabel -.- HOE DOE JE DIT :p
kan je dan wel meerdere badges aan mensen geven? xD

Alvast bedankt ;D
ik geloof dat ik dat topic ook even snel had gezien, maar je moet gewoon een aparte tabel maken waarin je de verschillende badges zet.

daarna maak je in de tabel users of gebruikers oid een extra veld aan genaamd badge bijv. en daarin zet je het id van de desbetreffende badge, dus heb je bijv het volgende.

users
id | naam | badge

badges
id | naam | functie

dan kun je de volgende records hebben bijv.

users
1 | Stefan | 1

badges
1 | dubbele verdiensten | dubbele verdiensten

zo heb je gerealiseerd dat de user stefan de badge met id 1 heeft en dus dubbele verdiensten heeft.

wil je dat een user meerdere badges kan krijgen, dan moet je het als volgt doen:

user
id | naam

badges
id | naam | functie

toegewezenbadges
id | userID | badgeID

dan kun je in toegewezenbadges meerdere records per user zetten.

hoop dat het zo een beetje duidelijk is.
Toevoeging op het model van Stefan: userID en badgeID zijn met een foreignkey gekoppeld aan de tabelen 'user' en 'badge'. Je hebt dus de innoDB-engine van MySQL nodig om dit te realiseren. Deze kun je zo eenvoudig selecteren in PMA bij het aanmaken van de tabel. Uiteraard kun je het later ook nog aanpassen, zie 1 van de tabbladen in PMA.

Uiteraard kun je dit ook met een query aanpassen, zie hoofdstuk 13 van de MySQL-handleiding.
Ik snap je wel maar welk script is daarvoor nodig..
Je moet namelijk 3 tabelen hebben dus
Dat zijn:

User
===
badges
===
toegewezenbadges
===

maar wat is dan het script
en hoe weet de tabel in welke tabel
hij moet kijken welke badge id 1 is?
En natuurlijk ook niet de image url te
vergeten in badges ;)

SELECT
  users.naam
FROM
  users,
  badges,
  toegewezenbadges
WHERE
  users.id = toegewezenbadges.userID
AND
  badges.id = toegewezenbadges.badgeID
AND
  badges.naam = 'badge-naam'

Overige data kun je eenvoudig opvragen door het eerste deel van de query uit te breiden.
Zoiets?:

<?
$badges_sql = "SELECT * FROM leden, badges, toegewezenbadges user.id = toegewezenbadges.userID AND badges.id = toegewezenbadges.badgeID AND badges.naam = 'badge-naam";
$badges_res = mysql_query($badges_sql) or die ("Verbinding mislukt");
$badges_rows = mysql_num_rows($badges_res);
?>

Is dit goed om de badges te laten showen:

<?php
$badges_sql = "SELECT * FROM leden, badges, toegewezenbadges user.id = toegewezenbadges.userID AND badges.id = toegewezenbadges.badgeID AND badges.naam = 'badge-naam";
$badges_res = mysql_query($badges_sql) or die ("Verbinding mislukt");
$badges_rows = mysql_num_rows($badges_res);

if ($badges_rows == ''){
echo "Geen badges";
} else {
while($badges_array = mysql_fetch_array($badges_res)){
echo "<img src=\"".$badges_array['badges_img']."\" alt=\"".$badges_array['badges_beschrijving']."\" border=\"0\" /> ";
}
}
$select = "SELECT id FROM leden WHERE gebruikersnaam = '" . $_GET[mid] . "'";

?>
Die vraag kun je zelf beantwoorden door het te testen.

Het gebruik van een * moet je in elk geval altijd proberen te vermijden. Geef dus de kolomnamen op (met tabelnaam...) die je nodig hebt.

Opmerking: De foutmelding "Verbinding mislukt" slaat nergens op. Gebruik de functie mysql_error() voor de juiste foutmelding.

Edit: Verder is het jammer dat je de query zo ongelukkig en onoverzichtelijk noteert. Nu wil je blijkbaar gewoon fouten maken in de query!

SELECT
  naam
FROM
  tabelnaam
WHERE
  naam = 'waarde'

Lijkt mij overzichtelijker...

Edit 2:
$_GET[mid] zal niet bestaan. Heb ik geloof ik al eerder gezegd. Dit moet zijn $_GET['mid'], dus met quotes.
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /storage/san/mijndomein/users/018844/public/sites/www.habbolife.nl/php systemen/vip/profiel.php on line 64
Geen badges

zegt hij en over dat MID dat hoort er helemaal niet :P
heb al weg gehaald ;)
Maar het is dus fout ...
ik ben echt niet goed in php dus zie de fout niet echt ;(
dus zie de fout niet echt
Wat zei ik ook al weer over het overzichtelijk noteren van een query? Begin daar eens mee, kijk dan wat er fout zit en probeer het nog eens.

Dit soort fouten kun je eenvoudig oplossen door netjes te werken. Ik ga geen code voorkauwen, ik hoop dat je dat ook niet verwacht.
nee verwacht ik ook niet ik wil juist
alles zelf proberen alleen het probleem
is dat het nooit lukt is dit trouwens beter:

<?php
$badges_sql = "
SELECT
users.naam
FROM
users,
badges,
toegewezenbadges
WHERE
users.id = toegewezenbadges.userID
AND
badges.id = toegewezenbadges.badgeID
AND
badges.naam = 'badge-naam' ";
$badges_res = "mysql_query($badges_sql) or die mysql_error()";
$badges_rows = mysql_num_rows($badges_res);

if ($badges_rows == ''){
echo "Geen badges";
} else {
while($badges_array = mysql_fetch_array($badges_res)){
echo "<img src=\"".$badges_array['badges_img']."\" alt=\"".$badges_array['badges_beschrijving']."\" border=\"0\" /> ";
}
}

?>

of slaat dat nergens op..
Dit ziet er toch 100x beter uit, of niet dan?

En kijk nu eens goed naar de kleurtjes en dan met name naar regel 15. Daar gaat het goed fout!

Verder kun je nooit $badges_array['badges_img'] gaan echoen, de kolom badges_img haal je namelijk helemaal niet op uit de database... Je vraagt uitsluitend om users.naam

Reageren