PDA

Bekijk Volledige Versie : laatste ID opvangen (PHP MYSQL)



Matthijs de Z
15/12/05, 15:45
Hallo,



Even een vraagje over het toevoegen van gegevens naar een database, waarbij
de gegevens in verschillende tabellen staan en middels een ID gekoppeld zijn
aan elkaar.





Stel (puur even voor het voorbeeld) de tabel structuur ziet er zo uit:



Tabel 1 (hond)



| ID (auto increment) | roepnaam | ras |



Tabel 2 (baasje)



| ID (auto increment) | Voornaam | Achternaam | tussenvoegsel |
IDnaamhond |



als ik die gegevens wil invoeren, heb ik de ID nodig uit tabel 1 om die toe
te voegen aan tabel twee.





$query="insert into $doggy values('','$roepnaam','$ras')";

$result=mysql_db_query("$dbname",$query);



Maar hoe haal ik nu de juiste ID uit de tabel om die toe te kunnen voegen
middels



$query="insert into $baas values('','$Voornaam','$Achternaam','
$tussenvoegsel','$IDnaamhond')";

$result=mysql_db_query("$dbname",$query);



Ik zat al te kijken naar mysql_insert_id. Zou dit dan de beste manier zijn:



$query="insert into $doggy values('','$roepnaam','$ras')";

$result=mysql_db_query("$dbname",$query);

$IDnaamhond = mysql_insert_id();



$query="insert into $baas values('','$Voornaam','$Achternaam','
$tussenvoegsel','$IDnaamhond')";

$result=mysql_db_query("$dbname",$query);



of zitten hier wat hiaten in en kan het beter op een andere manier?

Groeten,



Matthijs

Jan Kuiken
15/12/05, 17:00
Matthijs de Z wrote:

> Even een vraagje over het toevoegen van gegevens naar een database, waarbij
> de gegevens in verschillende tabellen staan en middels een ID gekoppeld zijn
> aan elkaar.

> Stel (puur even voor het voorbeeld) de tabel structuur ziet er zo uit:
>
> Tabel 1 (hond)
>
> | ID (auto increment) | roepnaam | ras |
>
> Tabel 2 (baasje)
>
> | ID (auto increment) | Voornaam | Achternaam | tussenvoegsel |
> IDnaamhond |
>
> als ik die gegevens wil invoeren, heb ik de ID nodig uit tabel 1 om die toe
> te voegen aan tabel twee.
>
> $query="insert into $doggy values('','$roepnaam','$ras')";
> $result=mysql_db_query("$dbname",$query);
>
> Maar hoe haal ik nu de juiste ID uit de tabel om die toe te kunnen voegen
> middels
>
> $query="insert into $baas values('','$Voornaam','$Achternaam','
> $tussenvoegsel','$IDnaamhond')";
> $result=mysql_db_query("$dbname",$query);
>
> Ik zat al te kijken naar mysql_insert_id. Zou dit dan de beste manier zijn:
>
> $query="insert into $doggy values('','$roepnaam','$ras')";
> $result=mysql_db_query("$dbname",$query);
> $IDnaamhond = mysql_insert_id();
>
> $query="insert into $baas values('','$Voornaam','$Achternaam','
> $tussenvoegsel','$IDnaamhond')";
>
> $result=mysql_db_query("$dbname",$query);
>
> of zitten hier wat hiaten in en kan het beter op een andere manier?

Als je aan de functie mysql_insert_id ook nog de link_identifier
meegeeft waarmee je de database hebt geopend, kan er niets misgaan.
Dus :
$link = mysql_connect ("kraemer", "marliesle", "secret");

en later :

$IDnaamhond = mysql_insert_id($link);

en dan :

$query="INSERT INTO baasje
(Voornaam,Achternaam,tuusenvoegsel,IDnaamhond)
VALUES
('$Voornaam','$Achternaam','$tussenvoegsel',$IDnaa mhond)";
$result=mysql_db_query("$dbname",$query);

Waarbij ik een paar dingen heb veranderd :
- IDNaamhond is als het goed is een integer veld en dan horen en
geen '' om de waarde heen te staan.
- Het Autincrement veld vult zichzelf in en dan moet je geen
lege string '' proberen in te voeren.
- kwestie van smaak, maar ik hou meer van SQL-termen in hoofdletters.

En dan nog een paar dingen :
- Waarschijnlijk gebruik je 1 database, dan kun je na het connecten
een database selecteren met mysql_select_db en daarna altijd
mysql_query gebruiken ipv. mysql_db_query
- Wat ga je doen als 1 baasje 2 of meer honden heeft?

Jan Kuiken

Matthijs de Z
15/12/05, 17:15
> Als je aan de functie mysql_insert_id ook nog de link_identifier
> meegeeft waarmee je de database hebt geopend, kan er niets misgaan.
> Dus :
> $link = mysql_connect ("kraemer", "marliesle", "secret");
>
> en later :
>
> $IDnaamhond = mysql_insert_id($link);
>
> en dan :
>
> $query="INSERT INTO baasje
> (Voornaam,Achternaam,tuusenvoegsel,IDnaamhond)
> VALUES
> ('$Voornaam','$Achternaam','$tussenvoegsel',$IDnaa mhond)";
> $result=mysql_db_query("$dbname",$query);

OK, lijkt me duidelijk. Dan ga ik het zo opbouwen. Bedankt.


> Waarbij ik een paar dingen heb veranderd :
[knip even een paar tips]

> - Wat ga je doen als 1 baasje 2 of meer honden heeft?

Helemaal niets ;-) Want dit was puur even als voorbeeld. Normaal had je
zeker gelijk en zou het beter zijn geweest een baasjes ID aan de hond te
koppelen ipv andersom. Maar gelukkig ben ik in zijn geheel niet bezig met
een honden-baasjes database. Dus dat scheelt weer ;-)
Groeten,

Matthijs