Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] INSERT INTO
Forum PHP.pl > Forum > Przedszkole
Wojtekss
Witam, mam problem z komenda.
mam takie tabele
Osoba
--------
ID_OSOBA <PK>
imie
nazwisko
telefon
email

Uczen
----------
ID_UCZNIA <PK>
ID_OSOBA
ID_KLASY


Klasa
----------
ID_KLASY <PK>
nazwa


Stworzylem formularz do wpisania imienia nazwiska telefonu email i klasa.
Wszystko ok tylko nie potrafie zrobic by po wpisaniu formularzu w polu "klasa" np. 1c wyszukalo mi po nazwie "1c" jego ID w tabeli "Klasa" i wpisalo go do tabeli "Uczen" w ID_KLASY.

np.
Klasa
--------
ID_klasy..........nazwa
1.....................1c

Uczen
---------
ID_UCZNIA..........15
ID_OSOBA...........26
ID_KLASA............1


mam takie cos ale nie wychodzi:

$dodaj = mysql_query ("INSERT INTO Osoba SET imie='$imie', nazwisko='$nazwisko', telefon='$telefon', email='$email'");
$dodaj1 = mysql_insert_id();

$dodaj2 = mysql_query ("INSERT INTO Uczen SET ID_OSOBA='$dodaj1' WHERE ID_KLASY='$klasa'");
$dodaj3 = mysql_insert_id();
bim2
Ale jaki problem? Jakie błędy? Co się dzieje? smile.gif
Wojtekss
Przepraszam przez przypadek wyslalem niegotowy post, jzu go edytowalem winksmiley.jpg

i jest ktos kto moze mi pomoc? zalezy mi bardzo

Doszedlem do takiej postaci, nie wiem czy poprawnie mysle, lecz jak wchodze w tabele Uczen to w ID_KLASY wypisuje mi wartosc 0.


$dodaj2 = mysql_query ("INSERT INTO Osoba SET imie='$imie', nazwisko='$nazwisko', telefon='$telefon', email='$email'");
$dodaj3 = mysql_insert_id();

$dodaj9 = mysql_query ("Select ID_KLASY from Klasa WHERE nazwa='$klasa'");
$dodaj4 = mysql_query ("INSERT INTO Uczen SET ID_OSOBA='$dodaj3', ID_KLASY='$dodaj9'");
$dodaj5 = mysql_insert_id();
nospor
Cytat
, lecz jak wchodze w tabele Uczen to w ID_KLASY wypisuje mi wartosc 0.

No bo ID_KLASY pobierasz tak:
$dodaj9 = mysql_query ("Select ID_KLASY from Klasa WHERE nazwa='$klasa'");


zobacz w manualu co zwraca mysql_query() a dowiesz sie, ze to nie bedzie ID_KLASY smile.gif
Jak juz to zaczaisz przyjrzyj się funkcji mysql_fetch_array()
SzamanGN
Tabela Uczeń nie jest potrzebna.
Do tabeli Osoba dodaj pole klasa_ucznia.

Twój formularz (dodaj.php) powinien zawierać pola:
  1. <?php
  2. //Połączenie z bazą danych.
  3.  
  4. if (isset($_POST['imie']))
  5. {
  6. //Dodanie nowego ucznia.
  7. $dodaj = mysql_query ('INSERT INTO Osoba SET imie="'.$_POST["imie"].'", nazwisko="'.$_POST["nazwisko"].'", telefon="'.$_POST["telefon"].'", email="'.$_POST["email"].'", klasa="'.$_POST["klasa_ucznia"].'"');
  8. }
  9. ?>
  10. <form action="zapisz.php" method="post">
  11. Imię: <input> type="TEXT" name="imie">
  12. Nazwisko: <input> type="TEXT" name="nazwisko">
  13. Telefon: <input> type="TEXT" name="telefon">
  14. E-mail: <input> type="TEXT" name="email">
  15. Klasa:  <select name="klasa_ucznia">
  16. <?php
  17.    $pokaz = mysql_query('SELECT * FROM `Klasa`');
  18. while ($dane=mysql_fetch_array($pokaz))
  19. {
  20. echo '<option value='.$dane["ID_KLASY"].'>'.$dane["nazwa"].'</option>';
  21. }
  22. ?>
  23. </SELECT>
  24. <input type="SUBMIT"value="DODAJ">
  25. </form>
Tagon
Cytat
$dodaj = mysql_query ('INSERT INTO Osoba SET imie="'.$_POST["imie"].'", nazwisko="'.$_POST["nazwisko"].'", telefon="'.$_POST["telefon"].'", email="'.$_POST["email"].'", klasa="'.$_POST["klasa_ucznia"].'"');



questionmark.gif Co to jest za składnia ? INSERT INTO ma inna budowę..

Zapytanie powinno wyglądać tak:

  1. mysql_query("INSERT INTO Osoba ('imie', 'nazwisko', 'telefon', 'email', 'klasa') VALUES ($_POST[imie], $_POST[nazwisko], $_POST[telefon], $_POST[email], $_POST[klasa], ");
agataperz
Po 1.
ażeby Ci ładnie wpisywało do bazy to musisz ustawić w każdej tablicy id na AUTO_INCREMENT
i teraz nie będzie Ci za każdym razem pokazywało 0 tylko kolejna cyfra wpisanego rekordu
Po 2.
ja bym trochę skruciła zapis wpisujący do bazy danych:
  1. 1.mysql_query("INSERT INTO Osoba VALUES ( '' ,'$_POST[imie]',' $_POST[nazwisko]',' $_POST[telefon]',' $_POST[email]','$_POST[klasa]'");

po co zapychac plik takimi instrukcjami plik
i przede wszystkim na końcu bez przecinka.
po 3.
posłuchaj @nospor'a on dobrze Ci tłumaczy lepiej id wyciągnij następnym zapytaniem np.:
  1. $query = "select ID_KLASY from Klasa WHERE nazwa='$klasa'";
  2. if(!$result = mysql_query($query, $db_lnk)){
  3. echo('Wystapil blad: id klasa<BR>');
  4. }
  5. while($rowe = mysql_fetch_row($result)){
  6. $id = $rowe[0];
  7. }
mikiz65
$dodaj2 = mysql_query ("INSERT INTO Osoba SET imie='$imie', nazwisko='$nazwisko', telefon='$telefon', email='$email'");
$dodaj3 = mysql_insert_id();

$pytanie = "Select ID_KLASY from Klasa WHERE nazwa='$klasa'";
$result = mysql_query ($pytanie) or die(mysql_error());
$dodaj9 = mysql_insert_id();
$dodaj4 = mysql_query ("INSERT INTO Uczen SET ID_OSOBA='$dodaj3', ID_KLASY='$dodaj9'");
$dodaj5 = mysql_insert_id();


$dodaj9 miałeś resulta query, a nie ID_KLASY.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.