Maak van $sql data een link met data van ander table

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Ruud Clauwers

Ruud Clauwers

28/03/2020 00:59:22
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $sql = SELECT `admins`.`id`, `admins`.`autograph`, `ecos`.`admin_id`, `admins`.`email` FROM `admins`, `ecos`; ?>
Gewijzigd op 28/03/2020 01:00:40 door Ruud Clauwers
 
PHP hulp

PHP hulp

19/03/2024 08:34:08
 
- Ariën  -
Beheerder

- Ariën -

28/03/2020 01:10:08
Quote Anchor link
Waarom leg je dan geen relatie aan via een join? Nu maak je overbodige queries door bij elke admin alle eco's steeds opnieuw op te halen.

Dus koppel je admins eens aan eco's met een ID-nummer.
Gewijzigd op 28/03/2020 01:10:41 door - Ariën -
 
Ruud Clauwers

Ruud Clauwers

30/03/2020 00:47:18
Quote Anchor link
Beste,

Sorry dat ik niet helemaal mee kan komen maar heb sinds kort de draad opgepakt.
Ik heb nu een join gemaakt in mijn query, krijg vervolgens de data te zien.
Loop nu ook een het volgende aan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
CREATE TABLE `ecos` (`id` int(11) NOT NULL AUTO_INCREMENT, `user1` varchar(55) DEFAULT NULL,  `user2` varchar(11) DEFAULT NULL, `user3` varchar(55) DEFAULT NULL PRIMARY KEY (`id`));
INSERT INTO `ecos` VALUES (1, 'Ruud', 'Jan', 'Jaap');

CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL, `mail` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`));
INSERT INTO `users` VALUES (1, 'RCLA', '[email protected]'),(2, 'Jan', '[email protected]');

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php ?>
<td><?php echo '<a href="mailto:'.$user['email_user1'].'">'.$eco['user1'].'</a>'; ?></td>
<td><?php echo '<a href="mailto:'.$user['email_user2'].'">'.$eco['user2'].'</a>'; ?></td>
<td><?php echo '<a href="mailto:'.$user['email_user3'].'">'.$eco['user3'].'</a>'; ?></td>
</tr>
<?php ?>


Wat ik nu wil bereiken is dat ik op deze pagina de users per eco laat zien, wanneer op de naam wordt geklikt moet ook email met adres verschijnen..
Ik krijg nu steeds de link niet gelegd tussen de $eco['user1'] en $admins['email'].
Gewijzigd op 30/03/2020 00:58:52 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

30/03/2020 01:00:43
Quote Anchor link
De tags werken hier met blokhaken [ en ]. Zie ook de opmaakcodes in de Veelgestelde Vragen.

Hoe ziet je Join er dan uit? En waarom heb je dan nog $user én $eco?
Dat lijkt me dus juist overbodig omdat je die in één keer op wilt halen.
 
Ruud Clauwers

Ruud Clauwers

30/03/2020 10:34:08
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$sql
="SELECT ecos.*, users.username, users.mail FROM ecos INNER JOIN admins";
$results = mysqli_query($db, $sql);
confirm_result_set($results);
?>
 
- Ariën  -
Beheerder

- Ariën -

30/03/2020 10:35:33
Quote Anchor link
En wat doet confirm_result_set?
 
Ruud Clauwers

Ruud Clauwers

30/03/2020 10:49:16
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
  <?php
    
          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['user2'].'</a>'; ?></td>
        </tr>
<?php }
}
?>
 
- Ariën  -
Beheerder

- Ariën -

30/03/2020 11:49:28
Quote Anchor link
Ik mis wat contextuele uitleg over wat je gedaan hebt?
Is die code nu die functie? Of heb je je code aangepast? Want dit zier er goed uit.
 
Ruud Clauwers

Ruud Clauwers

30/03/2020 12:08:58
Quote Anchor link
Alleen ik krijg ik nu niet het juiste mail adres bij de juiste user en ik krijg alle records te zien.
 
- Ariën  -
Beheerder

- Ariën -

30/03/2020 12:53:33
Quote Anchor link
Je vergeet een voorwaarde te maken met ON.

https://www.w3schools.com/sql/sql_join_inner.asp
 
Ruud Clauwers

Ruud Clauwers

30/03/2020 13:27:42
Quote Anchor link
Yesss!
Mooi dit is gelukt. Nog 1 vraag. Klopt het dan ook dat ik de query meermaals moet uitvoeren omdat ik meerdere users heb?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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);
?>
 
- Ariën  -
Beheerder

- Ariën -

30/03/2020 13:31:51
Quote Anchor link
Huh?!?
Waarom heb je nu opeens twee velden met users (user1 en user2)?
 
Ruud Clauwers

Ruud Clauwers

31/03/2020 22:48:06
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?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?
 
- Ariën  -
Beheerder

- Ariën -

31/03/2020 23:13:52
Quote Anchor link
Je vergeet user2 ook in je SELECT te benoemen.

Maar wat is het verschil tussen user1 en user2?
 
Ruud Clauwers

Ruud Clauwers

01/04/2020 00:44:37
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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
Gewijzigd op 01/04/2020 00:45:10 door Ruud Clauwers
 
- Ariën  -
Beheerder

- Ariën -

01/04/2020 00:47:15
Quote Anchor link
Sorry, maar er staat nog steeds een vraag open.....
 
Ruud Clauwers

Ruud Clauwers

01/04/2020 01:08:52
Quote Anchor link
welke vraag?
 
- Ariën  -
Beheerder

- Ariën -

01/04/2020 01:25:56
Quote Anchor link
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.
Gewijzigd op 01/04/2020 01:29:23 door - Ariën -
 
Ivo P

Ivo P

01/04/2020 09:54:36
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
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;
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.