Mam pytanie:
Opiszę mój dylemat na krótkim przykładzie:
Stworzyłem sobie przykładową bazę danych zawierającą 3 tabele:
-wykonawcy,
-zamawiający,
-zamówienia.
W tabeli zamówienia stworzyłem dowiązania do wykonawców i zamawiająych tak, aby móc ich przypisać do konkretnego zamówienia. Teraz chcę stworzyć formularz pozwalający na dopisywanie zamówień. Chciałbym aby dopisując zamówienie była możliwość wybrania zamawiającego i wykonanwcy spośród tych, których mam już wpisanych w dwóch pierwszych tabelach. Jak to zrobić?
Może nie wyrażam zbyt jasno o co chodzi, ale to dlatego, że jestem początkujący w php i nie bardzo wiem, z której strony to podejść. Z góry dziękuję za wszelką pomoc
Ok, napisałem sobie taki skrypt z tymże nie pobiera on zadnych rekordów z bazy danych więc nie wiem co dalej z tym zrobić:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title>Zarejestruj zamówienie</title>
</head>
<body>
<?php # Skrypt 6.10 - rejzamo.php
// Ustaw tytul strony i naglówek HTML.
$page_title = 'Zarejestruj zamówienie!';
include ('szablony/naglowek.inc');
if (isset($_POST['submit'])) { // Obsłuż formularz.
// Zarejestruj zamówienie w bazie danych.
require_once ('mysql_connect.php'); // Polacz sie z baza danych.
// Utwórz funkcje wstawiajaca przed znakami specjalnymi znak odwrotnego ukosnika.
function escape_data ($data) {
global $dbc; // Potrzebujemy polaczenia.
if (ini_get('magic_quotes_gpc')) {
$data = stripslashes($data);
}
return mysql_real_escape_string($data, $dbc);
} // Koniec funkcji.
$message = NULL; // Utwórz nową, pusta zmienną.
// Walidacja ID klienta.
if ( (isset($_POST['klient_id']) && ($_POST['klient_id']) == 'existing') && ($_POST['existing'] > 0)) {
$kl = $_POST['existing'];
} else {
$kl = FALSE;
echo '<p><font color="red">Proszę wybrać klienta!</font></p>';
}
// Sprawdz ID pracownika.
if ( (isset($_POST['pracownik_id']) && ($_POST['pracownik_id']) == 'existing') && ($_POST['existing'] > 0)) {
$pr = $_POST['existing'];
} else {
$pr = FALSE;
echo '<p><font color="red">Proszę wybrać pracownika!</font></p>';
}
// Sprawdz tresc zamówienia.
if (empty($_POST['temat'])) {
$tm = FALSE;
$message .= '<p>Zapomniales podac tresc zamówienia!</p>';
} else {
$tm = escape_data($_POST['temat']);
}
// Sprawdz cene netto.
if (empty($_POST['cena_netto'])) {
$cn = FALSE;
$message .= '<p>Zapomniales podac cene netto!</p>';
} else {
$cn = escape_data($_POST['cena_netto']);
}
// Sprawdz cene brutto.
if (empty($_POST['cena_brutto'])) {
$cb = FALSE;
$message .= '<p>Zapomniales podac cene brutto!</p>';
} else {
$cb = escape_data($_POST['cena_brutto']);
}
// Sprawdz termin wykonania.
if (empty($_POST['termin_wykonania'])) {
$tw = FALSE;
$message .= '<p>Zapomniales okreslic termin wykonania!</p>';
} else {
$tw = escape_data($_POST['termin_wykonania']);
}
if ($kl && $pr && $tm && $cn && $cb && $tw) { // Jezeli wszystko jest OK.
// Utwórz zapytanie.
$query = "INSERT INTO zamowienia (klient_id, pracownik_id, temat, cena_netto, cena_brutto, termin_wykonania) VALUES ('$kl', '$pr', '$tm', '$cn', '$cb', '$tw')";
$result = @mysql_query ($query); // Wykonaj zapytanie.
if ($result) { // Jezeli zostalo ono wykonane bez przeszkód.
// Wyslij maila, jezeli istnieje taka potrzeba.
echo '<p><b>Zamówienie zostalo pomyslnie zarejestrowane!</b></p>';
include ('szablony/stopka.inc'); // Dolacz stopke HTML.
exit(); // Opusc skrypt.
} else { // Jezeli zapytanie nie zostalo wykonane.
$message = '<p>Zamówienie nie zostalo zarejestrowane z powodu awarii naszego systemu.</p><p>' . mysql_error() . '</p>';
}
mysql_close(); // Zamknij polaczenie z baza danych.
} else {
$message .= '<p>Spróbuj jeszcze raz.</p>';
}
} // Koniec glównego wyrazenia warunkowego Submit.
// Jezeli jest jakis komunikat o bledzie, wyswietl go na stronie.
if (isset($message)) {
echo '<font color="red">', $message, '</font>';
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset><legend>Wprowadź do poniższego formularza informacje na temat zamówienia:</legend>
<p><b>Klient:</b> <select name="existing"><option>Wybierz klienta</option>
<?php // Pobranie wszystkich klientów i umieszczenie ich w menu rozwijanym.
$query = "SELECT klient_id, CONCAT(nazwa_skrocona, ', ', miasto) AS name FROM klient ORDER BY nazwa_skrocona ASC";
$result = @mysql_query ($query);
while ($row = mysql_fetch_array ($result, MYSQL_ASSOC)) {
echo "<option value=\"{$row['klient_id']}\">{$row['name']}</option>\n";
}
mysql_close(); // Zamknięcie połączenia z bazą danych.
?>
</select> </p>
<p><b>Pracownik:</b> <select name="existing"><option>Wybierz pracownika</option>
<?php // Pobranie wszystkich pracowników i umieszczenie ich w menu rozwijanym.
$query = "SELECT pracownik_id, CONCAT(nazwisko, ', ', imie) AS name FROM pracownicy ORDER BY nazwisko ASC";
$result = @mysql_query ($query);
while ($row = mysql_fetch_array ($result, MYSQL_ASSOC)) {
echo "<option value=\"{$row['pracownik_id']}\">{$row['name']}</option>\n";
}
mysql_close(); // Zamknięcie połączenia z bazą danych.
?>
</select> </p>
<p><b>Treść zamówienia (max 255 znaków):</b> <input type="text" name="temat" size="100" maxlength="255" value="<?php if (isset($_POST['temat'])) echo $_POST['temat']; ?>" /></p>
<p><b>Cena netto:</b> <input type="text" name="cena_netto" size="10" maxlength="10" value="<?php if (isset($_POST['cena_netto'])) echo $_POST['cena_netto']; ?>" /></p>
<p><b>Cena brutto:</b> <input type="text" name="cena_brutto" size="10" maxlength="10" value="<?php if (isset($_POST['cena_brutto'])) echo $_POST['cena_brutto']; ?>" /></p>
<p><b>Termin realizacji zamówienia:</b> <input type="text" name="termin_wykonania" size="10" maxlength="10" value="<?php if (isset($_POST['termin_wykonania'])) echo $_POST['termin_wykonania']; ?>" /></p>
</fieldset>
<div align="center"><input type="submit" name="submit" value="Wyslij dane" /></div>
</form><!-- Koniec formularza -->
<?php
include ('szablony/stopka.inc'); // Dolacz stopke HTML.
?>
</body>
</html>
</body>
</html>