Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Masowe dodawanie rekordów
Forum PHP.pl > Forum > Przedszkole
wiktor1984
Witam

Dopiero co się uczę php i potrzebował bym aby ktoś mnie naprowadził.

Otóż formularz dodaje pojedyńczy rekord do bazy danych są to kody
potrzebował bym aby dodawał ich kilka naraz.


tabela składa się z 4 pul id, code, status, expired
id - wypełnia się sam
status oraz expired maja takie same wartości

Chciałbym zrobić aby z formularza można było dodać kilka kodów naraz
Np kilka kodów wypisanych jeden pod drugim odzielonych spacją,
raczej form action się do tego nie nadaje.

Troche zawile ale mam nadzieje że mnie ktoś zrozumiał i coś doradzi




Formularz html
Kod
<form action="dodaj.php" method="post">
code:   <input type="text" name="code">
status: <input type="checkbox" name="status" value="active">
expired:<input type="checkbox" name="expired" value="0">
<input type="submit">
</form>


Skrypt php
Kod
<?php
$connection = @mysql_connect('XXX', 'XXX', 'XXX')
or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
echo "Udało się połączyć z serwerem!<br />";
$db = @mysql_select_db('XXX', $connection)
or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());
echo "Udało się połączyć z bazą dancych!";


$sql="INSERT INTO codes (code, status, expired)
VALUES
('$_POST[code]','$_POST[status]','$_POST[expired]')";

if (!mysql_query($sql,$connection))
   {
   die('Błąd: ' . mysql_error());
   }
echo "dodano";

?>
Pyton_000
masz 2 wyjścia
1. albo wpisujesz po spacji kody w polu które masz, potem w skrypcie robisz explode po spacji i foreach robisz zapytanie zbiorcze np:
  1. INSERT INTO tabela (code, STATUS, expired) VALUES (1,1,1), (2,1,1), (3,1,1) ...


Albo dodajesz n pól z code
Kod
<input type="text" name="code[]" />

i odwołujesz się porzez $_POST['code'] i jw. foreach budujesz zapytanie dodatkowo filtrując dane
wiktor1984
Wielkie dzięki smile.gif

explode wszystkie kody po spacji ładnie oddziela,

jeszcze muszę tylko ogarnąć jak połączyć pętle
foreach z zapytaniem do bazy danych i będzie ok

Pozdrawiam

explode
Kod
// wyświetlanie kodów przed oddzieleniem
  

echo('<br>');
echo "dodano następujące kody:";
echo('<br>');
echo $_POST['code'];


// odzielenie kodów po spacji

$danecode = $_POST['code'];
$dane = explode(" ", $danecode);



// wyświetlanie poszczególnych kodów

echo('<br>');
echo('<br>');
echo $dane[0];
echo $dane[1];
echo $dane[2];
echo $dane[3];
echo $dane[4];



// wyświetlanie ilości kodów po odzieleniu
echo('<br>');
echo('<br>');
echo "Ilość kodów:";
echo count($dane);


A oto pętla z zapytaniem
wszystko ładnie śmiga może komuś się to przyda

Kod
foreach($dane AS $key) {

$sql="INSERT INTO codes (code, status, expired)
VALUES
('$key','$_POST[status]','$_POST[expired]')";

if (!mysql_query($sql,$connection))
   {
   die('Błąd: ' . mysql_error());
Pyton_000
Nie do końca, bo to jest zapychanie bazy zapytaniami.
  1. $dane = explode(" ", $danecode);
  2.  
  3. $tmpSql = array();
  4. foreach($dane as $code) {
  5. $tmpSql[] = "('$key','$_POST[status]','$_POST[expired]')";
  6. }
  7.  
  8. $sql = 'INSERT INTO codes (code, status, expired)
  9. VALUES '. implode(',', $tmpSql);
  10.  
  11. if (!mysql_query($sql,$connection))
  12. {
  13. die('Błąd: ' . mysql_error());

Dzięki temu wykonasz 1 zapytanie a nie xxx
wiktor1984
Nie chce zaśmiecać forum nowymi tematami dlatego w tym temacie
Otóż połączyłem formularz dodający kody jak i skrypt który je dodaje w jeden plik php
i przy każdym wejściu na stronę dodaje mi puste rekordy do bazy danych,
oraz przy dodawaniu kodów zawsze dodatkowy pierwszy rekord pusty. Przed połączeniem obu plików wszystko było ok.
Pytanie pewnie dla niektórych banalne czy formularz jak i skrypt muszą być w osobnych plikach?
nospor
Nie, nie muszą, ale przed dodaniem wpisu do bazy, wypadaloby sprawdzic, czy w ogole poszly jakies dane z forma, a nie wrzucac wszystko bez zadnego sprawdzania.

przenosze

ps: zacznij uzywac poprawnego bbcode. Do kodu PHP uzywa sie BBCODE PHP a nie CODE
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.