Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Jak zapisac do bazy liczby?
woxala123
post 26.11.2016, 13:23:33
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


Witam!
Zrobiłem sobie taki formularz, gdzie po zaznaczeniu checkboksów - pokazuja mi sie po wysłaniu wybrane liczby w tabelce. Mam zapytanie jak teraz te wyświetlone liczby zapisać do bazy danych,
tak jak jest struktura tabeli tzn.ball1; ball2;ball3 itd...
  1. <html>
  2. <head>
  3. <title>Wybrane liczby</title>
  4. </head>
  5. <body>
  6. <h3>Proszę wybierz liczby</h3>
  7. <form method="post">
  8. <p><input type="checkbox" name="language[]" value="1" /> 1</p>
  9. <p><input type="checkbox" name="language[]" value="2" /> 2</p>
  10. <p><input type="checkbox" name="language[]" value="3" /> 3</p>
  11. <p><input type="checkbox" name="language[]" value="4" /> 4</p>
  12. <p><input type="checkbox" name="language[]" value="5" /> 5</p>
  13. <p><input type="checkbox" name="language[]" value="6" /> 6</p>
  14. <p><input type="checkbox" name="language[]" value="7" /> 7</p>
  15. <p><input type="checkbox" name="language[]" value="8" /> 8</p>
  16. <p><input type="checkbox" name="language[]" value="9" /> 9</p>
  17. <p><input type="checkbox" name="language[]" value="10" /> 10</p>
  18. <p><input type="checkbox" name="language[]" value="11" /> 11</p>
  19. <p><input type="checkbox" name="language[]" value="12" /> 12</p>
  20. <p><input type="checkbox" name="language[]" value="13" /> 13</p>
  21. <p><input type="checkbox" name="language[]" value="14" /> 14</p>
  22. <p><input type="checkbox" name="language[]" value="15" /> 15</p>
  23. <p><input type="submit" name="submit" value="Submit" />
  24.  
  25. <p>
  26. </form>
  27. <p>
  28. <label for="textfield"></label>
  29. </p>
  30. </body>
  31. </html>
  32. <table border="3" align="center">
  33. <tr>
  34. <?php
  35. if(isset($_POST["submit"]))
  36. {
  37. if(!empty($_POST["language"]))
  38. {
  39. echo '<h3>Twoje wybrane liczby</h3>';
  40. foreach($_POST["language"] as $language)
  41. {
  42.  
  43. echo '<td> ' .$language. '</td>';
  44. }
  45. }
  46. else
  47. {
  48. echo "Musisz zaznaczyć by móc zobaczyc swoje liczby";
  49. }
  50. }
  51.  
  52. ?> </tr>


Pozdrawuiam i z góry dziękuje za jakąkolwiek pomoc.

Myslałem cos o taki poleceniu
$sql = "INSERT INTO `loto`.`lotto` (date, ball1, ball2, ball3, ball4, ball5, ball6) VALUES ($_POST[language])"; tylko cos jeszcze nie pasi. Tzn jeszcze nie zapisuje. Oczywiście połączenie z bazą danych jest.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
viking
post 26.11.2016, 13:26:41
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


https://prophp.pl/advice/show/13/w_jaki_spo...larza_do_php%3F
Zamiast update insert oczywiście. Zobacz jeszcze artykuł o pdo.


--------------------
Go to the top of the page
+Quote Post
woxala123
post 26.11.2016, 14:38:07
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


Jeszcze nie ruszam się za PDO, chce na dziś ten temat ogarnąć tylko stoje w miejscu.
Zrobiłęm takie polecenie

$sql = "INSERT INTO `loto`.`lotto` (`id`, `ball1`, `ball2`, `ball3`, `ball4`, `ball5`, `ball6`) VALUES ('', '%s', '%s', '%s', '%s', '%s', '%s')"; ale tlko dodaje rekord ale nie zapisuje wybranych liczb.
Prosze o nakierowanie lub przykłąd.
Go to the top of the page
+Quote Post
viking
post 26.11.2016, 15:08:34
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


A to czego używasz? Mysqli? Liczby to nie s tylko d i bez ciapek.


--------------------
Go to the top of the page
+Quote Post
woxala123
post 26.11.2016, 17:07:30
Post #5





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


