0

我创建了一个数据库,其中包含一个名为pages的表。

在该表中,有名为pages_idpagenamepagedescpagekeypagecont的字段。

如何将数据库中这些字段的数据提取到可编辑的文本字段中?我在下面尝试过,但我的代码不起作用:(

<?php
// Make a MySQL Connection
mysql_connect("####", "####", "####") or die(mysql_error());
mysql_select_db("####") or die(mysql_error());

// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM pages") 
or die(mysql_error());  

?>
<p>Page title</p><br />
<?php echo"<input name=\"pagename\" type=\"text\" id=\"pagename\" value=\"" .$pagename. "\">"; ?>

<p>Keywords</p><br />
  <?php echo"<input name=\"pagekey\" type=\"text\" id=\"pagekey\" value=\"" .$pagekey. "\">"; ?>

<p>Description</p><br />
<?php echo"<input name=\"pagedesc\" type=\"text\" id=\"pagedesc\" value=\"" .$pagedesc. "\">"; ?>

<p>Content</p><br />
<?php echo "<textarea name=\"pagecont\" cols=\"120\" rows=\"20\" id=\"pagecont\" >".$pagecont."</textarea>";?>
4

7 回答 7

1

您尚未从查询结果中提取一行,并且正在输出未定义的变量。正确的顺序应该是:

$result = mysql_query($sql) or die(mysql_error()); // run the query
$row = mysql_fetch_assoc($row); // fetch a result row

echo $row['name_of_field']; // output one of the result row's data fields.

另请注意,当您按原样将数据输出到 HTML 表单中时,您必须确保您输出的数据中的任何内容都不会“破坏”表单。例如,如果输出文本包含 a ",并且您在表单字段的属性周围使用了这些引号,那么您将“破坏”html。输出到 html 的最佳做法是使用:

<input type="text" name="somefield" value="<?php echo htmlspecialchars($row['name_of_field']) ?>" />
于 2012-05-15T15:43:10.330 回答
0

希望您知道如何连接到 MySQL。我包括一个虚拟连接仅供参考。

<?php   
    //Open connection

    $qry="SELECT * FROM <table>";
    $result=mysql_query($qry);


    while($row = mysql_fetch_array($result))
    {
       $variable = $row["column_name"];
    }
?>

的HTML:

<input type="text" id="test" value="<?=$variable?>">

如果您试图获得特定结果,请考虑WHERE在 SQL 语句中使用子句。有关更多信息,请参见此处:W3Schools

于 2012-05-15T15:39:32.937 回答
0
<?php
// Make a MySQL Connection
mysql_connect("####", "####", "####") or die(mysql_error());
mysql_select_db("####") or die(mysql_error());

// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM pages") or die(mysql_error());

$result = mysql_fetch_array($result, MYSQL_ASSOC);

foreach($result as $page): ?>

    <p>Page title</p><br />
    <input name="pagename" type="text" id="pagename" value="<?= $page['pagename']; ?>">

    <p>Keywords</p><br />
    <input name="pagekey" type="text" id="pagekey" value="<?= $page['pagekey']; ?>">

    <p>Description</p><br />
    <input name="pagedesc" type="text" id="pagedesc" value="<?= $page['pagedesc']; ?>">

    <p>Content</p><br />
    <textarea name="pagecont" cols="120" rows="20" id="pagecont" ><?= $page['pagecont']; ?></textarea>
    <hr />

<?php endforeach; ?>
于 2012-05-15T15:39:45.760 回答
0

您正在运行查询,但没有从中获取结果。试试这个:

$fields = mysql_fetch_assoc($result);

然后你可以参考查询的结果$fields['pagename']等等。

文档在这里。一般来说,您可能想查看 mysql 模块的文档。

于 2012-05-15T15:40:38.237 回答
0

使用您拥有的表单,您可以一次编辑一 (1) 行。因此,您需要 2 页。第 1 页列出表中的所有页面,其中包含指向编辑页面的超链接,将 pagekey 作为 GET 参数传递,第 2 页是您的编辑页面,它接收页面 ID 作为 GET 参数。

第 2 页 URL 可以是:

http://domain.com/editpage.php?pagekey=abc

它的代码如下:

<?php
// Make a MySQL Connection
mysql_connect("####", "####", "####") or die(mysql_error());
mysql_select_db("####") or die(mysql_error());

$key = $_GET['pagekey'];

// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM pages where pagekey = $key")
    or die(mysql_error());  

$row = mysql_fetch_assoc($result);

?>
<p>Page title</p><br />
<?php echo"<input name=\"pagename\" type=\"text\" id=\"pagename\" value=\"" .$row['pagename']. "\">"; ?>

<p>Keywords</p><br />
  <?php echo"<input name=\"pagekey\" type=\"text\" id=\"pagekey\" value=\"" .$row['pagekey']. "\">"; ?>

<p>Description</p><br />
<?php echo"<input name=\"pagedesc\" type=\"text\" id=\"pagedesc\" value=\"" .$row['pagedesc']. "\">"; ?>

<p>Content</p><br />
<?php echo "<textarea name=\"pagecont\" cols=\"120\" rows=\"20\" id=\"pagecont\" >".$row['pagecont']."</textarea>";?>

上面的代码是非常基本的,但可以满足您目前在可编辑输入框中显示行内容的要求。

于 2012-05-15T15:49:08.313 回答
0

我创建了这个函数,它将用于从列中检索所有数据:

 function page_data($fieldname){

              $result = mysql_query("SELECT ".$fieldname." FROM pages");

              while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
                  $arrdata[] =  $row[$fieldname];
              }

              return $arrdata;   
          }

从列为“pagename”的 pages 表中检索所有数据

    $pagename=array();
    $pagename=page_data('pagename');
    $numpages=count($pagename)-1;

对于 pagename 中的每个值,将值回显到文本框中

    for($i=0; $i <= $numpages; $i++){
    echo '<input name="pagename" type="text" value=".$pagename[$i]."/>';
    }
于 2012-05-15T15:51:33.160 回答
0
<?php
  // Make a MySQL Connection
  mysql_connect("####", "####", "####") or die(mysql_error());
  mysql_select_db("####") or die(mysql_error());

  // Get all the data from the "example" table
  $result = mysql_query("SELECT * FROM pages") or die(mysql_error());
  while($row = mysql_fetch_array($result))
  {
?>

  <p>Page title</p><br />
  <input name="pagename" type="text" id="pagename" value="<?php echo $row['pagename']; ?>">
  <p>Keywords</p><br />
  <input name="pagekey" type="text" id="pagekey" value="<?php echo $row['pagekey']; ?>">
  <p>Description</p><br />
  <input name="pagedesc" type="text" id="pagedesc" value="<?php echo $row['pagedesc']; ?>">
  <p>Content</p><br />
  <textarea name="pagecont" cols="120" rows="20" id="pagecont"><?php echo $row['pagecont']; ?></textarea>

<?php
  }
?>
于 2012-05-25T05:53:15.153 回答