Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Masowe dodawanie rekordów
wiktor1984
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 29.05.2014

Ostrzeżenie: (0%)
-----


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";

?>
Go to the top of the page
+Quote Post
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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

Ten post edytował Pyton_000 29.05.2014, 21:08:41
Go to the top of the page
+Quote Post
wiktor1984
post
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 29.05.2014

Ostrzeżenie: (0%)
-----


Wielkie dzięki (IMG:style_emoticons/default/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());


Ten post edytował wiktor1984 30.05.2014, 12:25:18
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
wiktor1984
post
Post #5





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 29.05.2014

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
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: 24.08.2025 - 01:30