Het zou zo maar kunnen, ik weet niet precies welke data je allemaal wilt opslaan en welke relaties er allemaal zijn.
Wanneer je begint te normaliseren, ga dan vooral NIET in tabellen denken. Welke tabellen je nodig hebt en hoe deze er uit komen te zien, dat blijkt pas aan het einde van het hele normalisatie-proces. Denken in tabellen leidt alleen maar af en vergroot de kans op fouten in het datamodel. En dat wil je juist voorkomen...
Tip: Gebruik straks de innoDB-database engine en niet de standaard MyIsam-engine. Dan kun je ook gebruik maken van foreign keys (FK). Hiermee wordt de database een stukje robuster. Het gebruik van FK's wordt ook in het artikel over normalisatie uitgelegd.
Bedankt iedereen! het werkt!
Maar ik zit nu alleen met dit probleem, en ik dacht. hoef ik niet echt een nieuw topic voor te openen...
Dit script moet alle rows uit pokemon halen die als id hetzelfde hebben als p_id in user_pokemon.. het enige probleem: 'het zet ALLE pokemon op het scherm :-('
weet iemand de oplossing? ( die while loop was meer een experimentje, maar het werkt niet helemaal blijkbaar :p)
<?php
if(isset($_GET['act']) && $_GET['act'] == "mijn") {
$res = mysql_query("SELECT p_id FROM user_pokemon WHERE u_id = '".$_SESSION['user_id']."' ORDER BY id") or die(mysql_error());
$res2 = mysql_query("SELECT * FROM pokemon WHERE id = '".$roww['p_id']."'") or die(mysql_error());
while($roww = mysql_fetch_assoc($res) && $row = mysql_fetch_array($res2)){
echo '<tr>
<td class="rij">
'.$row['id'].'
</td>
<td class="rij">
<a href="'.$row['link'].'">'.$row['naam'].'</a>
</td>
<td class="rij">
'.$row['type'].'
</td>
<td align="center" valign="middle" class="rij">';
$sql2 = "SELECT * FROM user_pokemon WHERE u_id = '".$_SESSION['user_id']."' AND p_id = '".$row['id']."'";
$res2 = mysql_query($sql2);
if (mysql_num_rows($res2) == 0) {
echo '<a href="index.php?da='.$row['id'].'"><img src="images/kruis.gif" border="0"></a>';
} else {
echo '<a href="index.php?da='.$row['id'].'"><img src="images/vinkje.gif" border="0"></a>';
}
echo '
</td>
</tr>';
}
}
?>
verder niets met je vraag te maken maar ik zie dat je dit $sql , $sql2 , $row , $roww gebruikt. Als je nou een beetje slim bent maak je daar iets van wat je gemakkelijk kan terug vinden bijv:
<?
$login_sql = 'SELECT veld FROM tabel';
$login_res = mysql_query($login_sql,$link);
$zoek_sql = 'SELECT veld FROM tabel WHERE veld LIKE waarde';
$zoek_res = mysql_query($zoek_sql,$link);
?>
etcetc
als jij nu 9 querys hebt lopen en ze heten allemaal $sql## , moet je eerst zoeken wat gebeurd daar eigenlijk, terwijl je dit met logische naamgeven ook logisch kan terugvinden
(ik weet het, het is raar, maar toch: ) ja dat doe ik ook meestal wel, maar pas als het HELE script klaar is, dan loop ik ALLE php zooi nog eens langs, en hernoem ik de query namen enz.
Offtopic: Je houdt er een bijzonder ongelukkige werkwijze op na. Eerst een slecht systeem bouwen, niet normaliseren, geen foutafhandeling, slechte naamgevingen etc. en vervolgens probeer je daar een goed systeem van te gaan maken. Dat is nog nooit iemand gelukt. Stel jezelf vanaf het begin tot doel om een goed systeem te maken!
Dan het probleem:
$res = mysql_query("SELECT p_id FROM user_pokemon WHERE u_id = '".$_SESSION['user_id']."' ORDER BY id") or die(mysql_error());
$res2 = mysql_query("SELECT * FROM pokemon WHERE id = '".$roww['p_id']."'") or die(mysql_error());
Dit gaat niet werken, in $res2 roep je $roww['p_id'] aan die helemaal niet bestaat. Die wordt pas in de while-lus (op de volgende regel) aangemaakt.