Viking to gdzie leży błąd w zapytaniu?
Go to the top of the page
+Quote Post
viking
post 26.11.2016, 17:11:05
Post #6





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Powtórzę pytanie - czego używasz do obsługi bazy? Jeśli mysqli i bindowania to nie tak się robi


--------------------
Go to the top of the page
+Quote Post
woxala123
post 26.11.2016, 18:53:08
Post #7





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


Masz rację viking, zrobię to od innej strony. Tylko chciałem wynik tej petli zapisać do bazy danych.

Okey to inaczej wracając do tematu jak rozpisać $language' bo jak dam takie zapytanie
$sql = "INSERT INTO `loto`.`lotto` (`id`, `ball1`, `ball2`) VALUES ('', '$language', '$language')"; to wstawia m tylko ostatnia wybrana liczbę. Nie umiem tego zrobić by np wybrane 2 liczby wstawił do bazy.

Czy ktoś nakieruje z tą pętlą.
Go to the top of the page
+Quote Post
viking
post 26.11.2016, 19:14:55
Post #8





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Artykuł opisywał jak masz to zrobić. Jeśli nie chcesz pdo to zostaje mysqli i bindowanie parametrów. To co przedstawiłes to był jakiś ciąg znaków dla sprintf. Dla klucza głównego nie wstawia się pustego stringu '' tylko pomija całkowicie.


--------------------
Go to the top of the page
+Quote Post
woxala123
post 28.11.2016, 12:14:31
Post #9





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


To jak zapisać wynik pętli do bazy danych żeby każda liczbę zapisywał do osobnej kolumny.?

Kto rozwiąże mój dylemat?

Czy wie ktoś jak to ruszyć z kopyta?

