2017-09-26 167 views
2

我有一個包含1200條記錄的數組,但是當我提交表單時,代碼會計算數組中的250條記錄。爲什麼?Php數組發佈錯誤

這是代碼:

<?php 
if (isset($_POST['ok'])) { 
    echo count($_POST['precios']); 
    // showme only 250 récords 
} 
?> 
<form method='POST' action='productos.php'> 
    <button class="btn green" type="submit" name="ok"> Actualizar de forma masiva</button> 
    <?php 
    $query4334x = "select * from Productos"; 

    $result_categorias4334x = mysql_db_query($dbname, $query4334x) 
     or die("Failed Query of " . $query4334x); //guardo en una variable los registros obtenidos con el query 

    $numero5 = mysql_num_rows($result_categorias4334x); 
    echo $numero5; 
    // showme 1200 récords 

    while ($row = mysql_fetch_array($result_categorias4334x)) { 
     $precio = $row['Precio']; 
     ?> 
     <input type="text" name="precios[]" value="<?php echo $precio; ?>"> 
     <?php 
    } 
    ?> 
</form> 
+1

你爲什麼使用長棄用mysql_代碼庫的設置呢?它在很多年前已經停止使用,並且完全在PHP7中刪除。使用這個庫不應該編寫新的代碼。它使您容易受到SQL注入攻擊(由於缺少參數化查詢支持)以及潛在的其他未修復漏洞。儘快切換到使用mysqli或PDO,然後學習如何編寫參數化查詢以保護您的數據免受惡意輸入。請參閱http://bobby-tables.com以獲取有關風險的簡單說明以及一些示例PHP代碼以安全地編寫查詢。 – ADyson

+0

感謝您的信息。我會在bobby-tables.com –

回答

1

如果你不能在你的php.ini更改設置max_input_varspost_max_size

嘗試像下面這對我的作品

implode()陣列成一個長字符串,它explode()在服務器端。

json_encode()也許可以工作。

實施例:

while ($row = mysql_fetch_array($result_categorias4334x)) { 
     $precio[] = $row['Precio']; 
    } 
<input type="text" name="precios" value="<?php echo implode(",",$precio); ?>"> 

// POST

<?php 
if (isset($_POST['ok'])) { 
    $precios = $_POST['precios']; 
    $preciosarr = explode(",", $precios); 
    print_r($preciosarr); 
} 
?> 

注:允許在元件的最大字符數。默認值是524288

+0

謝謝!我如何在帖子前做內爆? –

+0

@BraiKaler檢查更新 –

+0

謝謝!但我需要一個輸入來刷新價格。該代碼showme只有一個輸入 –

-2

如果這是一個環的一部分,則需要索引陣列

for ($i = 0; $i < count($_POST['precios']); $i++) { ?> 
    ... 
    <input type="text" name="precios[]" value="<?php echo $precio; ?>"> 
    ... 
    <?php 
} 

也查詢,而不是回聲使用本的print_r()var_dump()

print_r(count($_POST['precios'])); 
+0

如何通過POST變量循環幫助?用戶想要顯示來自數據庫的數據,但後來發回的值太小。您還沒有定義$ precio。 – ADyson

0

請嘗試在你的php.ini更新以下設置

max_input_vars = 1500

的post_max_size = 64M

你只需根據自己的需要調整兩個變量。

+0

我的服務器不允許我改變php.ini。其他方案? –

+0

你能確認你是否能夠使用ini_set? ini_set('max_input_vars',1500); ini_set('post_max_size','64M'); –

+0

此設置在運行時不可更改,它們在執行腳本之前應用。 – Dmitri

0

如果你沒有訪問爲php.ini,你可以嘗試在.htaccess

php_value max_input_vars 1500 
php_value post_max_size 64M