x-kom hosting

Zapis do bazy mysql

olej3232
utworzono
utworzono

Witam, znów pojawił się problem z php

Mam bazę z tabelą jak na rysunku

oraz stronę na której:

Nad kreską określamy z ilu elementów znajdujących się w tabeli będzie składał się nowy element.
Jeśli określimy, pojawia się to co pod kreską tyle razy, ile jest elementów (pętla).
Do tego momentu nie ma problemu.

Jednego razu będzie się składać z 3 elementów z tablicy, innego z 5
nie bardzo wiem, jak zapisać te dane do bazy. Nie chodzi mi o kod źródłowy, tylko o teorię.

[b]Heh pomyliłem załączniki i nie wiem jak usunąć. W polu select są te same dane co w tabelce.[/b]

luq
komentarz
komentarz

Z tego co rozumiem chodzi Ci o relacje jeden do wielu.
Problemy takie rozwiązujesz na kolejnej tabelce. Dla przykładu.

Mamy tabelkę [b]a[/b]:
[u]aId[/u] | aName

oraz tabelkę [b]b[/b]:
[u]bId[/u] | bName

i chcemy aby pojedyncze rekordy z tabelki [b]a[/b] nawiązywały relację z dowolną ilością rekordów z tabelki [b]b[/b],

tworzymy tabelkę [b]a_relation_b[/b]
[u]relationId[/u] | aId | bId

i wtedy mamy możliwość robienia czegoś takiego:

[code]
relationId | aId | bId
1 1 1
2 1 2
3 1 5
[/code]
(jeden rekord z [b]a[/b] ma 3 rekordy z tabelki [b]b[/b])

Poza tym rozwiązanie ze wpisaniem liczby rekordów jest imho nie wygodne, lepiej zrobić coś takiego (przykład ze zlecenia wykonywanego przeze mnie)
[img]http://images44.fotosik.pl/239/1affad015e1105ff.jpg[/img]
Po kliknięciu na [...] wyświetla się nowe okienka w którym coś wybierasz oraz dodaje się nowy <input/> poniżej, klikając na [x] usuwasz. Od strony usera dużo bardziej wygodne.

  • Dobra wypowiedź 1
olej3232
komentarz
komentarz

Nie wiem jak będzie wyglądało przeszukiwanie bazy [b]a_relation_b[/b] w końcu może osiągnąć spore rozmiary. Zobaczymy jak to wyjdzie, niestety nie miałem kontaktu z dużymi bazami mysql.
Pomysł z dodawaniem rekordu dość ciekawy. Spróbuję coś takiego napisać, choć nie mam pojęcia jak kod powinien wyglądać :)

luq
komentarz
komentarz

[quote]Nie wiem jak będzie wyglądało przeszukiwanie bazy a_relation_b w końcu może osiągnąć spore rozmiary. Zobaczymy jak to wyjdzie, niestety nie miałem kontaktu z dużymi bazami mysql.[/quote]
Ja mam w jednej takiej tabelce 469 rekordów.
Zapytanie zwracające wszystkie rekordy z tej tabelki + 2x LEFT JOIN
[code]
Wykonanie zapytania trwało 0.0017 sekund(y)
[/code]

  • 1 miesiąc później...
olej3232
komentarz
komentarz (edytowane)

[quote name='luq' date='18 grudzień 2009 - 12:34 ' timestamp='1261136091' post='924551']
Po kliknięciu na [...] wyświetla się nowe okienka w którym coś wybierasz oraz dodaje się nowy <input/> poniżej, klikając na [x] usuwasz. Od strony usera dużo bardziej wygodne.
[/quote]

Możesz mi podpowiedzieć jak się za to zabrać?

EDIT:
Jak się człowiek wyśpi to wszystko napisze :) W końcu trochę odespałem i samo się napisało :)
[code]

<?php
$act = $_GET['act'];
if ($act == 0)
{
$x = 1;
}
else
{
$x = 1 + $act;
}
for($i = 0; $i < $x; $i++)
{
echo "<input name='szt' type='text' size='3' value='$x' /> szt.<br>";
}

echo "<a href='?test.php&act=$x>Dodaj</a>";


[/code]


EDIT :)

Wszystko fajnie działa dopóki mam jedno pole które chce rozmnażać, na dwa już nie działa :) obydwa równocześnie się mnożą. Muszę kombinować dalej

  • 2 tygodnie później...
luq
komentarz
komentarz

[quote name='olej3232' date='20 styczeń 2010 - 15:12' timestamp='1263996743' post='954593']
Możesz mi podpowiedzieć jak się za to zabrać?
[/quote]
Oczywiście JS. window.open() aby otworzyć nowe okienko a potem odwołanie się do okna rodzica - parent.window. Musisz tylko dodać do okienka rodzica w odpowiedniego inputa wybraną wartość i tyle.

[quote]
Wszystko fajnie działa dopóki mam jedno pole które chce rozmnażać, na dwa już nie działa :) obydwa równocześnie się mnożą. Muszę kombinować dalej
[/quote]
Podaj kod tej replikacji.

  • 2 tygodnie później...
olej3232
komentarz
komentarz

[code]<form action="xxx.php">
Część pierwsza:
<select name="name">
<option>Jakieś dane z bazy</option>
<option>Jakieś dane z bazy2</option>

</select>
Jakieś pole tekstowe<input type="text" name="txtname"> <a href="#">PRZYCISK USUWAJĄCY POLE</a><BR>
<a href="#">NASTĘPNY</a>
<hr>
Część druga:
<select name="name2">
<option>Jakieś dane z bazy</option>
<option>Jakieś dane z bazy2</option>

</select>
Jakieś pole tekstowe<input type="text" name="txtname2"> <a href="#">PRZYCISK USUWAJĄCY POLE</a><BR>
<a href="#">NASTĘPNY</a>
<BR><BR>
<button type="button">ZAPISZ</button>
</form>[/code]

Strona ma wyglądać jak wyżej (wrzucisz w pliczek .htm i będziesz wiedział o co mi chodzi)
Sorry że dopiero teraz piszę, ale miałem trochę prywatnych spraw na głowie
Następny dodaje kolejnego select-a oraz pole tekstowe. Wszystko razem chcę zapisać do bazy.

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.