Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dodawanie kilku rekordów
Forum PHP.pl > Forum > Przedszkole
fran1o
Witam, przeszukałem forum ale nie znalazłem odpowiedzi. Chodzi mi o: użytkownik określa ilość, następnie wypełnia formularz i potem ma to się dopisać do bazy tyle razy ile podał w polu ilości (ma to być na jednej stronie bez przeładowań). Czy może mnie ktoś naprowadzić i czy to jest wykonalne np. dla 1000 zapytań? Z góry dzięki za wskazówki.
Pozdr
nospor
Cytat
ma to być na jednej stronie bez przeładowań
AJAX

Cytat
czy to jest wykonalne np. dla 1000 zapytań
tak, mozna wykonac 1000 zapytan, ale to jest srednio optymalne.Mozna tez wykonac jedno zapytanie, ktore wstawi 1000 wartosci.
A mozna tez to poporcjowac i wykonac np. 50 zapytan po 20 wartosci
fran1o
a przy pomocy pętli bez ajaxa nie jest to do zrobienia? chodzi mi o to ze użytkownik wciska przycisk czyli się raz przeładuje strona
nospor
petla ma byc w php.
A AJAX po to, bo sam mowiles ze chcesz to zrobic bez przeladowania strony smile.gif
fran1o
jest pole ilosc (w którym miala by byc domyslna wartosc 1, uzytkownik moze poprawic ta wartosc)
dalej reszta pol formularza i na koncu wciska przycysk ktory doda do bazy te dane tyle razy ile jest w polu ilosc
nospor
Juz to pisales, juz to wiemy. Skleroze masz czy jak? winksmiley.jpg
fran1o
myslalem ze moze nie zrozumiales... a odpowiedzi i tak brak... jest to wykonalne bez ajaxa?
blooregard
Czy ja Cię dobrze rozumiem?
Dane z tego formularza mają zostać zapsiane w bazie X razy.

Te same dane?

Czyli np. wpisuję dane kontaktowe, podaję w ilości '10000' i w bazie ma się pojawić 10000 rekordów z moimi danymi?

Chyba źle opisujesz swój problem, bo to jest totalnie bez sensu.
nospor
Cytat
. a odpowiedzi i tak brak... jest to wykonalne bez ajaxa?
No przeciez ci udzielilem odpowiedzi....
chcesz to wykonac bez odswierzenia strony - AJAX
Od biedy mozesz sie bawic jakims IFRAME, co wcale nie jest przyjemniejsze.

To ze nie podoba ci sie slowo AJAX nie znaczy ze nie zostala udzielona odpowiedź. tongue.gif
fran1o
nie jest bezsensu poprostu musze dodac do bazy rozne rzeczy x razy i sa to te same dane (moge je dodac jeden raz albo x razy)

np. dana1 dana2 dana3
dana1 dana2 dana3

mortus
Da się to zrobić bez AJAX-a w samym PHP, strona przeładuję się tylko raz (po naciśnięciu przycisku). Jednak nie jest to dobry pomysł, żeby zapisywać 1000, czy nawet więcej jednakowych rekordów w bazie. Nie lepiej zrobić jeden rekord i dodać pole np. ilosc_wystapien? No chyba, że nie rozumiem Twoich potrzeb.
fran1o
moze przesadzilem z tym 1000 ale musi byc dodawane kilka razy i pole ilosc_wystapien odpada bo dane sa pozniej jeszcze wykorzystywane do innych rzeczy. Glownie mi teraz chodzi o przekazanie zmiennej z pola text do zmiennej w petli ktora doda x razy
mortus
Cytat(fran1o @ 24.03.2010, 10:14:46 ) *
pole ilosc_wystapien odpada bo dane sa pozniej jeszcze wykorzystywane do innych rzeczy
No i co z tego, że dane są wykorzystywane do innych rzeczy, przecież nikt Ci nie każe wykorzystywać wszystkich danych pobranych z formularza.
Stosując się do Twoich wymagań:
  1. <?php
  2. // nazwiązanie połączenia z serwerem baz danych
  3. // wybranie bazy danych
  4. // sprawdzamy, czy dane zostały wysłane za pomocą formularza
  5. if(!empty($_POST)) {
  6. // jeżeli tak, to sprawdzamy, czy odpowiednie pola zostały właściwie wypełnione
  7. if(isset($_POST['liczba'] && $_POST['liczba'] != '' && is_numeric($_POST['liczba']) && isset($_POST['dane_1']) && $_POST['dane_1'] != '') {
  8. // pola zostały wypełnione, a zatem
  9. $zapytanie = "INSERT INTO tabela (dane_1) VALUES ('{$_POST['dane_1']}')";
  10. $liczba_dodanych_rekordow = 0;
  11. for($i = 0; $i < (int)$_POST['liczba']; $i++) {
  12. $wynik = mysql_query($zapytanie) or die(mysql_error());
  13. if(($dodano = mysql_affected_rows()) > 0) {
  14. $liczba_dodanych_rekordow += $dodano;
  15. } else {
  16. $_message = 'Wystąpił nieoczekiwany błąd!';
  17. break;
  18. }
  19. }
  20. $_message = 'Dodano ' . $liczba_dodanych_rekordow . ' rekordów do tabeli bazy danych.';
  21. }
  22. echo $_message . '<br/>';
  23. }
  24. ?>
  25. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  26. <input type="text" name="liczba" value="1" /><br/>
  27. <input type="text" name="dane_1" /><br/>
  28. <input type="submit" name="submit" value="Wyślij" /><br/>
  29. </form>
Oczywiście pętlę można inaczej zorganizować (np. zamiast wykonywać funkcję mysql_query x razy, można w pętli zapytanie ułożyć).
fran1o
ok dzieki za pomoc... oczywiscie plusik leci
nospor
Czyli jednak zadowoliles sie odswiezeniem strony... To po co na poczatku tak sie deklarowales ze ma byc bez?
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.