knauzers Posted December 13, 2018 Report Share Posted December 13, 2018 Sveiki, esmu iesācējs programmēšanā. Ir dinamiski (PHP) veidots kalendārs, ar dropdown izvēlni katrā no mēneša dienām. Nepieciešams datumu un dropdown izvēlēto opciju aizsūtīt uz SQL tabulu. Ir problēmas tieši ar dropdown value nosūtīšanu. Principā nosūtīta visām mēneša dienām tiek pēdējās dienas dropdown izvēle. Saprotu, ka kaut kur pietrūkst kāds LOOPS. Varbūt ir kādi padomi / norādījumi, kā šis būtu korekti jārealizē? Paldies jau iepriekš! Quote Link to comment Share on other sites More sharing options...
e-remit Posted December 13, 2018 Report Share Posted December 13, 2018 No sākuma ieliec savu kodu, ja gribi, lai kāds tev palīdz! Quote Link to comment Share on other sites More sharing options...
knauzers Posted December 14, 2018 Author Report Share Posted December 14, 2018 Sorry, kods šāds: <?php date_default_timezone_set('Europe/Riga'); if (isset($_GET['ym'])) { $ym = $_GET['ym']; } else { $ym = date('Y-m'); } $timestamp = strtotime($ym . '-01'); if ($timestamp === false) { $ym = date('Y-m'); $timestamp = strtotime($ym . '-01'); } $today = date('Y-m-j', time()); $html_title = date('Y / m', $timestamp); $prev = date('Y-m', mktime(0, 0, 0, date('m', $timestamp)-1, 1, date('Y', $timestamp))); $next = date('Y-m', mktime(0, 0, 0, date('m', $timestamp)+1, 1, date('Y', $timestamp))); $day_count = date('t', $timestamp); $str = date('w', mktime(0, 0, 0, date('m', $timestamp), 0, date('Y', $timestamp))); $weeks = array(); $week = ''; $week .= str_repeat('<td></td>', $str); for ( $day = 1; $day <= $day_count; $day++, $str++) { $date = $ym . '-' . $day; if ($today == $date) { $week .= '<td class="today">' . $day; } else { $week .= '<td>' . $day; } $week .= '<br>'; $week .= '<select name="name">'; $week .= '<option value="test">test</option>'; $week .= '<option value="test2">test2</option>'; $week .= '</select>'; $test3=$_POST['name']; $link = mysqli_connect("localhost", "root", "xxx", "yyy"); // Check connection if($link === false){ die("ERROR: Could not connect. " . mysqli_connect_error()); } // Attempt insert query execution $sql = "INSERT INTO dezuranti (Col1, Col2) VALUES ('$date', '$test3)"; if(mysqli_query($link, $sql)){ echo "Records were updated successfully."; } else { echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); } // Close connection mysqli_close($link); if ($str % 7 == 6 || $day == $day_count) { if ($day == $day_count) { // Add empty cell $week .= str_repeat('<td></td>', 6 - ($str % 7)); } $weeks[] = '<tr>' . $week . '</tr>'; // Prepare for new week $week = ''; } } Tālāk ir HTML būvēta tabula iekš formas un Submit poga, lai to visu aizsūtītu uz SQL tabulu. Quote Link to comment Share on other sites More sharing options...
knauzers Posted December 18, 2018 Author Report Share Posted December 18, 2018 Anybody? :/ Quote Link to comment Share on other sites More sharing options...
e-remit Posted December 18, 2018 Report Share Posted December 18, 2018 Tur neesi sapratis dažas lietas! Kods, kas uztaisa to <select> tagu un kods, kas saņem un saglabā datus DB, ir divas dažādas koda daļas. No sākuma serveris uztaisa HTML kodu, ko attēlo pārlūks un tajā brīdī nav nekādas darbības ar datu saglabāšanu. Datus saglabā vēlāk, kad pārlūkā tiek submitota forma un serveris saņem datus otru reizi! Tu esi saglabāšanu iekļāvis jau <select> izveidošanas ciklā. Sadali tā: koda sākumā izliec pārbaudi, vai ir nosūtīti dati: if (isset($_POST['name'])) { $test3=$_POST['name']; $link = ... ... // Close connection mysqli_close($link); } ..., bet pašu <select> ieliec <form> tagos, kā arī ieliec tur iekšā pogu <input type="submit"/> Quote Link to comment Share on other sites More sharing options...
knauzers Posted December 18, 2018 Author Report Share Posted December 18, 2018 Tu domā celt <select> tagu (un visu tā saturu) zem HTML koda, iekš formas? Vai tādā gadījumā es nepazaudēšu dropdown izvēli visās mēneša dienās, ko man šobrīd nodrošina PHP? Sorry, ja mani jautājumi ir muļķīgi, vēl apgūstu vielu... :) Quote Link to comment Share on other sites More sharing options...
e-remit Posted December 20, 2018 Report Share Posted December 20, 2018 Ko nozīmē "zem HTML koda"? Pašlaik tev ciklā HTML sagatavošanas laikā, apmēram 30 reizes tiek veidota DB konekcija un izsaukts kļūdains SQL pieprasījums! Visticamāk, esi izslēdzis error_reporting, jo tur kaudzei ar kļūdām būtu jāparādās. Quote Link to comment Share on other sites More sharing options...
knauzers Posted December 20, 2018 Author Report Share Posted December 20, 2018 Tur tā lieta, ka skripts izpildās veiksmīgi, SQL tabulā iegūstu $date vērtības 01-12-2018, 02-12-2018 ..... 31-12.2018, taču $test3 vērtība visām atbilstošajām decembra dienām ir viena un tā pati - pēdējās mēneša dienas dropdown value. Idejiski: Vēlamais rezultāts: 01-12-2018 -> x 02-12-2018 -> y 03-12-2018 -> z Esošais rezultāts: 01-12-2018 -> z 02-12-2018 -> z 03-12-2018 -> z Otra koda daļa, kuru iepriekš neieliku: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>TITLE</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <link href="https://fonts.googleapis.com/css?family=Noto+Sans" rel="stylesheet"> <style> .container { font-family: 'Noto Sans', sans-serif; margin-top: 10px; width: auto; } .button { height: 70px; width: 30%; color: black; font-size: 13px; background-color: #A9F5E1; text-align:center; margin-left:600px; } .button:hover { background-color: #01DFA5; color: black; } h3 { margin-bottom: 100px; } th { height: 10px; text-align: center; font-size: 19px; } td { height: 10px; background-color: #A9F5E1; font-style: italic; font-size: 13px; font-weight: bold; } .today { background: orange; } </style> </head> <body style="background-color:#0B4C5F;"> <div class="container"> <h2 style="color:#01DFA5">NOSAUKUMS <a href="?ym=<?php echo $prev; ?>"><</a> <?php echo $html_title; ?> <a href="?ym=<?php echo $next; ?>">></a></h2> <form method="post"> <table class="table table-bordered" > <tr bgcolor="#01DFA5"> <th>Pr</th> <th>Ot</th> <th>Tr</th> <th>Ce</th> <th>Pi</th> <th style="color:red">Se</th> <th style="color:red">Sv</th> </tr> <?php foreach ($weeks as $week) { echo $week; } ?> </table> <input class="button" type="submit" value="Submit!"> </form> </div> </body> </html> Quote Link to comment Share on other sites More sharing options...
e-remit Posted December 20, 2018 Report Share Posted December 20, 2018 Kaut kā ir sajūta, ka kods, ko esi iekopējis, nedaudz atšķiras no tā, kuru esi izpildījis. 14 hours ago, knauzers said: taču $test3 vērtība visām atbilstošajām decembra dienām ir viena un tā pati - pēdējās mēneša dienas dropdown value Nu bet pareizi - tā vērtība tiek aizpildīta no pēdējā POST visiem vienāda! Katrā skripta izpildes laikā $_POST['name'] vērtība ir viena un tā pati! Quote Link to comment Share on other sites More sharing options...
knauzers Posted December 21, 2018 Author Report Share Posted December 21, 2018 8 hours ago, e-remit said: Kaut kā ir sajūta, ka kods, ko esi iekopējis, nedaudz atšķiras no tā, kuru esi izpildījis. Nu bet pareizi - tā vērtība tiek aizpildīta no pēdējā POST visiem vienāda! Katrā skripta izpildes laikā $_POST['name'] vērtība ir viena un tā pati! Tad jautājums, kā lai šo padara dinamisku? Es, protams, nesagaidu gatavu kodu, bet vismaz virzienu... :) Quote Link to comment Share on other sites More sharing options...
e-remit Posted December 21, 2018 Report Share Posted December 21, 2018 5 hours ago, knauzers said: Tad jautājums, kā lai šo padara dinamisku? On 12/18/2018 at 3:40 PM, e-remit said: Sadali tā: koda sākumā izliec pārbaudi, vai ir nosūtīti dati: if (isset($_POST['name'])) { $test3=$_POST['name']; $link = ... ... // Close connection mysqli_close($link); } Quote Link to comment Share on other sites More sharing options...
knauzers Posted January 4, 2019 Author Report Share Posted January 4, 2019 On 12/21/2018 at 1:52 PM, e-remit said: Atgriežos pie problēmas risināšanas. Ar Tevis ieteikto metodi esmu turpat, kur biju - joprojām iegūstu šo: On 12/13/2018 at 5:03 PM, knauzers said: Principā nosūtīta visām mēneša dienām tiek pēdējās dienas dropdown izvēle. Quote Link to comment Share on other sites More sharing options...
knauzers Posted January 4, 2019 Author Report Share Posted January 4, 2019 Atgriežos pie problēmas risināšanas. Ar Tevis ieteikto metodi esmu turpat, kur biju - joprojām iegūstu šo: On 12/21/2018 at 12:29 AM, e-remit said: taču $test3 vērtība visām atbilstošajām decembra dienām ir viena un tā pati - pēdējās mēneša dienas dropdown value Varbūt kods kā tāds vairs nav tūnējams un ir, tā teikt, izsmēlis sevi ,līdz ar to jādomā kas fundamentāli savādāks? Quote Link to comment Share on other sites More sharing options...
e-remit Posted January 4, 2019 Report Share Posted January 4, 2019 52 minutes ago, knauzers said: Ar Tevis ieteikto metodi esmu turpat, kur biju un, kāds ir aktuālais kods? Quote Link to comment Share on other sites More sharing options...
knauzers Posted January 4, 2019 Author Report Share Posted January 4, 2019 Kods: <?php // Set your timezone date_default_timezone_set('Europe/Riga'); // Get prev & next month if (isset($_GET['ym'])) { $ym = $_GET['ym']; } else { // This month $ym = date('Y-m'); } // Check format $timestamp = strtotime($ym . '-01'); if ($timestamp === false) { $ym = date('Y-m'); $timestamp = strtotime($ym . '-01'); } // Today $today = date('Y-m-j', time()); // For H3 title $html_title = date('Y / m', $timestamp); // Create prev & next month link mktime(hour,minute,second,month,day,year) $prev = date('Y-m', mktime(0, 0, 0, date('m', $timestamp)-1, 1, date('Y', $timestamp))); $next = date('Y-m', mktime(0, 0, 0, date('m', $timestamp)+1, 1, date('Y', $timestamp))); // You can also use strtotime! // $prev = date('Y-m', strtotime('-1 month', $timestamp)); // $next = date('Y-m', strtotime('+1 month', $timestamp)); // Number of days in the month $day_count = date('t', $timestamp); // 0:Sun 1:Mon 2:Tue ... $str = date('w', mktime(0, 0, 0, date('m', $timestamp), 0, date('Y', $timestamp))); //$str = date('w', $timestamp); // Create Calendar!! $weeks = array(); $week = ''; // Add empty cell $week .= str_repeat('<td></td>', $str); for ( $day = 1; $day <= $day_count; $day++, $str++) { $date = $ym . '-' . $day; if ($today == $date) { $week .= '<td class="today">' . $day; } else { $week .= '<td>' . $day; } $week .= '<select name="name" style="background-color:#01A9DB;">'; $week .= '<option value="0">...</option>'; $week .= '<option value="A">A</option>'; $week .= '<option value="B">B</option>'; $week .= '<option value="C">C</option>'; $week .= '<option value="D">D</option>'; $week .= '<option value="E">E</option>'; $week .= '<option value="F">F</option>'; $week .= '</select>'; $week .= '</td>'; if (isset($_POST['name'])) { $test=$_POST['name']; $link = mysqli_connect("localhost", "root", "xxx", "yyy"); // Check connection if($link === false){ die("ERROR: Could not connect. " . mysqli_connect_error()); } // Attempt insert query execution $sql = "INSERT INTO d ez ura n ti (Col1, Col2 ) VALUES ('$date', '$test)"; if(mysqli_query($link, $sql)){ echo "Records were updated successfully."; } else { echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); } // Close connection mysqli_close($link); } // End of the week OR End of the month if ($str % 7 == 6 || $day == $day_count) { if ($day == $day_count) { // Add empty cell $week .= str_repeat('<td></td>', 6 - ($str % 7)); } $weeks[] = '<tr>' . $week . '</tr>'; // Prepare for new week $week = ''; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>TITLE</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <link href="https://fonts.googleapis.com/css?family=Noto+Sans" rel="stylesheet"> <style> .container { font-family: 'Noto Sans', sans-serif; margin-top: 10px; width: auto; } .button { height: 70px; width: 30%; color: black; font-size: 13px; background-color: #A9F5E1; text-align:center; margin-left:600px; } .button:hover { background-color: #01DFA5; color: black; } h3 { margin-bottom: 100px; } th { height: 10px; text-align: center; font-size: 19px; } td { height: 10px; background-color: #A9F5E1; font-style: italic; font-size: 13px; font-weight: bold; } .today { background: orange; } </style> </head> <body style="background-color:#0B4C5F;"> <div class="container"> <h2 style="color:#01DFA5">NOSAUKUMS <a href="?ym=<?php echo $prev; ?>"><</a> <?php echo $html_title; ?> <a href="?ym=<?php echo $next; ?>">></a></h2> <form method="post"> <table class="table table-bordered" > <tr bgcolor="#01DFA5"> <th>Pr</th> <th>Ot</th> <th>Tr</th> <th>Ce</th> <th>Pi</th> <th style="color:red">Se</th> <th style="color:red">Sv</th> </tr> <?php foreach ($weeks as $week) { echo $week; } ?> </table> <input class="button" type="submit" value="Submit!"> </form> </div> <br> <br> <table style="width:15%;bgcolor:white"> <tr> <td style="background-color:#FA5882;width:60px;">.</td> <td>Operativas lietas</td> </tr> <tr> <td style="background-color:#F3F781;width:60px;">.</td> <td>Projekti</td> </tr> <tr> <td style="background-color:#01A9DB;width:60px;">.</td> <td>Dienas dezurants</td> </tr> </table> </body> </html> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.