PHP/MySQL "ta med" id från första tabellen

Permalänk
Medlem

PHP/MySQL "ta med" id från första tabellen

Hur gör jag? Har suttit en vecka och letat så bara seriösa svar tack
Grundidén är en adressbok med alla uppgifter utom telefonnumren i en tabell och telefonnumren i en annan. (Detta är bara en del av hela databasen)
I första formuläret fyller du i allt inklusive ett telefonnummer, spara, klicka på knapp för "nytt telefonnummer" (Hade gärna haft det innan "spara" men jag har inte lyckats lösa det)
Tabeller: friends, numbers
Formulär: Namn, Nummer

Vad ska jag lägga till följande kod för att få med id (primärnyckel, auto increment) till nästa formulär? Har testat med allt jag hittat, bland annat LAST_INSERT_ID(), men inget har fungerat. Behöver jag påpeka att jag är newbee...

insert.php

<?php
define()
include()

$db = new db();

$name = $_POST['name'];
$address = $_POST['address'];
$city = $_POST['city'];

mysql_query("INSERT INTO friends (name, address, city) VALUES
('$name', '$address', '$city')
");

$id = $_POST['id'];
$number = $_POST['number'];
$type = $_POST['type'];

mysql_query("INSERT INTO numbers (id, number, type) VALUES
('$id', '$number', '$type')
");

?>

Permalänk
Medlem

Id får du så hör:

$id = mysql_insert_id();

....

Sen bör du lagra id som friend_id i numbers-tabellen, id ska vara unik om du vill ha fler nummer till varje person. Och sen kopplar du ihop med id (i friends) till friend_id (i numbers).

Hoppas jag förstod dig rätt och du förstår var jag menar.

mysql_query("INSERT INTO numbers (id, friend_id, number, type) VALUES
(NULL, $id, '$number', '$type');

Visa signatur

MacBook Pro 14" | M1 Pro 10/16-Core | 32GB | 1TB
Legion Pro 16" | Ryzen 7 5800H | 16 GB | 1TB | GeForce RTX 3060

Permalänk
Medlem

Tack för att snabbt svar.
Jag har koll på primärnycklar och id, glömde bara skriva ut det. (Fast det är nog det enda jag har koll på)
Efter mycket trixande fick jag ihop koden så här. Det fungerar för formuläret Namn, rätt nummer och friend_id fylls i i tabellen numbers. Sedan får jag problem. Då finns det två alternativ.
1. Jag skickar informationen från formulär Nummer till samma insert.php. Du skapas ett nytt id i tabellen friends för det andra numret som det länkas till.
2. Jag skickar informationen från formulär Nummer till insert_2.php. Då blir friend_id 0.
Vad är det jag missar, och vilket alternativ är bäst att jobba vidare med, en eller flera insert.php?

<?php
define();
include();

$db = new db();

$name = $_POST['name'];
$address = $_POST['address'];
$city = $_POST['city'];

mysql_query("INSERT INTO friends (name, address, city) VALUES
('$name', '$address', '$city')
");

$id = mysql_insert_id();
$number = $_POST['number'];
$type = $_POST['type'];

mysql_query("INSERT INTO numbers (id, friend_id, number, type) VALUES
(NULL, '$id', '$number', '$type')
");

header("location: nummer.php");

?>

Permalänk
Medlem
Skrivet av Revery:

Tack för att snabbt svar.
Jag har koll på primärnycklar och id, glömde bara skriva ut det. (Fast det är nog det enda jag har koll på)
Efter mycket trixande fick jag ihop koden så här. Det fungerar för formuläret Namn, rätt nummer och friend_id fylls i i tabellen numbers. Sedan får jag problem. Då finns det två alternativ.
1. Jag skickar informationen från formulär Nummer till samma insert.php. Du skapas ett nytt id i tabellen friends för det andra numret som det länkas till.
2. Jag skickar informationen från formulär Nummer till insert_2.php. Då blir friend_id 0.
Vad är det jag missar, och vilket alternativ är bäst att jobba vidare med, en eller flera insert.php?

<?php
define();
include();

$db = new db();

$name = $_POST['name'];
$address = $_POST['address'];
$city = $_POST['city'];

mysql_query("INSERT INTO friends (name, address, city) VALUES
('$name', '$address', '$city')
");

$id = mysql_insert_id();
$number = $_POST['number'];
$type = $_POST['type'];

mysql_query("INSERT INTO numbers (id, friend_id, number, type) VALUES
(NULL, '$id', '$number', '$type')
");

header("location: nummer.php");

?>

Du försöker fortfarande stoppa in $id som en sträng. Är kolumnen friend_id en sträng?

Angående värden mellan formulär... Spara ID i Sessionen tillsammans med ett status som säger vad som skall göras.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

Det måste finnas ett annat sätt än att använda session_id.
Vad är det jag ska göra i stället för det jag gör? Hänger inte riktigt med där...

Permalänk
Medlem

Kanske orelaterat, men använd mysql_real_escape_string () för alla användargenerade strängar som används i din SQL. Annars öppnar du upp för konstiga fel och extremt allvarliga säkerhetsrisker (en användare skulle t.ex. kunna få tag i all information eller ta bort den).
Är trött nu, så nån annan kan förklara mer om du inte förstår.

Skickades från m.sweclockers.com

Permalänk
Medlem

Tacksam för påpekandet, ska lära mig mera om det sedan! Är bara så frustrerad över att inte få till en så enkel sak att jag inte fördjupat mig i säkerheten än. Försöker rensa bort allt för att förenkla felsökningen. Jag vill bara ha med id från "friends" till friend_id i "numbers" via formuläret Nummer, ska det vara så omöjligt? Användarna ska kunna lägga in flera namn och nummer så id i session blir väl knappt aktuellt?

Permalänk
Medlem

<button type="submit" onclick="location.href='number.php?name_id=<?php print $name_id; ?>'">Spara</button>

Typ så löste jag problemet.