naam, beschrijving loop
Ik ben bezig om een overzicht te krijgen van naam, beschrijving en plaatje van een training, maar krijg naam en beschrijving in loop. bijvoorbeeld als een training 1 trainingstype heeft, krijg je naam en beschrijving 1 keer. als een training 2 trainingstype heeft, krijg je 2 keer naam en beschrijving.
tabellen:
training
id
naam
beschrijving
categorie
id
cat_naam
training_cat
cat_id
training_id
training_type_training
training_type_training_id
training_id
type_training
id
type_naam
type_plaatje
class/training_communicatie
overzicht-training_soort_communicatie.php
tabellen:
training
id
naam
beschrijving
categorie
id
cat_naam
training_cat
cat_id
training_id
training_type_training
training_type_training_id
training_id
type_training
id
type_naam
type_plaatje
class/training_communicatie
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
27
28
29
30
31
32
33
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
<?php
require_once 'Singleton.php';
class training_communicatie {
public $id, $afdeling;
protected $connect;
protected $sql;
public function __construct() {
$this->connect = Singleton::getconnect();
}
public function __destruct() {
$this->connect = null;
}
public function select_training() {
$afdeling_subafdeling = 'SELECT DISTINCT train.training_naam AS Training, train.beschrijving AS Beschrijving, cat.cat_naam AS Categories, typetrain.type_plaatje AS Plaatjes
FROM training train
JOIN training_cat train_cat ON train_cat.training_id = train.id
JOIN categorie cat ON cat.id = train_cat.cat_id
JOIN training_type_training trainingtype ON trainingtype.training_id = train.id
JOIN type_training typetrain ON typetrain.id = trainingtype.training_type_training_id
WHERE cat_naam="Ontwikkeling" ORDER BY train.training_naam
';
return $resultaat_subafdeling=mysql_query($afdeling_subafdeling);
}
}
?>
require_once 'Singleton.php';
class training_communicatie {
public $id, $afdeling;
protected $connect;
protected $sql;
public function __construct() {
$this->connect = Singleton::getconnect();
}
public function __destruct() {
$this->connect = null;
}
public function select_training() {
$afdeling_subafdeling = 'SELECT DISTINCT train.training_naam AS Training, train.beschrijving AS Beschrijving, cat.cat_naam AS Categories, typetrain.type_plaatje AS Plaatjes
FROM training train
JOIN training_cat train_cat ON train_cat.training_id = train.id
JOIN categorie cat ON cat.id = train_cat.cat_id
JOIN training_type_training trainingtype ON trainingtype.training_id = train.id
JOIN type_training typetrain ON typetrain.id = trainingtype.training_type_training_id
WHERE cat_naam="Ontwikkeling" ORDER BY train.training_naam
';
return $resultaat_subafdeling=mysql_query($afdeling_subafdeling);
}
}
?>
overzicht-training_soort_communicatie.php
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
27
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
<?php
require_once 'class/training_communicatie.php';
$afdeling1 = new training_communicatie();
$alle_afdelingen = $afdeling1->select_training();
echo '<table border="0" cellspacing="4" cellpadding="4"><tr>';
$intRows = 0;
//foreach($alle_afdelingen as $a)
while($a=mysql_fetch_assoc($alle_afdelingen))
{
echo "<td>";
$intRows++;
echo '<td>' . $a['Training'] . '</td>';
$location = $a['Plaatjes'];
echo '<td>' . $a['Beschrijving'] . '</td>';
echo "<img src='$location'>";
if(($intRows)%2==0)
{
echo"</tr>";
}
}
echo '</table>';
?>
require_once 'class/training_communicatie.php';
$afdeling1 = new training_communicatie();
$alle_afdelingen = $afdeling1->select_training();
echo '<table border="0" cellspacing="4" cellpadding="4"><tr>';
$intRows = 0;
//foreach($alle_afdelingen as $a)
while($a=mysql_fetch_assoc($alle_afdelingen))
{
echo "<td>";
$intRows++;
echo '<td>' . $a['Training'] . '</td>';
$location = $a['Plaatjes'];
echo '<td>' . $a['Beschrijving'] . '</td>';
echo "<img src='$location'>";
if(($intRows)%2==0)
{
echo"</tr>";
}
}
echo '</table>';
?>
En wat lukt er dan niet?
Volgens mij geeft dit een true of een false terug:
return $resultaat_subafdeling=mysql_query($afdeling_subafdeling);
Volgens mij geeft dit een true of een false terug:
return $resultaat_subafdeling=mysql_query($afdeling_subafdeling);
- SanThe - op 18/05/2014 16:58:42:
En wat lukt er dan niet?
Volgens mij geeft dit een true of een false terug:
return $resultaat_subafdeling=mysql_query($afdeling_subafdeling);
Volgens mij geeft dit een true of een false terug:
return $resultaat_subafdeling=mysql_query($afdeling_subafdeling);
ik heb een training toegevoegd met als type training: klassikaal, e-learning
wat hij dan doet is laat: naam training en beschrijving 2 keer zien gebaseerd op het aantal type trainingen, maar hoort de naam en beschrijving maar 1 keer te laten zien.
En wat geeft die query terug in phpmyadmin?
Dat komt simpelweg omdat je twee records in de koppeltabel hebt zitten en bij een simpele join levert dat dus twee records in de resultset op. Ofwel dat moet je gaan filteren in php, ofwel je moet even kijken naar de MySQL functie GROUP_CONCAT, om alle categorien te gaan grouperen en zo 1 record over te houden met een kolom waarin alle categorien staan.
Oei, je hebt gelijk! het ligt aan de query! Als ik hem uitvoer dan krijg ik ook 2 keer het uitkomst!
Weet jij misschien hoe ik de query beter kan herschrijven?
Toevoeging op 18/05/2014 18:09:39:
ik heb nu deze query gemaakt, alleen nu heb ik een andere probleem. De dingen die ik groupeer zijn plaatjes en als ik ze groepeer kan ik ze niet meer zien!
Dit is de query:
SELECT DISTINCT train.training_naam AS Training, train.beschrijving AS Beschrijving, cat.cat_naam AS Categories, GROUP_CONCAT( typetrain.type_plaatje ) AS Plaatjes
FROM training train
JOIN training_cat train_cat ON train_cat.training_id = train.id
JOIN categorie cat ON cat.id = train_cat.cat_id
JOIN training_type_training trainingtype ON trainingtype.training_id = train.id
JOIN type_training typetrain ON typetrain.id = trainingtype.training_type_training_id
WHERE cat_naam = "Communicatie"
ORDER BY train.training_naam
Dit is de eigenschap van het mislukte afbeelding: http://localhost/fz/Images/klassikaal.png,Images/elearning.png,Images/expertise.png,Images/klassikaal.png,Images/elearning.png
Weet jij misschien hoe ik de query beter kan herschrijven?
- SanThe - op 18/05/2014 17:15:16:
En wat geeft die query terug in phpmyadmin?
Toevoeging op 18/05/2014 18:09:39:
ik heb nu deze query gemaakt, alleen nu heb ik een andere probleem. De dingen die ik groupeer zijn plaatjes en als ik ze groepeer kan ik ze niet meer zien!
Dit is de query:
SELECT DISTINCT train.training_naam AS Training, train.beschrijving AS Beschrijving, cat.cat_naam AS Categories, GROUP_CONCAT( typetrain.type_plaatje ) AS Plaatjes
FROM training train
JOIN training_cat train_cat ON train_cat.training_id = train.id
JOIN categorie cat ON cat.id = train_cat.cat_id
JOIN training_type_training trainingtype ON trainingtype.training_id = train.id
JOIN type_training typetrain ON typetrain.id = trainingtype.training_type_training_id
WHERE cat_naam = "Communicatie"
ORDER BY train.training_naam
Dit is de eigenschap van het mislukte afbeelding: http://localhost/fz/Images/klassikaal.png,Images/elearning.png,Images/expertise.png,Images/klassikaal.png,Images/elearning.png
Erwin H op 18/05/2014 17:19:28:
Dat komt simpelweg omdat je twee records in de koppeltabel hebt zitten en bij een simpele join levert dat dus twee records in de resultset op. Ofwel dat moet je gaan filteren in php, ofwel je moet even kijken naar de MySQL functie GROUP_CONCAT, om alle categorien te gaan grouperen en zo 1 record over te houden met een kolom waarin alle categorien staan.
Gewijzigd op 18/05/2014 18:10:45 door george mendel




