Ik zou graag een mail link willen maken van data die ik uit een DB haal, hoe krijg ik dit voor elkaar?
Voorbeeld:
<td><?php echo h($pagina['name']); ?>

De pagina naam is dezelfde naam als in de andere table waar het mail adres in staat.
Yesss!
Mooi dit is gelukt. Nog 1 vraag. Klopt het dan ook dat ik de query meermaals moet uitvoeren omdat ik meerdere users heb?


<?php 
$sql = "SELECT ecos.* , users.user1, users.email FROM ecos INNER JOIN users ON ecos.user1 = users.user1";
$result_user1 = mysqli_query($db, $sql);

$sql = "SELECT ecos.* , users.user2, users.email FROM ecos INNER JOIN users ON ecos.user2 = users.user2";
$result_user2 = mysqli_query($db, $sql);
?>
Huh?!?
Waarom heb je nu opeens twee velden met users (user1 en user2)?

<?php 
$sql = "SELECT ecos.* , users.user1, users.email FROM ecos INNER JOIN users ON ecos.user1 = users.user1";
$result_user1 = mysqli_query($db, $sql);
?>


Maar hoe krijg ik nu het mail adres van user2 correct?
Je vergeet user2 ook in je SELECT te benoemen.

Maar wat is het verschil tussen user1 en user2?
Ik heb de tabel users
(id, naam, short, email)
Hier staan in:
(id, Ruud, ru, [email protected])
(id, Piet, pi, [email protected])
(id, Linda, li, [email protected])

tabel ecos
(id, naam, user1, user2, user3)
hier staat in:
(id, nieuw, ru, pi, li)
(id, nieuw, pi, ru, li)

Ik wil nu een query waarbij ik alle ecos en user te zien krijg gelinkt aan short en user1, user2, user3.
Maar user is dan ook meteen de link naar mail


<?php 
$sql = "SELECT ecos.*, users.* FROM ecos INNER JOIN users WHERE ecos.user1 = users.short";
$result = mysql_query($sql);

          while($result = mysqli_fetch_assoc($results)) {
     ?>
        <tr>
          <td><?php echo $result['id']; ?></td>
          <td><?php echo '<a href="mailto:'.$result['email'].'">'.$result['user1'].'</a>'; ?></td>
          <td><?php echo '<a href="mailto:'.$result['email'].'">'.$result['user2'].'</a>'; ?></td>
          <td><?php echo '<a href="mailto:'.$result['email'].'">'.$result['user3'].'</a>'; ?></td>
        </tr>
<?php }
} ?>

Nu krijg ik wel alles te zien in mijn while loop maar de mails in de 2e en 3e rij komen dan niet meer overeen met de users
Sorry, maar er staat nog steeds een vraag open.....
Die ik hierboven al twee keer gesteld heb.

- Ariën - op 30/03/2020 13:31:51

Huh?!?
Waarom heb je nu opeens twee velden met users (user1 en user2)?


- Ariën - op 31/03/2020 23:13:52

Je vergeet user2 ook in je SELECT te benoemen.

Maar wat is het verschil tussen user1 en user2?

Ik zet hoog in dat je databasestructuur verkeerd is opgebouwd doordat je horizontaal werkt, in plaats van verticaal. Als een eco (wat is dat eigenlijk, uit interesse?) meerdere users heeft, dan moet je een aparte tabel maken users_eco waarin je de users koppelt met eco's.
je zou een koppeltabel tussen eco en user moeten hebben.
Dan maakt het niet uit of er 1, 3 of wel 100 users aan een "eco" gekoppeld worden.


tabel eco_user
eco_id
user_id


Daarbij heeft eco_id een foreign key relatie met id van de tabel ecos en user_id met id in users

en dan wordt de query

SELECT e.naam,
       u.naam username,
       u.email
FROM ecos e
JOIN eco_user eu ON eu.eco_id = e.id
JOIN users u ON u.id = eu.user_id
WHERE e.id = 2;

Reageren