0

一度に 1 つずつ項目を検索する API スクリプトから、データベース内の価格を更新する方法を作成しようとしています。

API スクリプトは商品番号で検索し、同じページで価格を更新します。

別のページには、cronjob と、すべての変数項目番号が関数に出力される foreach ループがあります。

次に、foreach ループ関数が項目番号を 1 つずつ取得し、それらを API.php ページに送信します。API.php ページは項目番号で検索し、データベースに更新します。

現在、これをエコーとhtmlの「投稿」で目的のページにしようとしています。ページがロードされるとアイテムを API ページに自動的に送信する JavaScript とともに。おそらく、私はこれについてすべて間違っているでしょう!

何が起こっているのかというと、foreach ループはすべての数値を読み取って正しく出力しますが、そこにある JavaScript コードが送信されます。そして、API に送信され、もちろんデータベースに挿入された最初の項目番号エントリのみを取得します。

これにより、ページが .php foreach ループ ページから離れて移動するため、foreach ループを続行できず、最初のエントリしか表示されません。

長文すみません!はっきりさせようとしているだけです...

私のコードは次のようになります。

$sql = "SELECT id, item_number FROM products ORDER BY id DESC";
$query = mysql_query($sql) or die (mysql_error());
while ($result = mysql_fetch_array($query)) {

$itemnumber = array($result['item_number']);

//すべての item_numbers がデータベースから引き出されているため、配列の上に設定されています。つまり、エコーでわかるように、これは単なる 1 つの項目番号ではありません...

foreach ($itemnumber as $item_number) {

echo "<form method=\"post\" action=\"api.php\" name=\"ChangeSubmit\" id=\"ChangeSubmit\" >";
echo "<input type=\"text\" name=\"item_number\" value=\"{$item_number}\"/>";

echo "<script type=\"text/javascript\">
function myfunc () {
var frm = document.getElementById(\"ChangeSubmit\");
frm.submit();
}
window.onload = myfunc;
</script></form>";

/*This outputs on the page all the item numbers of every product, with input text boxes next to them, then after a split second the javascrip echo submits -- only the very first item number to the api. */
}
}

?>

これがメインページで、「api.php」に送信されます。「api.php」は (Search:$_POST['item_number'] ---then insert/update database) のような方法でアイテム番号を検索します。

それくらいだと思います!すべてが理にかなっていることを願っています!ありがとう!

4

2 に答える 2

0

現在、コードはデータベースからすべての項目番号をエコーし​​ます。それらの 1 つをクリックすると、'api.php' に接続され、新しいエントリがデータベースに挿入されますが、項目番号を表示するページには戻りません。これをエコーする必要があるのか​​ 、それともajaxが適切な場所にあるのかわかりません。

アイテム番号が使用され、データベースに接続してデータベースを更新する「api.php」に送信されます。

これが私がajaxを取り入れようとしてきた方法です。皆さんの考えを教えてください。ありがとう

<?php

mysql_connect("", "", "") or die(mysql_error());

mysql_select_db("") or die (mysql_error());


$sql = "SELECT id, item_number FROM products WHERE retailer LIKE ('%api%') ORDER BY id DESC";
$query = mysql_query($sql) or die (mysql_error());
while ($result = mysql_fetch_array($query)) {


$itemnumber = array($result['item_number']);

foreach ($itemnumber as $item_number) {

echo "<form method=\"post\" action=\"api.php\" name=\"ChangeSubmit\" id=\"ChangeSubmit\" >";
echo "<input type=\"submit\" name=\"item_number\" value=\"{$item_number}\" />";


echo "<script type=\"text/javascript\">
$('#ChangeSubmit').click(function() {
  $.ajax({
    url: \"api.php\",
    dataType: \"json\",
    type: \"POST\",
    data: {
      itemNumber: <?php print $item_number; ?>,
    },
    success: function (m) {
        console.log(m);
    },
    error: function (e) {
      console.log(\"Something went wrong ...: \"+e.message);
    },
  }); /* end ajax*/
  e.preventDefault();
});
</script>" ;



}


}

?>
于 2012-05-06T23:22:11.383 に答える