Witam.
Zrobiłem teraz taki plik, ale wyskakuje mi taki bład "Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\....\loko.php on line 40"
Jak zdefiiowac argument poprawnie dla foreach by zapisywał do bazy danych?
  1.  
  2. <?php require_once('Connections/local.php'); ?>
  3. <?php
  4. if (!function_exists("GetSQLValueString")) {
  5. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  6. {
  7. if (PHP_VERSION < 6) {
  8. $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  9. }
  10.  
  11. $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  12.  
  13. switch ($theType) {
  14. case "text":
  15. $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  16. break;
  17. case "long":
  18. case "int":
  19. $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  20. break;
  21. case "double":
  22. $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  23. break;
  24. case "date":
  25. $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  26. break;
  27. case "defined":
  28. $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  29. break;
  30. }
  31. return $theValue;
  32. }
  33. }
  34.  
  35. $editFormAction = $_SERVER['PHP_SELF'];
  36. if (isset($_SERVER['QUERY_STRING'])) {
  37. $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  38. }
  39.  
  40. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2"))
  41. foreach ($_POST['id'] as $item)
  42. {
  43. $insertSQL = sprintf("INSERT INTO loko (id, bal1, bal2, bal3, bal4, bal5, bal6) VALUES (%s, %s, %s, %s, %s, %s, %s) ",
  44.  
  45. GetSQLValueString($_POST['bal1'][$item], "int"),
  46. GetSQLValueString($_POST['bal2'][$item], "int"),
  47. GetSQLValueString($_POST['bal3'][$item], "int"),
  48. GetSQLValueString($_POST['bal4'][$item], "int"),
  49. GetSQLValueString($_POST['bal5'][$item], "int"),
  50. GetSQLValueString($_POST['bal6'][$item], "int"),
  51. GetSQLValueString($item, "int"));
  52. mysql_select_db($database_local, $local);
  53. $Result1 = mysql_query($insertSQL, $local) or die(mysql_error());
  54.  
  55. $insertGoTo = "loko.php";
  56. if (isset($_SERVER['QUERY_STRING'])) {
  57. $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
  58. $insertGoTo .= $_SERVER['QUERY_STRING'];
  59. }
  60. header(sprintf("Location: %s", $insertGoTo));
  61.  
  62. }
  63.  
  64. mysql_select_db($database_local, $local);
  65. $query_Recordset1 = "SELECT * FROM lotto";
  66. $Recordset1 = mysql_query($query_Recordset1, $local) or die(mysql_error());
  67. $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  68. $totalRows_Recordset1 = mysql_num_rows($Recordset1);
  69. ?>
  70. <form name="form1" method="post" action="">
  71. <table border="1">
  72. <tr>
  73. <td>id</td>
  74. <td>ball1</td>
  75. </tr>
  76. <?php do { ?>
  77. <tr>
  78. <td><?php echo $row_Recordset1['id']; ?>
  79. <input type="checkbox" name="checkbox[]" id="checkbox[]" value="<?php echo $row_Recordset1['id']; ?> ">
  80. <label for="checkbox"></label></td>
  81. <td><?php echo $row_Recordset1['ball1']; ?></td>
  82. </tr>
  83. <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
  84. </table>
  85. <input type="submit" name="button" id="button" value="Wyślij">
  86. </form>
  87. <p>
  88. <?php
  89. mysql_free_result($Recordset1);
  90. ?>
  91.  
  92. <?php
  93.  
  94.  
  95. $dane = $_POST['checkbox'];
  96.  
  97. // sprawdzanie: czy jakieś pole zostało w ogóle zaznaczone - jeśli puste to zwracamy error
  98. if ( !count($dane) ) {
  99. die('Wybierz pole...');
  100. }
  101.  
  102. mysql_select_db($database_local, $local);
  103. $query_Recordset1 = "SELECT id, ball1 FROM lotto WHERE id IN (".implode(',',$_POST['checkbox']).")";
  104. $Recordset1 = mysql_query($query_Recordset1, $local) or die(mysql_error());
  105. $row_Recordset1 = mysql_fetch_assoc($Recordset1);
  106. $totalRows_Recordset1 = mysql_num_rows($Recordset1);
  107. ?>
  108. </p>
  109. <form name="form2" method="post" action="">
  110. <table width="200" border="1">
  111. <?php do { ?>
  112. <tr>
  113. <td><?php echo $row_Recordset1['ball1']; ?></td>
  114.  
  115. </tr>
  116. <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
  117. </table>
  118. <input type="submit" name="button2" id="button2" value="Wyślij">
  119. <input type="hidden" name="MM_insert" value="form2">
  120. </form>
  121. <p>&nbsp; </p>
  122.  


Ten post edytował woxala123 28.11.2016, 12:16:54
Go to the top of the page
+Quote Post
Tomplus
post 28.11.2016, 12:33:19
Post #10





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Ja na twoim miejscu sprawdziłbym czy w ogóle do SQL trafiają dane które oczekujesz zrób sobie print

  1. GetSQLValueString($_POST['bal1'][$item], "int"),
  2. GetSQLValueString($_POST['bal2'][$item], "int"),
  3. GetSQLValueString($_POST['bal3'][$item], "int"),
  4. GetSQLValueString($_POST['bal4'][$item], "int"),
  5. GetSQLValueString($_POST['bal5'][$item], "int"),
  6. GetSQLValueString($_POST['bal6'][$item], "int"),
  7. GetSQLValueString($item, "int")
  8. ]);


Dodatkowo daje dziwne zapytanie: jeżeli idItem jest na końcu tej tablicy, to dlaczego w INSERT dajesz id na początku?
Go to the top of the page
+Quote Post
woxala123
post 28.11.2016, 12:46:04
Post #11





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


Nadal to samo pokazuje.
Go to the top of the page
+Quote Post
nospor
post 28.11.2016, 12:50:29
Post #12





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




