Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql] Przydzielanie ID do do innej tabeli
matius71
post
Post #1





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 22.08.2009

Ostrzeżenie: (0%)
-----


Witam,

wpisuje w formularzu dane. Wysyłam je i w bazie wszystko ładnie się wpisuje, nadaje się ID itd. Słowem wszystko gra. Pomyślałem żeby przy okazji wypełniania formularza zapytać użytkownika o inne dane które będą wpisywane do innej tabeli. I teraz mam takie tabele:

1. Samochod
ID | Marka | Model | Nr. rejestracyjny | i inne

Wypełniam formularz, pojawia się nowy wpis i wskakuje ID. Tyle mam teraz i działa. Teraz zaczynają się schody (dla mnie)

Pomyślałem że dodam tabele Oleje w której jest lista dostępnych nazw i tabele łączącą ID samochodu z ID oleju (zakładam że samochód może jeździć na paru olejach)

2 Olej i tam
ID | nazwa a| nazwa b | nazwa c| itd

Teraz zrobiłem tabele:

3.Samochod Olej
ID | ID samochodu | ID Oleju

Teraz problem. Gdy zakładam profil samochodu czyli tabela pierwsza (to mam) i w tym samym momencie chce wpisać w tabele nr 3 ID samochodu którego w sumie jeszcze nie znam bo nie wysłałem formularza to jak to sprytnie zrobić żeby to samo ID samochodu trafiło do ID tabeli 3? (IMG:style_emoticons/default/biggrin.gif) Bo z ID oleju z tabeli nr2 nie ma problemu bo ona istnieje i wystarczy odczytać ID. Myślałem już żeby najpierw tworzyć profil samochodu a dopiero później w jakimś innym formularzu pytać o rodzaj oleju bo wtedy bym znał już i wiedział jak odczytać ID samochodu.

A tu jest to co mam jeśli chodzi o przesyłanie do bazy do tabeli nr1

  1. if (!isset($error)) {
  2. try {
  3.  
  4. //insert into database with a prepared statement
  5. $stmt = $db->prepare('INSERT INTO samochod (Marka,Model,rejestracyjny,a,b,c,d) VALUES (:Marka,:Model,:rejestracyjny,:a,:b,:c,(IMG:style_emoticons/default/biggrin.gif) )');
  6. $stmt->execute(array(
  7. ':Marka' => $Marka,
  8. ':Model' => $Model,
  9. ':rejestracyjny' => $rejestracyjny,
  10. ':a' => $a,
  11. ':b' => $b,
  12. ':c' => $c,
  13.  
  14. ));
  15. $id = $db->lastInsertId('samochodID');
  16.  
  17. //redirect to index page
  18. header('Location: ....../........');
  19.  
  20. //else catch the exception and show the error.
  21. }
  22. catch (PDOException $e) {
  23. $error[] = $e->getMessage();
  24. }
  25.  
  26. }


Ten post edytował matius71 22.03.2018, 13:15:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
matius71
post
Post #2





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 22.08.2009

Ostrzeżenie: (0%)
-----


Leci "Pomógł" bo wszystko pięknie śmiga!

Właściwie mam jeszcze jeden problem i tyczy się właściwie tej samej bazy.

Pobieram wartości z bazy i wklepuje je w chekcbox o tak:

  1. <label class="control-label">Fuel Type:</label>
  2. <div type=checkbox tabindex=8>
  3. <?php
  4. $stmt = $db->query('SELECT fuelID, fuelType FROM list_fuel');
  5.  
  6. while($x = $stmt->fetch(PDO::FETCH_ASSOC))
  7. {
  8. echo "
  9. <label><input type=checkbox name=fuelID[] value=\"".$x['fuelID']."\">".$x['fuelType']."</input></label>";
  10. }
  11. ?>
  12. </div>


Mogę je sobie pięknie wyświetlić które wybrałem:

  1. <?php
  2. if (isset($_POST['fuelID']))
  3. {
  4. echo 'zaznaczone checkbox\'y z wartosciami: ' . implode($_POST['fuelID'], ', ');
  5. }?>


Wszysko działa tylko nie potrafie ich wysłać do bazy danych tak żeby każdy FuelID był w oddzielnym wierszu i miał to samo samochodID. Nie byłoby problemu gdybym miał wyświetlane na sztywno ilość boxów do zaznaczenia. Jakie trzeba zapytanie zrobić żeby dodawało się tyle wierszy w bazie co wybranych opcji?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 07:15