Проблема обновления базы данных SQL с помощью PHP - PullRequest
0 голосов
/ 24 января 2011

У меня возникла срочная проблема с командой 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>

Ответы [ 2 ]

0 голосов
/ 24 января 2011

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

>

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

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

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

0 голосов
/ 24 января 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...