INSERT ID in koppeltabel met loop laatste ID user tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jop B

Jop B

17/01/2020 13:57:13
Quote Anchor link
Goedemiddag,


Ik ben het stoeien met het volgende:
Ik heb 3 tabellen waaronder 1 koppeltabel, een tabel users en een tabel category.

Als je een nieuwe user toevoegt en je voegt daar 2 categorieën aan toe dan wil ik dat de user ID en de categorie ID in de koppeltabel worden gezet.
+--------+
| userid |
+--------+
| 1 |
+--------+
| 2 |
+--------+

+--------+
| catid |
+--------+
| 1 |
+--------+
| 2 |
+--------+
| 3 |
+--------+
| 4 |
+--------+
| 5 |
+--------+

+--------+--------+
| userid | catid |
+--------+--------+
| 1 | 2 |
+--------+--------+
| 1 | 4 |
+--------+--------+
| 2 | 1 |
+--------+--------+
| 2 | 5 |
+--------+--------+

Stel ik voeg een 3e user toe met de categorie 3,4 en5 dan moet de uitkomste in de koppeltabel zijn

+--------+--------+
| userid | catid |
+--------+--------+
| 1 | 2 |
+--------+--------+
| 1 | 4 |
+--------+--------+
| 2 | 1 |
+--------+--------+
| 2 | 5 |
+--------+--------+
| 3 | 3 |
+--------+--------+
| 3 | 4 |
+--------+--------+
| 3 | 5 |
+--------+--------+

Dit is wat ik geprobeerd heb in PHP
Ik maak een array loop met de categorieën zodat deze word doorlopen en zoveel word ingevoerd aan het aantal categorieën die er voor die user zijn.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
//$category is een array
        if (mysqli_query($connection, $insertnewuser)){
            $lastuserID    = mysqli_insert_id($connection);
            foreach($category as $cat){
                $insertrelation    = "INSERT INTO $relation (userid, catid) VALUES ('$lastuserID', '$cat['value'];')";
                mysqli_query($connection, $insertrelation);
            }
        }

?>


Helaas werkt het niet zoals ik dacht en zou graag een duwtje in de goede richting willen hebben.

Gr. Jop
 
PHP hulp

PHP hulp

20/02/2020 15:52:33
 
Thomas van den Heuvel

Thomas van den Heuvel

17/01/2020 14:00:57
Quote Anchor link
Waar voeg je de user toe? Dit zou in dezelfde pagina-aanroep moeten gebeuren, anders bevat $connection waarschijnlijk geen insert-id (meer).
 
Jop B

Jop B

17/01/2020 19:19:11
Quote Anchor link
Hi Thomas,


In de file staat boven de code die ik stuurde de regels voor het invoeren van de user.
Vandaar dat ik het if statement heb gebruikt in bovenstaande code.
Als ik in PHPmyadmin kijk word wel de user netjes ingevoerd maar blijft de koppeltabel leeg.
 
- Ariën -
Beheerder

- Ariën -

17/01/2020 19:22:11
Quote Anchor link
Echo eens $insertrelation nadat je die aanmaakt?
 
Jop B

Jop B

17/01/2020 19:30:49
Quote Anchor link
Deze echo blijft leeg.

Als ik de array doorloop en de waarde zelf echo krijg ik ze wel
Terug. Ik ga alles nog eens doorlopen
 
Thomas van den Heuvel

Thomas van den Heuvel

17/01/2020 19:41:09
Quote Anchor link
Waarschijnlijk gaan je categoriequeries mis, immers:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
INSERT INTO $relation (userid, catid) VALUES ('$lastuserID', '$cat['value'];')
                                                                           ^ wat doet deze punt-komma hier?


Echo voor de gein anders deze query eens. Dan zie je waarschijnlijk direct dat deze syntactisch niet klopt.

Daarnaast, dit is in zekere zin een batch aan queries: je voegt een user toe, en dan een aantal gerelateerde categorieën. Je wilt dus eigenlijk dat ofwel alles wordt ingevoegd, of helemaal niets, en niet, zoals nu gebeurt, enkel een user (een onvolledige batch). Op elke plaats waar dit gebeurt kan hierdoor je administratie uit de pas gaan lopen.

Hiervoor zijn database-transacties bedoeld. Deze garanderen dat alle wijzigingen in zijn geheel, of in zijn geheel niet worden doorgevoerd.
 
Jop B

Jop B

17/01/2020 20:11:57
Quote Anchor link
Ik heb de query aangepast en zet de array value om naar een variabel en gebruik de variabel in de query
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
foreach($category as $cat){
                $cat = $cat['value'];
                $insertrelation    = "INSERT INTO $relation (userid, catid) VALUES ('$lastuserID', '$cat')";
mysqli_query($connection, $insertrelation);
}

?>


Het werkt nu naar behoren:)

@Thomas de punt komma was een type foutje.
 



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.