Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kontrola INSERT przy pomocy 2 bazy
JohnySpot
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Norbas
post
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));
}
Go to the top of the page
+Quote Post
JohnySpot
post
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)
Go to the top of the page
+Quote Post

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: 14.09.2025 - 22:05