2016-04-26 3 views
-2

Я пытаюсь создать календарь событий PHP/MySQL. Однако это не совсем правильно. Ниже мой код:Невозможно вставить данные в базу данных событий MySQL

// calender.php   

$servername = "localhost"; 
$username = "username"; 
$password = ""; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password); 

// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 

@mysqli_select_db("calen"); 
if ([email protected]_select_db) { 
    die("database connection failed".mysqli_connect_error()); 
} 

/* 
mysqli_connect($hostname,$username,$password) or die ($error); 
mysqli_select_db($dbname) or die ($error); 
*/ 
      ?> 
<html> 
    <head> 
     <script> 
     function lastmonth(month,year) { 
      if (month == 1) { 
       --year; 
       month = 13; 
      } 
      --month 
      var monthstring= ""+month+""; 
      var monthlength = monthstring.length; 
      if (monthlength <=1) { 
       monthstring = "0" + monthstring; 
      } 
      document.location.href = "<?= $_SERVER['PHP_SELF'];?>?month="+monthstring+"&year="+year; 
     } 

     function nextmonth(month,year) { 
      if(month == 12) { 
       ++year; 
       month = 0; 
      } 
      ++month 
      var monthstring= ""+month+""; 
      var monthlength = monthstring.length; 
      if (monthlength <=1) { 
       monthstring = "0" + monthstring; 
      } 
      document.location.href = "<?=$_SERVER['PHP_SELF'];?>?month="+monthstring+"&year="+year; 
     } 
     </script> 
    </head> 
    <body> 
     <?php 
     if (isset($_GET['day'])) { //to pass variable 
      $day = $_GET['day']; 
     } else { 
      $day = date("j"); 
     } 
     if (isset($_GET['month'])) { 
      $month=$_GET['month']; 
     } else { 
      $month = date("n"); 
     } 
     if (isset($_GET['year'])) { 
      $year=$_GET['year']; 
     } else { 
      $year = date("y"); 
     } 

     $currentTimeStamp = strtotime("$year-$month-$day"); 
     $monthname = date("F", $currentTimeStamp); 
     $numofdays = date("t", $currentTimeStamp); 
     $counter = 0; 
     ?> 
     <?php 
     if (isset($_GET['add'])) { 
      $title =$_POST['txttitle']; 
      $detail =$_POST['txtdetail']; 
      $eventdate = $month."/".$day."/".$year; 
      $insert = "INSERT into calendar(Title,Detail,EventDate,DateAdded) values ('".$title."','".$detail."','".$eventdate."',now())"; 
      $check = mysqli_query($conn,$insert); 
      if ($check) { 
       echo "Event Added..."; 
      } else { 
       echo "Failed...."; 
      } 
     } 
     ?> 

     <table border='1'> 
      <tr> 
       <td><input style='width:50px;' type='button' value='<' name='previous' onclick="lastmonth(<?php echo $month.",".$year ?>)"> </td> 
       <td colspan='5' align='center'> <?php echo $monthname.",".$year ?> </td> 
       <td><input style='width:50px;' type='button' value='>' name='next' onclick="nextmonth(<?php echo $month.",".$year ?>)"></td> 
      </tr> 
      <tr> 
       <td width='50px' align='center'>Sun</td> 
       <td width='50px'align='center'>Mon</td> 
       <td width='50px'align='center'>Tue</td> 
       <td width='50px'align='center'>Wed</td> 
       <td width='50px'align='center'>Thu</td> 
       <td width='50px'align='center'>Fri</td> 
       <td width='50px'align='center'>Sat</td> 
      </tr> 
      <?php 
      echo "<tr>"; 

      for ($i=1;$i<$numofdays+1;$i++,$counter++) { 
       $TimeStamp = strtotime("$year-$month-$i"); 
       if ($i == 1) { 
        $firstday = date("w", $TimeStamp); //which day 1 falls on 
        for ($j = 0; $j < $firstday; $j++, $counter++) { 
         echo "<td>&nbsp;</td>"; 
        } 
       } 
       if ($counter % 7 == 0) { 
        echo "</tr><tr>"; 
       } 
       $monthstring=$month; 
       $monthlength=strlen($monthstring); 
       $daystring=$i; 
       $daylength=strlen($daystring); 
       if ($monthlength<=1) { 
        $monthstring = "0".$monthstring; 
       } 

       if ($daylength<=1) { 
        $daystring="0".$daystring; 
       } 

       echo "<td align='center'> <a href='".$_SERVER['PHP_SELF']."?month=".$monthstring."&day=".$daystring."&year=".$year."&v=true'>".$i."</a> </td>"; 
      } 
      echo "</tr>"; 
      ?> 
     </table> 

     <?php 
     if (isset($_GET['v'])) { 
      echo "<a href='".$_SERVER['PHP_SELF']."?month=".$monthstring."&day=".$daystring."&year=".$year."&v=true&f=true'>Add Event </a>"; 
      if (isset($_GET['f'])) { 
       include("event.php"); 
      } 
        } 
      ?> 

    </body> 
