PHP kullanarak bir veritabanında birden çok dizi eklemek nasıl

4 Cevap php

Yardıma ihtiyacım var. Ne bizim php kodları ile sorun gibi görünüyor? Biz veritabanına bizim veri eklemek için görünmüyor olabilir. Ben sadece bir acemi olduğumu ve ben bizim veritabanında birden diziler birden fazla veri saklamak için görevli değilim. Ve 5 biçimleri bu sayfa içinde göstermelidir: Ne biz aslında yapıyoruz bir dizi (5 ex) girmektir. Her form adı adresi ve tel telefon numarası oluşacak. Bundan sonra bizim veritabanına gönderebilirsiniz. Biz zaten göstermek için sıcak birçok formları kontrollü ama biz eklenen veri depolamak mümkün değildi. Herkes bize yardım eder misiniz? Teşekkür ederim.

form.php

<form method="POST" action="form.php">
<input type="text" name="waw" />
<input type="submit" />

<?php 
$i=0;

while ($i<$_POST['waw'])
{
?>
</form>

<form method="POST" action="input.php">
<!-- Person #1 -->

<input type="text" name="username[]" />

<input type="text" name="phonenum[]" />

<input type="text" name="add[]" />


<?php 
$i++;
}
?>
<input type="submit" />
</form>

input.php

<?php

$username="maizakath";
$password="12345";
$database="tryinsert";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die("<b>Unable to specified database</b>");



$sql_start = 'INSERT INTO `mytable` VALUES '; 
$sql_array = array(); 
$queue_num = $_POST['waw']; 
foreach ($_POST['username'] as $row=>$name)
{
$username = $name;
$phonenum = $_POST['phonenum'][$row];
$add = $_POST['add'][$row];
$sql_array[] = '(' . $username . ', ' . $phonenum . ', ' . $add . ')'; 
if (count($sql_array) >= $queue_num)
{ 
mysql_query($sql_start . implode(', ', $sql_array)); 
$sql_array = array(); 
}
}
if (count($sql_array) > 0) 
{
mysql_query($sql_start . implode(', ', $sql_array))or die(mysql_error());
} 


?>

4 Cevap

Ben o iş yapmak için kodunuzu modifiye ettik:

form.php

<form method="POST" action="form.php">
<input type="text" name="waw" />
<input type="submit" />
</form>

<form method="POST" action="input.php">
<?php 
$i=0;

while ($i<$_GET['waw'])
{
?>

<!-- Person #1 -->

<input type="text" name="username[]" />

<input type="text" name="phonenum[]" />

<input type="text" name="add[]" /><br />


<?php 
$i++;
}
?>
<input type="submit" />
</form>

input.php

<?php


$username="maizakath";
$password="12345";
$database="tryinsert";
mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die("<b>Unable to specified database</b>");



$sql_start = 'INSERT INTO `mytable` VALUES '; 
$sql_array = array(); 
$queue_num = $_POST['waw']; 
foreach ($_POST['username'] as $row=>$name)
{
$username = $name;
$phonenum = $_POST['phonenum'][$row];
$add = $_POST['add'][$row];
$sql_array[] = '("' . $username . '", "'.$phonenum.'", "'.$add.'")'; 
if (count($sql_array) >= $queue_num) {
  $query_single=$sql_start . implode(', ', $sql_array);
  mysql_query($query_single); 
  $sql_array = array(); 
}
}

if (count($sql_array) > 0)  {
  $query = $sql_start . implode(', ', $sql_array);
  mysql_query($query)or die(mysql_error());
}

?>

Bu çalışıyor. Ben sadece benim yerel makinede test ettik.

EDIT(Comments):

  1. Bu değişken ('wow' giriş input.php değil, form.php dosya teslim başka bir forma yerleştirilir) sadece form.php komut kullanılabilir çünkü input.php değişken $ queue_num Kullanımı, anlamsız olduğunu. Yani if (count($sql_array) >= $queue_num) blok yanlış çalışır;

  2. Veritabanı bağlantısı için yapılandırma ayarlarını kontrol edin (ben yorum yazdı ettik, isimle birlikte sürekli tanımlamak zorunda 'localhost' veya tırnak ile kelime localhost'u ekleyiniz);

  3. Yanlış bir yapıya sahipti çünkü, formunuzu modifiye ettik;

  4. Ben form.php ilk formu yaratma hedefini anlamadı.

Bu durumda sizin için daha uygun hale getirmek için bu kodu değiştirebilirsiniz. Ama tüm bu FIRSAT birini kullanmayı deneyin.

Note. Kullan var_dump() fonksiyonu mevcut olduğunu değişkenler, anlamak için hata ayıklama sırasında $ _POST dizi görmek için.

Ben tek bir sayfada birden fazla form olması mantıklı emin değilim.

Edit: Kaldırılan kodu, Alex'in cevabı bana doğru gibi görünüyor.

Ben onun iş para cezası çalışmıştı ama veritabanına eklerken kullanıcı in tüm alanı doldurdu eğer o da null değer ekleyecektir.

Ben aynı anda tek bir tabloda iki dizileri depolamış. Bu size yardımcı olacağını umuyoruz.

<?php
    $i = 0;
    foreach($element_name as $element_names){
        $element_value = $_POST['element_value'];
        $element_names_insert = mysql_query("insert into wp_remote_fields
        set
            remote_fields = '".$element_names."',
            remote_values = '".$element_value[$i]."'
            ");     
        $i++;           
    }
?>