【问题标题】:Neither $_POST nor $_GET are working$_POST 和 $_GET 都不起作用
【发布时间】:2014-02-18 16:45:35
【问题描述】:

我制作了一个产品列表(22 项),并在其中一列中添加了一个文本框,以便用户可以添加他想要的数量。一旦按下提交,我想在一个空表中写入 ProductID 、价格和数量。问题是 $_POST 和 $_GET 都没有得到这些数据。

当我使用 $_GET 时,我在 URL 中注意到数据已被获取,但是当我尝试将其写入数据库或回显它时,什么都没有出现,我收到错误:注意:未定义索引: 数量

这是产品页面:

<?php
require ("connect.php");
session_start();
$userid = $_SESSION['codcliente'];
$username = $_SESSION['username'];

echo"<html>
<body>
<h1>Catalogo Prodotti</h1>
Sei loggato con l'account <b>".strtoupper($username)."</b>.<a href=\"Logout.php\">Clicca qui</a> per fare il LOGOUT!<br/><br/>
<form action=ordine.php method='POST'>
<input type='submit' name ='submit' value='Inserisci'>
</form>";

echo "<table border=1 align=center>
<tr>
<td align=center><b>CodProdotto</b></td>
<td align=center><b>Nome</b></td>
<td align=center><b>Prezzo Unitario</b></td>
<td align=center><b>Quantità</b></td>
</tr>";

$query = "SELECT CodProdotto,Nome,Prezzo FROM Prodotto";
$result = mysql_query($query) or die(mysql_error());


    do{
    $row= mysql_fetch_array($result) or die(mysql_error());
        $codprodotto = $row['CodProdotto'];
        $nome = $row['Nome'];
        $prezzo = $row['Prezzo'];
        echo "<tr>
        <td align=center>$codprodotto</td>
        <td align=center>$nome</td>
        <td align=center>$prezzo &#x20ac</td>
        <td><p ><input type='text' name='Quantità' style=width:80px ></p></td>
        </tr>";
    }while($row != NULL);   

echo "</table>";


mysql_close();
?>
</body>
</html>

这是形式:

<?php
require ("connect.php");
session_start();
$userid = $_SESSION['codcliente'];
$username = $_SESSION['username'];

echo"<html>
<body>
<h1>Ordine</h1>
Sei loggato con l'account <b>".strtoupper($username)."</b>.<a href=\"Logout.php\">Clicca qui</a> per fare il LOGOUT!<br/><br/>";

$query= "SELECT CodProdotto,Prezzo FROM prodotto";
$result = mysql_query($query) or die(mysql_error());

echo "<form action='Consegna.php'>
<p><input type='submit' Value='Inserisci dati consegna'></p>
</form>";  
//$n = 0;
if($_SERVER['REQUEST_METHOD'] == 'POST'){
do {
$row = mysql_fetch_array($result) or die(mysql_error());
if ($row != NULL) {
$codprodotto = $row["CodProdotto"];
$prezzo = $row["Prezzo"];
$quantita = $_POST["Quantità"];
$query="INSERT INTO ordineprodotto(CodProdotto,Prezzo,Quantita) VALUES('$codprodotto','$prezzo','$quantita')";
$risultato= mysql_query($query) or die(mysql_error());
echo mysql_error();
}
}while ($row!=NULL);
}



echo "</body>";
echo "</html>";
?>

自 3 天以来,我一直被这个问题困扰,我不知道如何解决它。非常感谢任何帮助!

【问题讨论】:

  • 您的表单仅以提交按钮结束。因此其中没有 HTML 元素,因此没有任何效果!
  • &lt;input&gt; 元素必须介于 &lt;form&gt;&lt;/form&gt; 之间。
  • 只是好奇,你为什么要回显所有的 HTML,你应该把它留在 PHP 标记之外。你的代码一团糟
  • @Barmar 这就是问题所在!!现在它正在获取数据,即使它正在写入相同数量的所有行(我在最后一个文本框中插入的值)
  • @AkhilSidharth 呵呵,是的,我知道这只是我是新手,还在学习。任何修复它的建议都非常受欢迎! :)

标签: php mysql post get


【解决方案1】:

实际上,您的代码没有多大意义,所以我冒昧地对其进行了修改。我认为您正在尝试的是列出所有值以及 Quantita 的输入框。当您按下提交按钮 Inserisci 时,它应该将数据输入 ordineprodotto。我想一个是表格,另一个是插入页面。如果我是对的,请尝试下面的代码

