i am trying to build a precence report website on php, i am have built a form that generates the dates between the 21st of the selected month till the 20th of the next month. the data outputs as a table with number of rows equal to the days of the month. each row contains 8 prameters.
the problem is that I can't insert the data to the db.
i have made an array that contains all the parameters values and tryed to loop the mysql query.
this is the class i have written to insert the data `
public function Table($userid, $rdate, $rday, $rpresence, $rway, $rkm, $rexpence, $rfile, $report){
$query = $this->dbh->prepare(\'INSERT INTO time (rdate, rday, rway, rkm, rexpence, rfile, rprecence, report) VALUES'
for ($i = 1; $i <= $countdate; $i++) {
$query.=($_POST['rdate'][$i]
.', '.$_POST['rday'][$i]
.', '.$_POST['rway'][$i]
.', '.$_POST['rkm'][$i]
.', '.$_POST['rexpence'][$i]
.', '.$_POST['rfile'][$i]
.', '.$_POST['rpresence'][$i]
.', '.$_POST['report'])\')';
if ($i>$countdate) {
$query .= ',';
}
}
}
`
this is the table code
<?php
//require_once 'inc.php';
?>
<?php
if(isset($_POST['submit'])){
$month = $_POST['month'];
$year = $_POST['year'];
}
if(isset($_POST['adken'])){
$month = $_POST['month'];
$year = $_POST['year'];
$userid = $_SESSION['id'];
$report = $_POST['month']['year'];
$rdate = $_POST['rdate'][$i];
$rday = $_POST['rday'][$i];
$rway = $_POST['rway'][$i];
$rkm = $_POST['rkm'][$i];
$rexpence = $_POST['rexpence'][$i];
$rfile = $_FILES['rfile']['name'][$i];
$rpresence = $_POST['rpresence'][$i];
echo var_dump($_POST);
$update = new User();
$update->Table($rdate, $rday, $rpresence, $rway, $rkm, $rexpence, $rfile, $report);
}
$this_year = date( "Y", strtotime($year)); //
$next_year = date( "Y", strtotime($year." +1 year")); //
$this_month = date( "m", strtotime($month)); //
$next_month = date( "m", strtotime($month." +1 month")); //
$previous_month = date('m')-1; //
$this_day = date('D'); //
$num_days = cal_days_in_month(CAL_GREGORIAN, $this_month, $this_year); //כ
$jan = date( "m", strtotime('January'));
?>
<html>
<head>
</head>
<body>
<form name="adken" action="" method="POST" enctype="multipart/form-data" >
<table class="table table-striped table-bordered table-hover" id="dataTables-example">
<thead>
<tr>
<th>date</th>
<th>day</th>
<th>presence</th>
<th>way</th>
<th>km</th>
<th>expence</th>
<th>add file</th>
</tr>
</thead>
<tbody>
<tr>
<?php// echo $this_month;?><br />
<?php// echo $next_month;?><br />
<?php// echo $_SESSION['id'];?>
<?php
if($month == 'December'){
for ($i=21; $i<=$num_days ; $i++)
echo'
<td><input type="text" name="rdate['.$i.']" class="readonly" value="'.$i.'/'.$this_month.'/'.$this_year.'" readonly></td>
<td><input type="text" name="rday['.$i.']" class="readonly" value="'.date('D').' " readonly></td>
<td><input name="rpresence['.$i.']" type="checkbox" value="1"/></td>
<td><textarea name="rway['.$i.']" cols="20" rows="2"></textarea></td>
<td width="10%"><textarea name="rkm['.$i.']" cols="3" rows="2"></textarea></td>
<td><textarea name="rexpence['.$i.']" cols="20" rows="2"></textarea></td>
<td><input class="form-control" type="file" name="rfile['.$i.']" id="file" value="בחר קובץ"></td>
<td class="hidden"><input type="text" name="report" value="'.$year.' '.$month.'" readonly></td>
</tr>';
for ($i=1; $i<=20 ; $i++)
echo '
<td><input type="text" name="rdate['.$i.']" class="readonly" value="'.$i.'/'.$jan.'/'.$next_year.'" readonly></td>
<td><input type="text" name="rday['.$i.']" class="readonly" value="'.date('D').'" readonly> </td>
<td><input name="rpresence['.$i.']" type="checkbox" value="1"/></td>
<td><textarea name="rway['.$i.']" cols="20" rows="2"></textarea></td>
<td width="10%"><textarea name="rkm['.$i.']" cols="3" rows="2"></textarea></td>
<td><textarea name="rexpence['.$i.']" cols="20" rows="2"></textarea></td>
<td><input class="form-control" type="file" name="rfile['.$i.']" id="file" value="בחר קובץ"></td>
<td class="hidden"><input type="text" name="report" value="'.$year.' '.$month.'" readonly></td>
</tr>';
}else{
for ($i=21; $i<=$num_days ; $i++)
echo '
<td><input type="text" name="rdate['.$i.']" class="readonly" value="'.$i.'/'.$this_month.'/'.$this_year.'" readonly></td>
<td><input type="text" name="rday['.$i.']" class="readonly" value="'.date('D').'" readonly> </td>
<td><input name="rpresence['.$i.']" type="checkbox" value="1"/></td>
<td><textarea name="rway['.$i.']" cols="20" rows="2"></textarea></td>
<td width="10%"><textarea name="rkm['.$i.']" cols="3" rows="2"></textarea></td>
<td><textarea name="rexpence['.$i.']" cols="20" rows="2"></textarea></td>
<td><input class="form-control" type="file" name="rfile['.$i.']" id="file" value="בחר קובץ"></td>
<td class="hidden"><input type="text" name="report" value="'.$year.' '.$month.'" readonly></td>
</tr>';
for ($i=1; $i<=20 ; $i++)
echo '
<td><input type="text" name="rdate['.$i.']" class="readonly" value="'.$i.'/'.$next_month.'/'.$this_year.'" readonly></td>
<td><input type="text" name="rday['.$i.']" class="readonly" value="'.date('D').' " readonly></td>
<td><input name="rpresence['.$i.']" type="checkbox" value="1"/></td>
<td><textarea name="rway['.$i.']" cols="20" rows="2"></textarea></td>
<td width="10%"><textarea name="rkm['.$i.']" cols="3" rows="2"></textarea></td>
<td><textarea name="rexpence['.$i.']" cols="20" rows="2"></textarea></td>
<td><input class="form-control" type="file" name="rfile['.$i.']" id="file" value="בחר קובץ"></td>
<td class="hidden"><input type="text" name="report" value="'.$year.' '.$month.'" readonly></td>
</tr>';
} ?>
</tbody>
</table>
<p>
<input name="password" type="text" value="Password" />
<br />
<input type="submit" name="send" value="Send" />
<input type="submit" name="adken" value="Update" />
</p>
</form>
</body>
</html>
this is my DB
- Database: `mop`
-- Table structure for table `time`
--
CREATE TABLE IF NOT EXISTS `time` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userid` int(11) DEFAULT NULL,
`rdate` date DEFAULT NULL,
`rday` varchar(10) DEFAULT NULL,
`rpresence` int(1) DEFAULT NULL,
`rway` longtext,
`rkm` int(10) DEFAULT NULL,
`rexpence` int(255) DEFAULT NULL,
`rfile` mediumtext,
`report` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `username` (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
--
-- Constraints for dumped tables
-- Constraints for table `time`
--
ALTER TABLE `time`
ADD CONSTRAINT `time_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `users` (`id`) ON DELETE CASCADE;
Please, any assistance even the smallest one will be great!
i am stuck on this for the last five days.
other suggestions to insert the data will be great.
Thanx Dave
POST UPDATE
This is the current Table
method that should insert all the data to the database.
public function Table($rdate, $rday, $rpresence, $rway, $rkm, $rexpence, $rfile, $report){
$query = "INSERT INTO time (rdate, rday, rway, rkm, rexpence, rfile, rpresence, report) VALUES ";
$values = "";
foreach($rdate AS $key => $value) {
if(strlen($values) > 0) $values .= ", ";
$values .= "('".$value."', '".$rdate[$key]."', '".$rday[$key]."', '".$rway[$key]."', ".$rkm[$key].", ".$rexpence[$key].", '".$rfile[$key]."', ".$rpresence[$key].", '".$report[$key]."')";
}
$query .= $values;
try {
$query = $this->dbh->prepare($query);
return $query->execute();
} catch(PDOException $e) {
return $e;
}
}
when I run the script I receive the following error:
Warning: Invalid argument supplied for foreach() in C:\wamp\www\mop\inc\userclass.php on line 128
.
line 128 is foreach($rdate AS $key => $value) {