Проблема обновления базы данных SQL с помощью PHP

0

У меня возникла острая проблема с моей командой UPDATE в PHP.

Дело в том, что всякий раз, когда я обновляю свои данные в PHP, он не поступает в базу данных mySQL, и поэтому никаких изменений не было, даже если оно все еще возвращается к "edit_event.php" (это страница, где мой список добавленных событий)

Кроме того, еще одна проблема заключается в том, как мне передавать данные, чтобы всякий раз, когда я нажимаю "редактировать" в "edit_event.php", моя информация может быть видна в соответствующих текстовых полях в "update_form.php"?

Большое вам спасибо! Очень ценю это!

Это update_form.php:

//Update_form.php

    <title>Update Form</title>
</head>

<body>
<?
$host = 'localhost';
$dbusername='root';
$dbpassword='';
$database='mp19';


// Connect to server and select database.
mysql_connect('localhost', 'root', '')or die("cannot connect"); 
mysql_select_db("mp19")or die("cannot select DB");

// get value of id that sent from address bar
$ID=$_GET['ID'];


// Retrieve data from database 
$query="SELECT * FROM events WHERE ID='$ID'";
$result=mysql_query($query);

$rows=mysql_fetch_array($result);

?>

<script type="text/javascript">

function show_alert () 
{

if (document.getElementById('e.title').value.length=="0")
{
alert ("ERROR! You cannot leave the event title blank!")
return false;
}

else if (document.getElementById('content').value.length=="0") 
{
alert ("ERROR! You cannot leave the description blank!")
return false;
}

else if (document.getElementById('venue').value.length=="0")
{
alert ("ERROR! You cannot leave the venue blank!")
return false;
}

else if (document.getElementById('month').value=="0") 
{
alert ("ERROR! You cannot leave the month blank!")
return false;
}

else if (document.getElementById('date').value=="0") 
{
alert ("ERROR! You cannot leave the day blank!")
return false;
}

else if (document.getElementById('year').value=="0") 
{
alert ("ERROR! You cannot leave the year blank!")
return false;
}

else 
{

    return true;
}
}
</script>

<form id="update" onSubmit="return show_alert();" name="update" method="post" action="update_entry_now.php">
  <h2><strong>Update Form</strong></h2>


  <table width="390" border="1">
    <tr>
      <td  width="82"><strong>Event Title:</strong></td>
      <td  width="292"><label for="e.title"></label>
      <input name="e.title" type="text" id="e.title" value= <? echo $rows['e.title']; ?>></td>
    </tr>
    <tr>
      <td ><strong>Description:</strong></td>
      <td ><label for="description"></label>
      <textarea name="description" id="content" cols="45" rows="5" value= <? echo $rows['content']; ?>></textarea></td>
    </tr>
    <tr>
      <td ><strong>Venue:</strong></td>
      <td ><input type="text" name="venue" id="venue" value= <? echo $rows['venue']; ?>></td>
    </tr>
    <tr>
      <td ><strong>Date:</strong></td>
      <td ><select name="date" size="1" id="event_date" value= <? echo $rows['event_date']; ?>> 
        <option value="0">Day</option>
      <option>1</option>
      <option>2</option>
      <option>3</option>
      <option>4</option>
      <option>5</option>
      <option>6</option>
      <option>7</option>
      <option>8</option>
      <option>9</option>
      <option>10</option>
      <option>11</option>
      <option>12</option>
      <option>13</option>
      <option>14</option>
      <option>15</option>
      <option>16</option>
      <option>17</option>
      <option>18</option>
      <option>19</option>
      <option>20</option>
      <option>21</option>
      <option>22</option>
      <option>23</option>
      <option>24</option>
      <option>25</option>
      <option>26</option>
      <option>27</option>
      <option>28</option>
      <option>29</option>
      <option>30</option>
      <option>31</option>
    </select>
        <select name="month" size="1" id="month">
          <option value="0">Month</option>
          <option>1</option>
          <option>2</option>
          <option>3</option>
          <option>4</option>
          <option>5</option>
          <option>6</option>
          <option>7</option>
          <option>8</option>
          <option>9</option>
          <option>10</option>
          <option>11</option>
          <option>12</option>
        </select>
    <select name="year" size="1" id="year">
      <option value="0">Year</option>
      <option>2011</option>
      <option>2012</option>
    </select>
      </td>
    </tr>
    <tr>
      <td >&nbsp;</td>

      <td >
     <input type="hidden" name="ID" method="post" value="<? echo $row['ID']; ?>" />
      <input type="submit" name="submit" id="submit" value="Submit">
      <input type="reset" name="Reset" id="button" value="Reset" /></td>
    </tr>
  </table>
</form>

</body>
</html>

Это update_entry_now.php:

//update_entry_now.php

<?
 session_start();
$host = 'localhost';
$dbusername='root';
$dbpassword='';
$database='mp19';

$link = mysql_connect('localhost', 'root', '');
if (!$link)
  {
  die('Could not connect: ' . mysql_error());
  }