<?php
require ("connect.php");
session_start();
//$userid = $_SESSION['codcliente']; //Didnt find any use of this variable
$username = $_SESSION['username'];
$query = "SELECT CodProdotto,Nome,Prezzo FROM Prodotto";
$result = mysql_query($query) or die(mysql_error());

if($_REQUEST['submit']=="Inserisci"){
    $CodProdotto_array=$_REQUEST['CodProdotto'];
    $Nome_array=$_REQUEST['Nome'];
    $Prezzo_array=$_REQUEST['Prezzo'];
    $Quantita_array=$_REQUEST['Quantita'];

    for($i=0;$i<count($CodProdotto_array);$i++){
        $CodProdotto=mysql_real_escape_string($CodProdotto_array[$i]);
        $Nome=mysql_real_escape_string($Nome_array[$i]);
        $Prezzo=mysql_real_escape_string($Prezzo_array[$i]);
        $Quantita=mysql_real_escape_string($Quantita_array[$i]);
        $query2="INSERT INTO ordineprodotto(CodProdotto,Prezzo,Quantita) VALUES('".$CodProdotto."','".$Prezzo."','".$Quantita."')";
        $result2 = mysql_query($query2);
    }
}
?>
<html>
    <body>
        <h1>Catalogo Prodotti</h1>
        Sei loggato con l'account <b><?php echo strtoupper($username);?></b>
        <a href="Logout.php">Clicca qui</a>per fare il LOGOUT!<br/><br/>
        <form action="" method="POST">
        <input type="submit" name="submit" value="Inserisci">
        <table border=1 align=center>
            <tr>
                <td align=center><b>CodProdotto</b></td>
                <td align=center><b>Nome</b></td>
                <td align=center><b>Prezzo Unitario</b></td>
                <td align=center><b>Quantità</b></td>
            </tr>
        <?php  if(mysql_num_rows($result)>0){
                    while($row= mysql_fetch_array($result)){?>
            <tr>
                <input type="hidden" name="CodProdotto[]" value="<?php echo $row['CodProdotto'];?>">
                <input type="hidden" name="Nome[]" value="<?php echo $row['Nome'];?>">
                <input type="hidden" name="Prezzo[]" value="<?php echo $row['Prezzo'];?>">
                <td align=center><?php echo $row['CodProdotto'];?></td>
                <td align=center><?php echo $row['Nome']; ?></td>
                <td align=center><?php echo $row['Prezzo']; ?> &#x20ac </td>
                <td><p ><input type="text" name="Quantita[]" style="width:80px"></p></td>
        </tr>
            <?php }
                } else {?>
            <tr>
                <td colspan="4">No Values to Display</td>
            </tr>
            <?php } ?>
</table>
</form>
</body>
</html>

【讨论】:

  • 哇!它完美无缺!非常感谢您的帮助,您为我节省了几天的工作时间!我不得不删除 mysql_real_escape_string 因为它给了我错误,告诉我插入的值是错误的
  • 抱歉,mysql_real_escape_string 是我的错误。我把它放在错误的地方。我已经更正了代码。尝试一下。我还没有完成 javascript 验证,我建议你也这样做。如果您对我的回答完全满意,请批准。
【解决方案2】:

form 在输入字段之前关闭。

<input type='submit' name ='submit' value='Inserisci'> </form> 放在&lt;/table&gt; 之后。

【讨论】:

  • 谢谢!!这就是问题所在:D 现在它正在获取数据,即使它以相同的数量写入所有行(我在最后一个文本框中插入的值)
  • 因为您必须为每个 input 字段提供唯一的 name。例如,在每个 name='Quantità' 之后添加一个变量,您不断增加:name='Quantita_1' name='Quantita_2' 等。
  • 他们建议我将数组与 foreach "($_POST['Quantita'] AS $quantita) { ... }" 一起使用,但我收到此错误“警告:为 foreach() 提供的参数无效"
  • 可能是因为重音 (à)?从任何地方删除它。
  • 不,因为我改变了:S 我应该把 foreach 放在哪里?我在 "if ($row != NULL) { " 之后添加了 foreach 并删除了 "$quantita = $_POST["Quantità"];"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 2016-11-26
  • 2012-10-11
相关资源
最近更新 更多