</html> 

event.php

<form name='event' method='POST' action="<?php $_SERVER['PHP_SELF']; ?>?month=<?php echo $month;?>&day=<?php echo $day;?>&year=<?php echo $year; ?>&v=true&add=true"> 
    <table width='400px' border='0'> 
    <tr> 
    <td width='150px'>Title</td> 
    <td width='250px'><input type='text' name='txttitle'</td> 
    </tr> 
    <tr> 
    <td width='150px'>Detail</td> 
    <td width='250px'><textarea name='txtdetail'></textarea></td> 
    </tr> 
    <tr> 
    <td colspan='2' align='center'><input type='submit' name='btnadd' value='Add Event'></td> 
    </tr> 
    </table> 
    </form> 

SQL:

CREATE TABLE `calendar` (
    `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 

`Title` VARCHAR(65) NOT NULL , 
`Detail` VARCHAR(255) NOT NULL , 
`EventDate` VARCHAR(10) NOT NULL , 
`DateAdded` DATE NOT NULL 
); 

Я не могу вставить данные в базу данных. Я наклеил код calendar.php, event.php и SQL. Пожалуйста, проверьте код и помогите мне в вставке данных.

+0

** ПРЕДУПРЕЖДЕНИЕ **: При использовании 'mysqli' вы должны использовать параметризованные запросы и [' bind_param'] (http://php.net/manual/en/mysqli-stmt.bind- param.php), чтобы добавить данные пользователя в ваш запрос. ** НЕ используйте ** интерполирование строк или конкатенацию для выполнения этого, потому что вы создали серьезную [SQL-инъекцию] (http://bobby-tables.com/). ** НИКОГДА не ставьте данные '$ _POST' или' $ _GET' непосредственно в запрос, это может быть очень вредно, если кто-то пытается использовать вашу ошибку. – tadman

ответ

3

Вам нужно добавить переменную соединения с помощью mysqli_select_db(). Таким образом, ваш код будет:

<?php 
$servername = "localhost"; 
$username = "username"; 
$password = ""; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password); 

// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 

//@mysqli_select_db($conn, "calen"); 
if(!mysqli_select_db($conn, "calen")) { 
    die ("database connection failed".mysqli_connect_error()); 
} 
/* 
mysqli_connect($hostname,$username,$password) or die ($error); 
mysqli_select_db($dbname) or die ($error); 
*/ 
?> 
<html> 
    <head> 
     <script> 
     function lastmonth(month,year) 
     { 
      if(month == 1) 
       { 
        --year; 
        month = 13; 
       } 
       --month 
       var monthstring= ""+month+""; 
       var monthlength = monthstring.length; 
       if(monthlength <=1) 
       { 
        monthstring = "0" + monthstring; 
       } 
       document.location.href ="<?php $_SERVER['PHP_SELF'];?>?month="+monthstring+"&year="+year; 
     } 

     function nextmonth(month,year) 
     { 
      if (month == 12) { 
       ++year; 
       month = 0; 
      } 
      ++month 
      var monthstring= ""+month+""; 
      var monthlength = monthstring.length; 
      if (monthlength <=1) { 
       monthstring = "0" + monthstring; 
      } 
      document.location.href ="<?php $_SERVER['PHP_SELF'];?>?month="+monthstring+"&year="+year; 
     } 
     </script> 
    </head> 
    <body> 
     <?php 
     if (isset($_GET['day'])) { //to pass variable 
      $day=$_GET['day']; 
     } else { 
      $day = date("j"); 
     } 
     if (isset($_GET['month'])) { 
      $month=$_GET['month']; 
     } else { 
      $month = date("n"); 
      if (isset($_GET['year'])) { 
       $year=$_GET['year']; 
      } else { 
       $year = date("y"); 
      } 
      $currentTimeStamp = strtotime("$year-$month-$day"); 
      $monthname = date("F", $currentTimeStamp); 
      $numofdays = date("t", $currentTimeStamp); 
      $counter = 0; 
     ?> 
     <?php 
     if (isset($_GET['add'])) { 
      $title =$_POST['txttitle']; 
      $detail =$_POST['txtdetail']; 
      $eventdate = $month."/".$day."/".$year; 
      $insert = "INSERT INTO calendar (Title,Detail,EventDate,DateAdded) VALUES ('".$title."','".$detail."','".$eventdate."', NOW())"; 
      $check = mysqli_query($conn,$insert); 
      if ($check) { 
       echo "Event Added..."; 
      } else { 
       echo "Failed...."; 
      } 
     } 
     ?> 
     <table border='1'> 
      <tr> 
       <td> <input style='width:50px;' type='button' value='<' name='previous' onclick="lastmonth(<?php echo $month.",".$year ?>)"> </td> 
       <td colspan='5' align='center'> <?php echo $monthname.",".$year ?> </td> 
       <td><input style='width:50px;' type='button' value='>' name='next' onclick="nextmonth(<?php echo $month.",".$year ?>)"></td> 
      </tr> 
      <tr> 
       <td width='50px' align='center'>Sun</td> 
       <td width='50px'align='center'>Mon</td> 
       <td width='50px'align='center'>Tue</td> 
       <td width='50px'align='center'>Wed</td> 
       <td width='50px'align='center'>Thu</td> 
       <td width='50px'align='center'>Fri</td> 
       <td width='50px'align='center'>Sat</td> 
      </tr> 
      <?php 
      echo "<tr>"; 
      for ($i=1;$i<$numofdays+1;$i++,$counter++) { 
       $TimeStamp = strtotime("$year-$month-$i"); 
       if ($i == 1) { 
        $firstday = date("w", $TimeStamp); //which day 1 falls on 
        for ($j = 0; $j < $firstday; $j++, $counter++) { 
         echo "<td>&nbsp;</td>"; 
        } 
       } 
       if($counter % 7 == 0) { 
        echo "</tr><tr>"; 
       } 
       $monthstring=$month; 
       $monthlength=strlen($monthstring); 
       $daystring=$i; 
       $daylength=strlen($daystring); 
       if ($monthlength<=1) { 
        $monthstring = "0".$monthstring; 
       } 
       if ($daylength<=1) { 
        $daystring="0".$daystring; 
       } 
       echo "<td align='center'> <a href='".$_SERVER['PHP_SELF']."?month=".$monthstring."&day=".$daystring."&year=".$year."&v=true'>".$i."</a> </td>"; 
      } 
      echo "</tr>"; 
      ?> 
     </table> 
     <?php if (isset($_GET['v'])) { 
      echo "<a href='".$_SERVER['PHP_SELF']."?month=".$monthstring."&day=".$daystring."&year=".$year."&v=true&f=true'>Add Event </a>"; 
      if (isset($_GET['f'])) { 
       include("event.php"); 
      } 
     } 
     ?> 
    </body> 
</html> 

Надейтесь, что это сработает для вас! Дополнительная информация на http://www.w3schools.com/php/func_mysqli_select_db.asp

+0

Спасибо Робин ..... Я передал соединение varaible, но все же я не могу вставить данные. –

+0

Можете ли вы попробовать еще раз? Я изменил запрос вставки MySQL. –