Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql]Dodawanie określonej liczb rekordów
Forum PHP.pl > Forum > PHP
kurdak
Witam.
Mam problem z dodaniem rekordów do bazy. Chodzi mi o te drugą pętlę for a dokładnię o to co jest w VALUES (29 wiersz).
Jak zrobić aby kolejne nazwy zmiennych czyli nazwa+$i będzie nazwa0 itd.
Bardzo proszę o pomoc.
  1. <html> 
  2. <head> 
  3. <title>Nazwa strony</title> 
  4. </head> 
  5. <body> 
  6. <form action="produkty_dodaj1.php" method="POST"> 
  7. <input type="text" name="ilosc"> 
  8. <input type="submit" value="Dalej"> 
  9. <?php
  10. if ($ilosc != '') 
  11. { 
  12. $ile = (int)$_POST['ilosc'];
  13. if($ile == 0) $ile = 1;
  14. echo '<form action="produkty_dodaj.php" method="POST"><table border="1"><tr><td>Nazwa produktu: </td><td>Kod produktu: </td><td>Cena produktu: </td></tr>'; 
  15. for($i = 0; $i < $ile; $i++){
  16. echo '<tr>';
  17. echo "<td> <input type=\"text\" name=\"nazwa".$i."\"></td>"; 
  18. echo "<td> <input type=\"text\" name=\"kod".$i."\"></td>"; 
  19. echo "<td> <input type=\"text\" name=\"cena".$i."\"></td>"; 
  20. echo '</tr>'; 
  21. } 
  22. echo '</table><p><input type="submit" value="Dodaj produkt"></p></form>'; 
  23. } 
  24. ?> 
  25. <? 
  26. if(($nazwa<>"")&&($kod<>"")&&($cena<>"")){ 
  27. include "bd.php"; 
  28. for($i = 0; $i < $ile; $i++){
  29. mysql_query("INSERT INTO produkty (id,nazwa,kod,cena) VALUES('', '$nazwa'.$i'', '$kod'.$i'', '$cena'.$i'')"); 
  30. } 
  31. mysql_close($sql); 
  32. echo"Udało się"; 
  33. } 
  34. ?> 
  35. <pre><?php print_r($_POST); ?></pre> 
  36. </body> 
  37. </html>
franki01
linijka 29.:

  1. <?php
  2. mysql_query("INSERT INTO produkty (id,nazwa,kod,cena) VALUES('', '$nazwa"."$i', '$kod'.$i'', '$cena'.$i'')");
  3. ?>
kurdak
niestety próbowałem zmienić to wszystko i nadal nie działa sad.gif Proszę o pomoc.
Zmieniałem tak jak jst zmieniona zmienna nazwa.
Darti
  1. <?php
  2. $nazwa .= $i;
  3. $kod .= $i;
  4. $cena .= $i;
  5. mysql_query("INSERT INTO produkty (id,nazwa,kod,cena) VALUES('', '$nazwa', '$kod', '$cena')");
  6. ?>


albo

  1. <?php
  2. mysql_query("INSERT INTO produkty (id,nazwa,kod,cena) VALUES('', '".$nazwa . $i."', '".$kod . $i."', '".$cena . $i ."')");
  3. ?>


albo

  1. <?php
  2. mysql_query(sprintf("INSERT INTO produkty (id,nazwa,kod,cena) VALUES('', '%s', '%s', '%s')",$nazwa.$i,$kod.$i,$cena.$i));
  3. ?>
kurdak
Niestety wszystkie podane możliwości niedziałają. Sktypt nie wywala żadnych błędów więc może coś jest nie tak ale nie mam pojęcia co sad.gif
BaN
Powinieneś zastosować: $_POST['nazwa' . $i], $_POST['kod' . $i], $_POST['cena' . $i]
kurdak
Teraz kod wygląda tak:
  1. <html>
  2. <head>
  3. <title>Nazwa strony</title>
  4. </head>
  5. <body>
  6. <form action="produkty_dodaj1.php" method="POST">
  7. <input type="text" name="ilosc">
  8. <input type="submit" value="Dalej">
  9. <?php 
  10. if ($ilosc != '')
  11. {
  12. $ile = (int)$_POST['ilosc']; 
  13. if($ile == 0) $ile = 1; 
  14. echo '<form action="produkty_dodaj.php" method="POST"><table border="1"><tr><td>Nazwa produktu: </td><td>Kod produktu: </td><td>Cena produktu: </td></tr>';
  15. for($i = 0; $i < $ile; $i++){ 
  16. echo '<tr>'; 
  17. echo "<td> <input type=\"text\" name=\"nazwa".$i."\"></td>";
  18. echo "<td> <input type=\"text\" name=\"kod".$i."\"></td>";
  19. echo "<td> <input type=\"text\" name=\"cena".$i."\"></td>";
  20. echo '</tr>';
  21. }
  22. echo '</table><p><input type="submit" value="Dodaj produkt"></p></form>';
  23. }
  24. ?>
  25. <?
  26. if(($nazwa0<>"")&&($kod0<>"")&&($cena0<>"")){
  27. include "bd.php";
  28. for($i = 0; $i < $ile; $i++){ 
  29. $nazwa .= $i;
  30. $kod .= $i;
  31. $cena .= $i;
  32. mysql_query("INSERT INTO produkty (id,nazwa,kod,cena) VALUES('', '$nazwa', '$kod', '$cena')");
  33. }
  34. echo"Udało się";
  35. echo" I = $nazwa";
  36. }
  37. ?>
  38. </body>
  39. </html>


