![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 106 Pomógł: 0 Dołączył: 9.09.2003 Skąd: Włocławek Ostrzeżenie: (0%) ![]() ![]() |
Bazy wyglądają mniej więcej tak:
Zbiór wszystkich dostępnych elementów ELEM E id | elem 1 | a 2 | b Zbior elementow z przypisanymi wartościami ZBIOR Z id | id_e | wartosc 1 | 1 | 20 2 | 1 | 22 3 | 2 | 2 4 | 4 | 5 I teraz dwa pytania: 1) Do tabeli ZBIOR można dodawać tylko elementy występujące w tabeli ELEM - czy da się to zrobić sprytniej niż najpierw robić SELECT sprawdzający czy istnieje taki a potem dopiero INSERT jeżeli tak jest. (ma być też opcja wstawiania 10 na raz, może chociaż dałoby się to udoskonalić zamiast robić 10 SELECT-ów dla każdego elementu z osobna, to jakoś sprawdzić, które są, które nie z tych 10ciu) 2) To się wiąże z tym górnym pytanie, czy bez select-a dałoby się wstawiać odrazy id elementu a nie jedgo nazwę, bo do formularza w PHP jest wprowadzana nazwa (no i tak już raczej zostanie) ? Będę bardzo wdzięczny za wszelkie odpowiedzi i pomoc. Z góry wszystkim bardzo dziękuję za pomoc i zaangażowanie. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 1 Dołączył: 6.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Bazy wyglądają mniej więcej tak: To nie są bazy, tylko tabele (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Rozumiem, że nazwy i wartości elementów wprowadzasz w formularzu. Przy założeniu, że nazwy elementów są w polach 'e1', ..., 'e10', a wartości w polach 'w1', ..., 'w10' możesz wykonać 10 zapytań: Kod for($i = 1; $i <= 10; ++$i) if (($_POST['e' . $i] != '') && ($_POST['w' . $i] != '')) { $sql = 'INSERT INTO zbior (id_e,wartosc) SELECT id,' . intval($_POST['w' . $i]); $sql .= ' FROM elem WHERE elem="' . mysql_real_escape_string($_POST['e' . $i]) . '"'; @mysql_query($sql); } Albo najpierw odczytać identyfikatory i zbudować odpowiednie zapytanie: Kod $elementy = array();
for($i = 1; $i <= 10; ++$i) if (($_POST['e' . $i] != '') && ($_POST['w' . $i] != '')) $elementy[$_POST['e' . $i]] = intval($_POST['w' . $i]); if (sizeof($elementy)) { $result = @mysql_query("SELECT id,elem FROM elem WHERE elem IN ('" . implode("','", array_keys($elementy) . "')"); if ($result) { $sql = ''; while ($row = mysql_fetch_assoc($result)) $sql .= '(' . $row['id'] . ',' . $elementy[$row['elem']] . '),'; if ($sql) @mysql_query('INSERT INTO zbior (id_e,wartosc) VALUES ' . substr($sql, 0, strlen($sql)-1)); } |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 106 Pomógł: 0 Dołączył: 9.09.2003 Skąd: Włocławek Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy sobie dam radę, ale wielkie dzięki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Bardzo dziękuję za pomoc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 22:05 |