foreach ($_POST['id']
Przeciez $_POST['id'] to zwykle pole ID a nie tablica wiec nie bardzo rozumiem co ty oczekujesz od tego kodu

ps: a w ogole to twoj formularz nie zawiera pola o NAME="ID" wiec dla foreach przekazujesz NULL


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
woxala123
post 28.11.2016, 12:54:20
Post #13





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


To szczerze powiem nie wiem jak to rozpisać. Siedzę już nad tym 2 drugi dzień. Przy pierwszym pliku jest na górze zapisuje mi tylko ostatnią liczbę. Tutaj nic nie wychodzi.
Go to the top of the page
+Quote Post
nospor
post 28.11.2016, 12:56:29
Post #14





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




To moze zacznij analizowac kod jaki masz.
Ani nie masz POST['id'] ani nie masz POST[bal...]

Zrob sobie print_r($_POST);
i przyjrzyj sie w koncu tem co wysyla formularz ktory sam generujesz a nie strzelasz na slepo z wymyslonych pol, ktorych twoj formularz nie ma.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
woxala123
post 28.11.2016, 14:29:04
Post #15





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


Okey teraz taki komunikat Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\admin\loko.php on line 40
Array ( [button2] => Wyślij [MM_insert] => form2 )
Czyli trzeba zdefiniowac $_POST

Tyczyli to zdefinować tak
$id=$_POST['id'] i $bal1=$_POST['bal1']

Co dalej z tym? Siedzę przy tym i nic nie wychodzi. Może jakis może przykład bym mógł nad tym dojść do porządku dziennego. Please

Ten post edytował woxala123 28.11.2016, 13:57:28
Go to the top of the page
+Quote Post
Tomplus
post 28.11.2016, 15:23:40
Post #16





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Wiesz jak działa pętla?

jeżeli jako pierwszą wartość w pętli wrzucasz string/number to wyskakuje ci błąd niepoprawnej wartości.
Czyli tak jak powiedział Nospor, zacznij tam wrzucać tablicę.

Możesz w IF przed foreach dodać sobie:

  1. if(is_array($_POST['CosDodaneDoForeach'])) {
  2. foreach($_POST['CosDodaneDoForeach']) as $klucz => $wartosc) {
  3. }
  4. }
Go to the top of the page
+Quote Post
woxala123
post 28.11.2016, 15:36:27
Post #17





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


Witam!
Dziękue za zainteresowanie. Zajmę się tym już jutro, ale wciąż bedę życzliwy za jakiekolwiek sugestie.
Go to the top of the page
+Quote Post
Niree
post 28.11.2016, 20:15:42
Post #18





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

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


Hmm, jak rozumiem, chcesz zaznaczone liczby dodać do mysql?

Przedstawiłeś kod: INSERT INTO loko (id, bal1, bal2, bal3, bal4, bal5, bal6) VALUES (%s, %s, %s, %s, %s, %s, %s)
Po tym wnioskuję, że musiałoby być zaznaczone min. 6 pól 'language'.
Tworząc language[] stworzyłeś tablicę, więc:

  1. <?php
  2. if(isset($_POST["submit"]))
  3. {
  4. if(isset($_POST["language"]))
  5. {
  6. $total = count($_POST['language']);
  7. if($total == '6')
  8. {
  9. echo '<h3>Twoje wybrane liczby</h3>';
  10. $i = 0;
  11. while($i < $total)
  12. {
  13. if($i == '0') $number = $_POST['language'][$i]; else $number .= ','.$_POST['language'][$i].'';
  14. echo '<td> '.$_POST['language'].'</td>';
  15. i++;
  16. }
  17. }
  18. else
  19. {
  20. echo "Musisz zaznaczyć minimum 6 pól.";
  21. }
  22. }
  23. else
  24. {
  25. echo "Musisz zaznaczyć by móc zobaczyc swoje liczby";
  26. }
  27. }
  28.  
  29. ?>


Jak widzisz, kod wymaga zaznaczenia minimum 6 pól.
Wynik będzie w postaci np. 1,2,3,4,5,6 więc musisz: oddzielić liczby funkcją explode() oraz wrzucić je do zapytania MySQL.
Np:
Cytat
$explode = explode(',', $number);
INSERT INTO loko (`id`, `bal1`, `bal2`, `bal3`, `bal4`, `bal5`, `bal6`) VALUES ('".$explode[0]."', '".$explode[1]."', '', '', '', '', '');

itp.

Ten post edytował Niree 28.11.2016, 20:16:39
Go to the top of the page
+Quote Post
woxala123
post 30.11.2016, 15:42:52
Post #19





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


Witam.
Okej Niree, przedstawiłeś rozwiązanie tylko tak w lini 49 poprawiłem i++; na $i++; i teraz to po zaznaczeniu 6 liczb wyskakuje
w tabelce
Array Array Array Array Array Array zamiast 6-ściu zaznaczonych liczb. Gdzie teraz tkwi błąd że pokazuje array a nie liczby.
Go to the top of the page
+Quote Post
Niree
post 30.11.2016, 16:00:37
Post #20





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

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


Tutaj widzę brak [$i] na końcu $_POST['language'] (moje niedopatrzenie):

  1. echo '<td> '.$_POST['language'][$i].'</td>';
  2. $i++;


Do bazy ładuje dobrze?

Ten post edytował Niree 30.11.2016, 16:01:17
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:13