Niestety dalej nie działa sad.gif
BaN
Przecież napisałem żebyś wykorzystał tablicę $_POST
Kod
<html>
   <head>
   <title>Nazwa strony</title>
   </head>
   <body>
   <?php
   if (isset($_POST['ilosc'])) {
     $ile = intval($_POST['ilosc']);
     if($ile <= 0) $ile = 1;
     echo '<form action="' . $_SERVER['PHP_SELF'] . '" method="POST"><input type="hidden" name="ile" value="' . $ile .'">';
     echo '<table border="1"><tr><td>Nazwa produktu: </td><td>Kod produktu: </td><td>Cena produktu: </td></tr>';
     for($i = 0; $i < $ile; ++$i) {
       echo <<<WIERSZ
       <tr>
       <td><input type="text" name="nazwa$i"></td>
       <td><input type="text" name="kod$i"></td>
       <td><input type="text" name="cena$i"></td>
       </tr>
   WIERSZ;
     }
     echo '</table><p><input type="submit" value="Dodaj produkt"></p></form>';
   }
   elseif (isset($_POST['ile'])) {
     include "bd.php";
     $ile = intval($_POST['ile']);
     for($i = 0; $i < $ile; ++$i) {
       $nazwa = $_POST['nazwa' . $i];
       $kod = $_POST['kod' . $i];
       $cena = $_POST['cena' . $i];
       if (($nazwa !='') && ($kod != '') && ($cena != '')) {
         mysql_query("INSERT INTO produkty(nazwa,kod,cena) VALUES('$nazwa', '$kod', '$cena')");
       }
     }
     mysql_close($sql);
     echo "Udało się?";
   }
   else {
     echo <<<FORM
   <form action="{$_SERVER['PHP_SELF']}" method="POST">
   <input type="text" name="ilosc">
   <input type="submit" value="Dalej">
   </form>
   FORM;
   }
   ?>
   </body>
   </html>

Nie wiem jakiego typu są pola w bazie danych, ale powinieneś przed wykonaniem zapytania rzutować na odpowiedni typ i/lub wykorzystać mysql_real_escape_string
nospor
@kurdak Ten kod to porażka. Mieszasz odwolania do zmiennych forma. Raz piszesz $ilosc, raz $_POST['ilosc']. Zdecyduj sie i najlepiej zdecyduj sie na $_POST['ilosc'].
Wogole nie sluchasz co do ciebie piszą. Napisano ci ze masz walic $_POST['nazwa'.$i] a ty dalej swoje....
Najlepsze jest to, ze na innym forum piszesz:
Cytat
na innym forum dali mi takie rozwiązanie niestety nie działa pokażcie że jesteście lepsi ;
Co to? Wojna forow? Ludzi podjudzasz jednych na drugich? Zajmij sie chlopie czytaniem to co ci piszą, a nie takie zagrywki robisz.

No, wylalem co lezalo mi na sercu. Mam nadzieje ze weźmiesz to do swojego smile.gif

  1. <html>
  2. <head>
  3. <title>Nazwa strony</title>
  4. </head>
  5. <body>
  6. <form action="q3.php" method="post">
  7. <input type="text" name="ilosc">
  8. <input type="submit" name="count" value="Dalej">
  9. </form>
  10. <?php 
  11. if (isset($_POST['count'])){
  12. $ile = (int)$_POST['ilosc']; 
  13. if($ile == 0) $ile = 1; 
  14. echo '<form action="q3.php" method="post"><table border="1">
  15. <input type="hidden" name="ilosc" value="'.$ile.'" />
  16. <tr><td>Nazwa produktu: </td><td>Kod produktu: </td><td>Cena produktu: </td></tr>';
  17. for($i = 0; $i < $ile; $i++){ 
  18. echo '<tr>'; 
  19. echo '<td> <input type="text" name="nazwa'.$i.'"></td>';
  20. echo '<td> <input type="text" name="kod'.$i.'"></td>';
  21. echo '<td> <input type="text" name="cena'.$i.'"></td>';
  22. echo '</tr>';
  23. }
  24. echo '</table><p><input type="submit" name="add" value="Dodaj produkt"></p></form>';
  25. }
  26. if(isset($_POST['add'])){
  27. $ile = (int)$_POST['ilosc']; 
  28. for($i = 0; $i < $ile; $i++){ 
  29. $nazwa = $_POST['nazwa'.$i];
  30. $kod = $_POST['kod'.$i];
  31. $cena = $_POST['cena'.$i];
  32. if (empty($nazwa) || empty($kod) || empty($cena))
  33. echo '<br />nie wpisales wszystkiego!!!!';
  34. else
  35. echo "<br />Tu se zrob zapytanie dla $nazwa, $kod, $cena";
  36. }
  37. echo "<br /><br /><br />Nie pisze ze sie udalo, jesli nie sprawdziles czy zapytanie sie wykonalo!!!!!
    !"
    ;
  38. }
  39. ?>
  40. </body>
  41. </html>

Tak na szybko pisane
Dorob do tego swoje zapytanie, przejrzyj kod i przemysl co robiles źle do tej pory.

ps: q3.php zmien sobie na swoj plik
kurdak
Wszystkim bardzo bardzo dziękuję.
Dzięki wam poznałem moje braki i dzięki wam nauczyłem się czegoś nowego.
Jesteście wielcy exclamation.gif!!!
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.