Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Lista rozwijana i tabela słownikowa połączona relacją.
Forum PHP.pl > Forum > Przedszkole
hofi
Witajcie smile.gif

Jestem początkujący jeżeli chodzi o PHP i MySQL. Napotkałem na problem który nie rozwiązało kilka godzin googlowania i przeglądania kursów. Mój problem polega na tym, że nie wiem jak zrobić formularz w którym będzie lista rozwijana do której dane będą pobierane z osobnej tabeli (tzw. słownikowej). Kiedy robiłem to w accessie to było proste, a tu nie potrafię.

Stworzyłem bazę danych z dwoma tabelami, w jednej są dwie kolumny (idCzlowiek i WojewodztwoCzlowiek) a w drugiej (słownikowej) też dwie (idWojewodztwo i nazwaWojewodztwo). stworzyłem między nimi relację jeden do wielu i teraz nie wiem co zrobić, aby wprowadzać dane do WojewodztwoCzlowiek za pomocą tabeli słownikowej.

Oto SQL:

Kod
-- phpMyAdmin SQL Dump
-- version 2.11.9.2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Czas wygenerowania: 22 Gru 2008, 18:04
-- Wersja serwera: 5.0.67
-- Wersja PHP: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

-- Baza danych: `przykladrelacji`

-- --------------------------------------------------------

-- Struktura tabeli dla  `wojewodztwo`

CREATE TABLE IF NOT EXISTS `wojewodztwo` (
   `idWojewodztwo` int(10) unsigned NOT NULL auto_increment,
   `nazwaWojewodztwo` varchar(30) collate utf8_unicode_ci default NULL,
   PRIMARY KEY  (`idWojewodztwo`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=17;

--
-- Zrzut danych tabeli `wojewodztwo`
--

INSERT INTO `wojewodztwo` (`idWojewodztwo`, `nazwaWojewodztwo`) VALUES
(1, 'Dolnoslaskie'),
(2, 'Kujawsko-pomorskie'),
(3, 'Lubelskie'),
(4, 'Lubuskie'),
(5, 'Lodzkie'),
(6, 'Malopolskie'),
(7, 'Mazowieckie'),
(8, 'Opolskie'),
(9, 'Podkarpackie'),
(10, 'Podlaskie'),
(11, 'Pomorskie'),
(12, 'Slaskie'),
(13, 'Swietokrzyskie'),
(14, 'Warminsko-mazurskie'),
(15, 'Wielkopolskie'),
(16, 'Zachodniopomorskie');


Na widoku projektu wygląda to tak:


Następnie napisałem skrypt wstawiający do tabeli "Człowiek" dane:
Kod
<?php
$Polaczenie = @mysql_connect('localhost', 'xxx', 'xxx')
     or die('Brak połączenia z serwerem MySQL.
');
         echo "Udało się połączyć z serwerem!
";
        
$PolaczenieBazy = @mysql_select_db('przykladrelacji', $Polaczenie)
     or die('Nie mogę połączyć się z bazą danych
');
         echo "Udało się połączyć z bazą dancych!";
        
$Zapytanie = "insert into czlowiek values ('".$idCzlowiek."', '".$WojewodztwoCzlowieka."')";
     $rezultat = mysql_query($Zapytanie);
        
mysql_close($Polaczenie);
?>


I formularze:
Kod
<form action="wprowadzaniedanych.php" method="post">

Numer człowieka: <input type=text name=idCzlowiek maxlength=3 size=4>


Wojewodztwo: <input type=text name=WojewodztwoCzlowieka maxlength=30 size=30>



<input type=submit value="Wstaw do bazy">
</form>


Skrypt działa tylko cokolwiek bym nie wprowadził w "Numer człowieka" to i tak działa autonumerowanie (I dobrze smile.gif ) i przyznaje następny numer z listy. Cokolwiek bym nie wprowadził "Wojewodztwo" to i tak w bazie zapisywane jest "0".

Czy ktoś ma pojęcie jak przerobić mój skrypt tak, aby zamiast pola tekstowego w "wojewodztwo" była lista rozwijana województw?

Proszę o pomoc i z góry dziękuję.
bigZbig
Pobierz zapytaniem SQL-owym listę województw i utwórz HTML-owego selecta

  1. <select name="WojewodztwoCzlowieka">
  2. <option value=""idWojewodztwo">nazwaWojewodztwo</option>
hofi
Heh...
Dziękuję za pomoc. Na razie nie za bardzo wiem jak z niej skorzystać ale trochę podłubię i mam nadzieję, że jakoś dojdę do tego o co Ci chodziło.

Nachodzi mnie myśl, że podany przez Ciebie sposób nie wykorzystuje relacji (może jestem w błędzie). To co podałem to jedynie drobna część większego projektu który muszę wykonać do szkoły. I wydaje mi się, że tam będę musiał wykorzystywać relacje. W zasadzie jak to jest? czy w PHP przy większych projektach wykorzystuje się relacje, czy może jest jakiś inny sposób na to?

Przejrzałem wiele kursów w sieci i zazwyczaj są tam podstawy podstaw. Kiedy dochodzi do MySQL to zazwyczaj się kończy zapytaniu i wydruku na stronie rekordów z danej tabeli ale nie ma nic o relacjach.
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.