elementen uit aray vergelijken
onderstaande code werkt perfect, maar nu wil ik in de $sql nog een tweede criteria inbouwen. Deze is echter als aray opgeslagen in de database als "$therapie" en heeft voor ieder lid verschillende inhoud (zo bevat $therapie voor Jan bijvoorbeeld (2 17 112) en voor Jef (2 5 76 86 123).
Ik heb al gebprobeerd met explode(), for each en if(inarea()), maar ik kom er niet uit.
Heeft iemand een oplossing? Dank u.
Dit is mijn code:
Code (php)
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
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
<?php
include('config.php');
// Create connection
$conn = $db;
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo $_POST["rubriek"]; //geselecteerd op indexpagina SELECT > OPTION > VALUE
echo $_POST["keuze_land"]; //geselecteerd op indexpagina SELECT > OPTION > VALUE
$rubriek = $_POST["rubriek"];
$keuzeland = $_POST["keuze_land"];
$sql = "SELECT id, member, paswoord, land FROM users WHERE land = $keuzeland";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc())
{
echo "<br> id: ". $row["id"]. " - Name: ". $row["member"]. " " . $row["paswoord"] . " " . $row["land"] . "<br>";
}
}
else {
echo "0 results";
}
$conn->close();
?>
include('config.php');
// Create connection
$conn = $db;
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo $_POST["rubriek"]; //geselecteerd op indexpagina SELECT > OPTION > VALUE
echo $_POST["keuze_land"]; //geselecteerd op indexpagina SELECT > OPTION > VALUE
$rubriek = $_POST["rubriek"];
$keuzeland = $_POST["keuze_land"];
$sql = "SELECT id, member, paswoord, land FROM users WHERE land = $keuzeland";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc())
{
echo "<br> id: ". $row["id"]. " - Name: ". $row["member"]. " " . $row["paswoord"] . " " . $row["land"] . "<br>";
}
}
else {
echo "0 results";
}
$conn->close();
?>
Quote:
Deze is echter als array opgeslagen in de database
Dus je hebt in één veld in de db meerdere dingen opgeslagen?
Quote:
Heeft iemand een oplossing?
Je databasemodel omgooien dan!
In plaats van in het veld therapie 2 17 112 opslaan, maak je een extra therapie tabel aan met bijvoorbeeld user_ID en therapie. Voor elke therapie komt er dan een regeltje bij in de db.
Dat begrijp ik niet goed, ik heb inderdaad in één veld meerdere dingen opgeslagen per lid. Het moet toch mogelijk zijn om deze aray te ontleden en als er in deze aray iets overeenstemt met $rubriek, dan moet al het relevante van dit lid toch getoond kunnen worden en daarna het volgende lid zoeken dat aan dezelfde criteria zou kunnen voldoen om daar ook al het relevante van te tonen, enz?
Maar zoals Ramon al zegt: omgooien die hap.
Je databasemodel klopt niet.
Ik heb een tabel met daarin de velden ID, naam, adres, telefoon, website,... en uiteraard ook het veld "therapie". Moet ik dan een tweede tabel aanmaken nog eens met ID, therapie en in dat veld 2 17 112 opslaan? Hoe ga ik dat klaar krijgen bij de input, twee verschillende tabellen aanspreken. Enfin, ik ben echt niet mee. Er zijn ruim 120 verschillende therapiemogelijkheden te selecteren. Een voorbeeld misschien?
"In plaats van in het veld therapie 2 17 112 opslaan, maak je een extra therapie tabel aan met bijvoorbeeld user_ID en therapie. Voor elke therapie komt er dan een regeltje bij in de db."
Op het moment dat je een gebruiker opvraagt.. kun je ook alle therapieën opvragen.. en die nummers zijn dan weer gekoppeld aan de therapie...(uiteraard uit een andere tabel).
Dus even een snelle gedachtegang:
tabel: users
velden: user_id / username
tabel: therapieen
velden: therapie_id / therapie_naam
tabel: therapieen_gebruikers ( <-- koppeltabel dus )
velden: user_id / therapie_id
Ok, bedankt. Ik zal het nog een paar keer moeten lezen om het echt te snappen, maar we gaan proberen. Het probleem is wel dat elk lid meerdere therapieën kan aanbieden en hoe ik dat bij de input van zijn gegevensblad uit elkaar moet gaan trekken om in verschillende tabellen te gaan opslaan, is voor mij nog een groot vraagteken.
op de plek waar je nu iets gekunsteld hebt om de verschillende waarden in 1 kolom op te slaan, zul je iets moeten maken waarbij een aantal INSERTquery´s komen om de getallen los op te slaan.
Om aan te denken:
eerste de user opslaan, en pas daarna de therapieën, want anders heb je het user_id nog niet
als er mogelijk een therapie kan verdwijnen, moet je naast een insert- ook een delete-actie uit kunnen voeren.
combinatie user_id+therapie_id zal waarschijnlijk uniek zijn, dus een unique-constraint is op z'n plek
Tabel users:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
|----------+-------+--------+-----------+-------------|
|user_ID |naam |adres |telefoon |website |
|----------+-------+--------+-----------+-------------|
|1 |pietje |straat 1|0612345678 |www.test.nl |
|2 |jantje |laan 21 |0687654321 |www.test.be |
|3 |henkie |weg 10 | | |
|user_ID |naam |adres |telefoon |website |
|----------+-------+--------+-----------+-------------|
|1 |pietje |straat 1|0612345678 |www.test.nl |
|2 |jantje |laan 21 |0687654321 |www.test.be |
|3 |henkie |weg 10 | | |
tabel therapieen
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
|--------------+--------------|
|therapie_ID |naam |
|--------------+--------------|
|1 |knie therapie |
|2 |therapie 2 |
|3 |etc |
|4 |etc |
|5 |etc |
|therapie_ID |naam |
|--------------+--------------|
|1 |knie therapie |
|2 |therapie 2 |
|3 |etc |
|4 |etc |
|5 |etc |
tabel user_therapie (bijvoorbeeld)
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
|------------------+----------|------------|
|user_therapie_ID |user_ID |therapie_ID |
|------------------+----------+------------|
|1 |1 |1 |
|2 |1 |3 |
|3 |2 |1 |
|4 |1 |2 |
|5 |2 |5 |
|6 |2 |3 |
|user_therapie_ID |user_ID |therapie_ID |
|------------------+----------+------------|
|1 |1 |1 |
|2 |1 |3 |
|3 |2 |1 |
|4 |1 |2 |
|5 |2 |5 |
|6 |2 |3 |
Voordeel is niet alleen dat databases zo bedoeld zijn, maar dat je uiteindelijk ook op kunt vragen hoeveel users gebruik maken van therapie 3 bijvoorbeeld.
Gewijzigd op 13/08/2015 16:02:03 door Ramon van Dongen
in principe kun je de kolom user_therapie_ID achterwege laten. De combinatie user_ID + therapie_ID is al ee unieke combinatie. Daar hoeft dus niet ook nog een keer een aparte ID kolom bijgezet te worden.
DELETE FROM user_therapie WHERE .... = .... ?
Dan moet je dus beide (user_ID en therapie_ID) benoemen?
Ik mag hopen dat je weet voor welke user je welke therapie weg wilt halen.
Dus dat mag geen probleem zijn.