【发布时间】:2017-01-03 06:42:45
【问题描述】:
我正在尝试创建一个网页,其中的表格列出了整整一个月的一堆饭菜。我希望能够在每一行的开头(1 行 - 一天)使用 单选按钮 来选择下一餐是哪一餐。 这背后的原因是我有另一个网页将显示“下一顿饭:XXX”,其中 XXX 是从数据库中读取的(类似于“where nextmeal=1”)。 所以基本上我想要的是,当我激活我的一个单选按钮时,这一行中的餐点应该在数据库条目中获得 nextmeal=1。 数据库表有以下columns = date,meat,veggie,nextmeal 我尝试了一些关于如何将活动单选按钮值发送到服务器的建议,但我无法将正确的日期粘贴到服务器以执行正确的查询。
表格网页源代码:
<?php
require_once 'db_config.inc.php';
require_once 'functionsgerichte.php';
$db = new mysqli($db_server,$db_user,$db_password,$db_database);
if(!empty($_GET['monat'])) {$monat = $_GET['monat'];} //define default_month
else $monat = 14;
if(!empty($_GET['jahr'])) {$activ_year = $_GET['jahr'];} //define default_year
else $activ_year = 2010;
?>
<html>
<style>
#gerichtetext {
width: 100%;
padding: 5px;
margin: 0px;
background-color:rgba(0, 0, 0, 0);
color:black;
border: none;
outline:none;
}
input[type=radio] {
width: 100%;
padding: 5px;
margin: 0px;
height: 50%;
}
</style>
<link rel="stylesheet" href="../includes/jqueryui/jquery-ui.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="../includes/jqueryui/jquery-ui.min.js"></script>
<body bgcolor = '#e3e3e3'>
<form action style='float:left'>
<select name='monat' size='1'>
<?php
$monate = array("","Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"); //
for($i=1; $i<=12;$i++)
{
if($monat== 14) echo "<option value=".$i.">". $monate[$i] ."";
else if($i == $_GET['monat']) echo "<option selected='selected' value=".$i.">". $monate[$i] ."";
else echo "<option value=".$i.">". $monate[$i] ."";
}
echo "</select>";
$jahrabfrage="SELECT DISTINCT YEAR(timestamp) as jahre FROM essenslog ORDER BY year(timestamp)";
$jab = mysqli_query($db,$jahrabfrage);
echo "<select name='jahr' size='1'>";
while($year = mysqli_fetch_object($jab))
{
if($year->jahre == $_GET["jahr"]) echo "<option value='$activ_year' selected='selected'> $year->jahre</option>";
else echo "<option value='$year->jahre'>$year->jahre</option>";
}
?>
</select>
<input type='submit' value='send'>
</form>
<?php
$month=$_GET['monat']; $year = $_GET['jahr']; // Variablen übergeben
$unixtime = "$year-$month-21 12:00:00"; //21. Tag des Monats des Jahres
$unixmonat = date("t", strtotime($unixtime)); //Ermittlung der Anzahl der Tage des Monats des Jahres
$Tage = Array_Fill(1, $unixmonat,42); //Auffüllen eines Arrays (von 1-Anzahl der Tage eines Monats)
//Ermittlung der Anzahl der DB-Einträge
$groesse = count($alle);
$tmp = array_keys($Tage);
$LetzterTag = end($tmp)+1;
$temptimer = 0;
$AlleTage = array();
for($i=0; $i<$LetzterTag;$i++) //Erstellung von je einem Object je Tag
{
$ActiveDay[$i] = new NeuerTag;
array_push($AlleTage,$ActiveDay[$i]);
}
$i = 0; //initialisieren des Tagecounters
?>
<form action='gericht2db.php' id='MyForm' method='get' >
<input type='hidden' value='<?php echo $month; ?>' name='monat'/>
<input type='hidden' value='<?php echo $year; ?>' name='jahr'/>
<input type='hidden' value='<?php echo $LetzterTag; ?>' name='letztertag'/>
<input type='hidden' value='' name='radio_row'/>
<input style='float:right' onclick='check()' id='submit-button' type='submit' value='SPEICHERN'/>
<table border ='1' width ='100%' height ='100%' style='clear:both'><tr bgcolor='#666666' style='color:white'><td width='5%'>NächstesEssen</td><td width='10%'>Wochentag</td><td width='10%'>Datum</td><td width='35%'>Fleisch</td><td width='35%'>Vegetarisch</td></tr>
<?php
for($i=1; $i<$LetzterTag;$i++)
{
$time = "$year-$month-$i";
if(date('l',strtotime($time)) == "Saturday" ||date('l',strtotime($time)) == "Sunday" || in_array(strtotime($time), $Freietage)) $ActiveDay[$i]->Feiertag = true;
if($ActiveDay[$i]->Begin == 0)
{
$color = "#969696";
if(date('l',strtotime($time)) == "Saturday" ||date('l',strtotime($time)) == "Sunday" || in_array(strtotime($time), $Freietage))
{
$color = "#86191a";
$fontcolor = "#a1a1a1";
}
else
{
$color = "#969696";
$fontcolor = "black";
}
echo "<tr bgcolor='$color' style='color:$fontcolor'>";
echo "<td >";
if(date('l',strtotime($time)) == "Saturday" ||date('l',strtotime($time)) == "Sunday" || in_array(strtotime($time), $Freietage))
{
echo "</td>";
}
else
{
echo "<input type='radio' id='radio_".$i."' name='radio' value='radio_".$i."' />";
echo "</td>";
}
echo "<td>".date('l',strtotime($time))."</td>";
echo "<td>".date("d", strtotime($time)).".".date("m", strtotime($time)).".".date("Y", strtotime($time))."</td>";
$fleisch=fleisch(date("Y", strtotime($time))."-".date("m", strtotime($time))."-".date("d", strtotime($time)));
$veggie=veggie(date("Y", strtotime($time))."-".date("m", strtotime($time))."-".date("d", strtotime($time)));
$temp="fleisch_".$i ;
echo "<td >";
if(date('l',strtotime($time)) == "Saturday" ||date('l',strtotime($time)) == "Sunday" || in_array(strtotime($time), $Freietage))
{
echo "</td>";
}
else
{
echo "<input type='text' id='gerichtetext' name='".$temp."' value='".$fleisch."'/></td>";
echo "</td>";
}
$temp="veggie_".$i ;
echo "<td>";
if(date('l',strtotime($time)) == "Saturday" ||date('l',strtotime($time)) == "Sunday" || in_array(strtotime($time), $Freietage))
{
echo "</td>";
}
else
{
echo "<input type='text' id='gerichtetext' name='".$temp."' value='".$veggie."'/></td>";
echo "</td>";
}
echo "</tr>";
}
echo " </td>";
}
?>
</tr>
</table>
</form>
<script>
$('tbody').on('change', ':radio', function()
{
var line = $('input[name=radio]:checked').val();
// alert(line);
});
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">
$.ajax({
url: 'gericht2db.php',
type: 'POST',
data: 'radio_row=blablubeldiblub' ,
success: function(data) {
//Optional callback function on success
}
});
</script>
</body>
</html>
然后点击表单的代码:
require_once 'db_config.inc.php';
require_once 'functionsgerichte.php';
$connection = mysql_connect($db_server,$db_user,$db_password);
mysql_select_db($db_database,$connection);
$LetzterTag = $_REQUEST['letztertag'];
$AlleTage = array();
$year= $_REQUEST['jahr'];
$month= $_REQUEST['monat'];
for($i=0; $i<$LetzterTag;$i++) {
//Erstellung von je einem Object je Tag
$ActiveDay[$i] = new NeuerTag;
array_push($AlleTage,$ActiveDay[$i]);
}
$i = 0 ;
for($i=1; $i<$LetzterTag;$i++) {
$time = $year.'-'.$month.'-'.$i;
if(date('l',strtotime($time)) == "Saturday" ||date('l',strtotime($time)) == "Sunday" || in_array(strtotime($time), $Freietage))
$ActiveDay[$i]->Feiertag = true;
if($ActiveDay[$i]->Begin == 0) {
$naechstesessen= $_REQUEST['naechstesessen'];
$fleischrequest='fleisch_'.$i ;
$fleisch= $_REQUEST[$fleischrequest];
$veggierequest='veggie_'.$i ;
$veggie= $_REQUEST[$veggierequest];
$connection=mysql_connect('oris', 'root', 'orhro');
mysql_select_db('anwesenheit',$connection);
if ($naechstesessen== "radio_1") {
$sql = "update gericht set naechstesessen='1'";
try {
$query = mysql_query($sql);
} catch (Exception $e) {
echo $e->getMessage();
}
$sql = "update gericht set naechstesessen='1' where Datum='".$time."'";
try {
$query = mysql_query($sql);
} catch (Exception $e) {
echo $e->getMessage();
}
}
$sql = "DELETE from gericht where Datum='".$time."'";
try {
$query = mysql_query($sql);
} catch (Exception $e) {
echo $e->getMessage();
}
$sql = "INSERT INTO gericht (Datum,Fleisch,Vegetarisch) VALUES ('".$time."','".$fleisch."','".$veggie."')";
try {
$query = mysql_query($sql);
} catch (Exception $e) {
echo $e->getMessage();
}
}
}
Header("Location: ".$_SERVER['HTTP_REFERER']."");
编辑:我还希望在单击表单、将表单添加到源代码后保持之前单击的单选按钮保持活动状态。
【问题讨论】:
-
存储用餐日期不是更简单吗?
-
您只需要一个数组来存储提交时选择的平均值
-
当然,但我仍然在努力为我想要存储的日期找到正确的行。我添加了一些内容以使我的问题更具体
-
@Shadow 你会如何储存食物?我仍然需要一种方法,以便以某种方式选择下一顿饭并在页面重新加载时保持选中状态,直到我在另一天选择另一顿饭。