Maak van $sql data een link met data van ander table
Voorbeeld:
<td>
De pagina naam is dezelfde naam als in de andere table waar het mail adres in staat.
Iets als dit?
Code (php)
1
2
3
4
5
2
3
4
5
CREATE TABLE `ecos` (`id` int(11) NOT NULL AUTO_INCREMENT, `eco_nr` varchar(55) DEFAULT NULL `PE` varchar(11) DEFAULT NULL, PRIMARY KEY (`id`));
INSERT INTO `epos` VALUES (1, 'E_P6639_01', 'RCLA'');
CREATE TABLE `admins` (`id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `mail` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`));
INSERT INTO `admins` VALUES (1, 'RCLA', '[email protected]');
INSERT INTO `epos` VALUES (1, 'E_P6639_01', 'RCLA'');
CREATE TABLE `admins` (`id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `mail` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`));
INSERT INTO `admins` VALUES (1, 'RCLA', '[email protected]');
Gewijzigd op 27/03/2020 18:36:53 door - Ariën -
Klopt moet erbij, maar werkt dan nog niet.
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
34
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
34
<?php
// maak een connectie aan:
$mysqli = mysqli_connect("localhost", "user", "password", "databasenaam");
// Als er geen verbinding wordt gemaakt
if (!$mysqli) {
echo "Kan geen verbinding maken: " .mysqli_connect_errno() . PHP_EOL;
exit; // stop het script
}
// Plaats de query in het geheugen ($sql)
$sql = "SELECT * FROM admins";
// voer de query uit
$result = mysqli_query($mysqli, $sql);
// controleer of de query uitgevoerd kan worden
if($result == true){
// tel of er records gevonden zijn (hoger dan aantal wat 0 is)
if(mysqli_num_rows($result)> 0) {
// haal alle data op en verwerk deze in een loop in een array
while($item = mysqli_fetch_assoc($result)) {
echo '<a href="mailto:'.$item['mail'].'">'.$item['username'].'</a>';
}
} else {
// helaas, het aantal is 0...
echo "Er is niemand gevonden in de tabel.";
}
} else {
// als de query niet uitgevoerd wilt worden...
echo "Er is een fout opgetreden bij uitvoer van de query: ".mysqli_error($mysqli);
}
?>
// maak een connectie aan:
$mysqli = mysqli_connect("localhost", "user", "password", "databasenaam");
// Als er geen verbinding wordt gemaakt
if (!$mysqli) {
echo "Kan geen verbinding maken: " .mysqli_connect_errno() . PHP_EOL;
exit; // stop het script
}
// Plaats de query in het geheugen ($sql)
$sql = "SELECT * FROM admins";
// voer de query uit
$result = mysqli_query($mysqli, $sql);
// controleer of de query uitgevoerd kan worden
if($result == true){
// tel of er records gevonden zijn (hoger dan aantal wat 0 is)
if(mysqli_num_rows($result)> 0) {
// haal alle data op en verwerk deze in een loop in een array
while($item = mysqli_fetch_assoc($result)) {
echo '<a href="mailto:'.$item['mail'].'">'.$item['username'].'</a>';
}
} else {
// helaas, het aantal is 0...
echo "Er is niemand gevonden in de tabel.";
}
} else {
// als de query niet uitgevoerd wilt worden...
echo "Er is een fout opgetreden bij uitvoer van de query: ".mysqli_error($mysqli);
}
?>
Gewijzigd op 27/03/2020 18:36:30 door - Ariën -
Alleen als ik dit script aanpas voor mijn pagina krijg ik op iedere link hetzelfde mail adres.
Hoe kan ik dit oplossen, dit is wat ik geprobeerd heb. Misschien dat ik er helemaal naast zit :).
Waar komt $eco en $admin vandaan?
wellicht is het handig dat je wat meer code laat zien.
Gewijzigd op 27/03/2020 23:33:59 door Ruud Clauwers
Zet het aub even tussen code-tags door je bericht te wijzigen. Dan is het beter leesbaarder. Zie ook de opmaakcodes in de Veelgestelde Vragen.
Code (php)
1
2
3
4
5
2
3
4
5
CREATE TABLE `ecos` (`id` int(11) NOT NULL AUTO_INCREMENT, `eco_nr` varchar(55) DEFAULT NULL `PE` varchar(11) DEFAULT NULL, PRIMARY KEY (`id`));
INSERT INTO `epos` VALUES (1, 'E_P6639_01', 'RCLA'');
CREATE TABLE `admins` (`id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `mail` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`));
INSERT INTO `admins` VALUES (1, 'RCLA', '[email protected]');
INSERT INTO `epos` VALUES (1, 'E_P6639_01', 'RCLA'');
CREATE TABLE `admins` (`id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `mail` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`));
INSERT INTO `admins` VALUES (1, 'RCLA', '[email protected]');
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
require_once('../../../private/initialize.php');
require_login();
$eco_set = find_all_ecos();
$admin_set = find_all_admins();
?>
<?php $page_title = 'Eco'; ?>
<?php include(SHARED_PATH . '/staff_header.php'); ?>
<div id="content">
<div class="ecos listing">
<h1>ECO</h1>
<div class="actions">
<a class="action" href="#"></a><br>
<a class="action" href="<?php echo url_for('/staff/ecos/new.php'); ?>">Maak een nieuwe Eco aan.</a>
</div>
<table class="list">
<tr>
<th>ID</th>
<th>Eco nummer</th>
<th>User</th>
</tr>
<?php while($admin = mysqli_fetch_assoc($admin_set){ ?>
<?php while($eco = mysqli_fetch_assoc($eco_set) { ?>
<tr>
<td><?php echo h($eco['id']); ?></td>
<td><a href="#"><?php echo h($eco['eco_nr']); ?></a></td>
<td><?php echo '<a href="mailto:'.$admin['email'].'">'.$eco['PE'].'</a>' ?></td>
</tr>
<?php } ?>
</table>
<?php
mysqli_free_result($eco_set);
?>
</div>
</div>
<?php include(SHARED_PATH . '/staff_footer.php'); ?>
require_once('../../../private/initialize.php');
require_login();
$eco_set = find_all_ecos();
$admin_set = find_all_admins();
?>
<?php $page_title = 'Eco'; ?>
<?php include(SHARED_PATH . '/staff_header.php'); ?>
<div id="content">
<div class="ecos listing">
<h1>ECO</h1>
<div class="actions">
<a class="action" href="#"></a><br>
<a class="action" href="<?php echo url_for('/staff/ecos/new.php'); ?>">Maak een nieuwe Eco aan.</a>
</div>
<table class="list">
<tr>
<th>ID</th>
<th>Eco nummer</th>
<th>User</th>
</tr>
<?php while($admin = mysqli_fetch_assoc($admin_set){ ?>
<?php while($eco = mysqli_fetch_assoc($eco_set) { ?>
<tr>
<td><?php echo h($eco['id']); ?></td>
<td><a href="#"><?php echo h($eco['eco_nr']); ?></a></td>
<td><?php echo '<a href="mailto:'.$admin['email'].'">'.$eco['PE'].'</a>' ?></td>
</tr>
<?php } ?>
</table>
<?php
mysqli_free_result($eco_set);
?>
</div>
</div>
<?php include(SHARED_PATH . '/staff_footer.php'); ?>
Gewijzigd op 27/03/2020 23:48:23 door Ruud Clauwers
Is een join niet beter, zodat je aan 1 query voldoende hebt?
Sorry ik heb in bovenstaande code <td> aangepast met de data die ik wil laten zien. Nu wil ik dat deze data tevens een mail link is, Het mail adres staat in de andere tabel 'admins' in de DB. Moet ik de $vars vergelijken of moet ik dit al van te voren in de DB doen?
Wat voor queries draai je? Zit er er een relatie tussen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
function find_all_ecos() {
global $db;
$sql = "SELECT * FROM ecos ";
$sql .= "ORDER BY id ASC";
$result = mysqli_query($db, $sql);
confirm_result_set($result);
return $result;
}
function find_all_admins() {
global $db;
$sql = "SELECT * FROM admins ";
$sql .= "ORDER BY last_name ASC, first_name ASC";
$result = mysqli_query($db, $sql);
confirm_result_set($result);
return $result;
}
[code]<?php>
function find_all_ecos() {
global $db;
$sql = "SELECT * FROM ecos ";
$sql .= "ORDER BY id ASC";
$result = mysqli_query($db, $sql);
confirm_result_set($result);
return $result;
}
function find_all_admins() {
global $db;
$sql = "SELECT * FROM admins ";
$sql .= "ORDER BY last_name ASC, first_name ASC";
$result = mysqli_query($db, $sql);
confirm_result_set($result);
return $result;
}
[code]<?php>
Gewijzigd op 28/03/2020 00:05:13 door Ruud Clauwers
Gewijzigd op 28/03/2020 00:08:40 door - Ariën -
nee
Gewijzigd op 28/03/2020 00:27:23 door - Ariën -
Code (php)
Maar dat werkt niet.
Ik weet dat ik iets niet goed doe maar zit hier al 3 dagen mee te $%^&&*
Dan hoef je geen query in een query te draaien.
Toevoeging op 28/03/2020 00:44:06:
Ruud Clauwers op 28/03/2020 00:20:26:
nee
Dus wel. Dat blijkt uit je code.