$_SESSION['username'] = $admin;
$_SESSION['password'] = $password; 

$ID = $_POST['ID'];
    $content = $_POST['content'];
    $event_date = $_POST['event_date'];
    $venue = $_POST['venue'];

$db_selected =mysql_select_db('mp19', $link);
$query = "UPDATE events SET content = '$content', event_date = '$event_date', venue = '$venue' WHERE ID = '$ID' LIMIT 1";

$result = mysql_query($query,$link);

if (!mysql_query($query,$link))
  {
  die('Error: ' . mysql_error());
  }
header ('Location:edit_events.php');

mysql_close();
?>

Это edit_events.php:

//edit_events.php

<?
 session_start();
$host = 'localhost';
$dbusername='root';
$dbpassword='';
$database='mp19';

$link = mysql_connect('localhost', 'root', '');
if (!$link)
  {
  die('Could not connect: ' . mysql_error());
  }

$_SESSION['username'] = $admin;
$_SESSION['password'] = $password; 

    $day = $_POST['day'];
    $month=$_POST['month'];
    $year = $_POST['year'];

$event_date = $day.'-'.$month.'-'.$year;

$db_selected =mysql_select_db('mp19', $link);
$query = "SELECT * FROM events ORDER BY '$event_date' DESC";    
$result = mysql_query($query,$link);

?>

 <table width="1500" border="1">
      <tr>
        <td><div align="center">Event ID</td>
        <td><div align="center">Admin No.</td>
        <td><div align="center">Name</td>
        <td><div align="center">Event Title</td>
        <td><div align="center">Content</td>
        <td><div align="center">Venue</td>
        <td><div align="center">Event Date</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
      <?


$i = 1;
while($row = mysql_fetch_assoc($result))
{

?>


        <td width="59"><div align="center"> <?= $i; ?></td>
        <td width="153"><div align="center"><?= $row['ID']; ?></td>
        <td width="200"><div align="center"><?= $row['name']; ?></td>
        <td width="191"><div align="left"><?= $row['e.title']; ?></td>
        <td width="220"><div align="left"><?= $row['content']; ?></td>
        <td width="143"><div align="left"><?= $row['venue']; ?></td>
        <td width="132"><div align="left"><?= $row['event_date'];?></td>
<td width="70"><div align="center"><a href="update_form.php?e.id=<?php echo $i; ?>">Edit</a></td>
<td width="70"><div align="center"><a href="delete_entry_now.php?ID=<?php echo $row['ID']; ?>">Delete</a></td>
      </tr>
<? 
$i++;
}

mysql_close(); ?>
  </table>
  • 0
    Это ужасное кодирование, тем не менее, добавить or die(mysql_error()) сразу после всех ваших mysql_query() .
Теги:
database
textfield

2 ответа

0

Для вашей первой проблемы, почему данные не отображаются в отношении полей в update_form.php. когда вы хотите отображать данные в текстовом поле, тогда покажите как это

< input name= "e.title" type = "text" id = "e.title" value "= <? php echo $rows ['e.title'];?" →

Вам не хватает двух вещей: вы не ставите двойные кавычки ("") после значения, а также не запускаете php-тег в разделе значений правильно. если вы хотите показать данные в textarea, тогда вы должны показать данные после закрытия тега textarea и до </textare> как это

< textarea name= "description" id = "content" cols = "45" rows = "5" > <? php echo $rows ['content'];? >

и для выбора вы должны сгенерировать свои параметры через цикл, а не писать каждый параметр. Подобно этому

< select name= "date" > <? PHP для ($ = 1; $я < 32; $я ++) { если ($ строки [ 'дата'] == $я) $ Выбрано = 'выбрано'; еще $ Выбрано = ''; echo ('< option value = "'. $i. '" '. $selected. ' > '. $i. '</option> '); } ? > </выберите >

0

Поля формы не называются такими же, как клавиши, которые вы читаете, от $_POST. Вероятно, поэтому значения не попадают в вашу базу данных.

Вы также должны пройти и очистить свой код. У вас много неиспользуемых переменных, непоследовательное форматирование, вы дважды запускаете запрос обновления каждый раз при отправке формы и т.д.

Ваш код подвержен атакам SQL-инъекций, так как вы не вызываете mysql_real_escape_string на любом из входных данных перед тем, как поместить его в запрос. Помимо того, что он опасен, он просто сломает ваш сайт, как только кто-то помещает одну метку кавычки в один из входов формы.

Ваши запросы также содержат многочисленные логические ошибки, которые не приведут к их провалу, но заставят их делать неожиданные вещи. Вы добавили одинарные кавычки вокруг числовых значений, которые не следует указывать, а в последнем фрагменте кода вы заказываете результаты по буквальной строке вместо имени столбца. Я не уверен, что вы планируете сортировать результаты по дате или фильтровать результаты по дате, но в любом случае это не делает ничего, кроме случайного упорядочения ваших результатов.

  • 0
    Привет спасибо за ответ !!
  • 0
    Можно ли выделить источники ошибок? Очень жаль, потому что я не очень хорош в этом = (
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню