2013-07-10 4 views
0

Пробовал вставлять несколько значений ввода в базу данных, но вставляя только одну таблицу. Пожалуйста, проверьте и помогите. БлагодаряВставить несколько значений ввода в базу данных

<form action="insert.php" method="post" id="database" name="database" > 
<?php 
foreach($_POST['url_link'] as $value) 
{ 
    echo '<input type="text" name="url_db[]" size="150" value="'.$value.'"/><br />'; 
} 
?> 
<br><hr>Categories:<select name="cat" id="cat"> 
<option value="Mobile">Mobile 
<option value="T-Shirt">T-Shirt 
</select> 

Website:<input type="text" size="50" value="" name="web" id="web"/><input type="submit" value="Save to DB>>" name="datasub"/> 
</form> 

insert.php -

// Connect to server and select database. 
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB"); 

    $count = count($_POST['url_db']); 
    if (isset($_POST['url_db'])) { 
     for($i=0;$i<$count;$i++){ 

      $urllink = $_POST['url_db'][$i]; 
      $web = $_POST['web']; 
      $cat = $_POST['cat']; 

      $sql="INSERT INTO $tbl_name (web, urllink, cat) VALUES ('$web', '$urllink', '$cat')"; 
      if(!($result = mysql_query($sql))){ 
       "<BR>Error Adding!!<BR>".mysql_error(); 
        exit(); 
      } 
      header("location:index.php"); 
     } 
    } 
    ?> 

Для информации - я пытаюсь вставить ссылку несколько URL-адрес, используя поле ввода с именем категории (выпадающий список) и имя сайта. url_db [] -

<form action="insert.php" method="post" id="database" name="database"> 
<input type="text" name="url_db[]" size="150" value="http://www.google.dk/imghp?hl=da&amp;tab=wi"><br> 
<input type="text" name="url_db[]" size="150" value="http://maps.google.dk/maps?hl=da&amp;tab=wl"><br> 
<input type="text" name="url_db[]" size="150" value="https://play.google.com/?hl=da&amp;tab=w8"><br> 
<input type="text" name="url_db[]" size="150" value="http://www.youtube.com/?gl=DK&amp;tab=w1"><br> 
<input type="text" name="url_db[]" size="150" value="https://mail.google.com/mail/?tab=wm"><br><br> 

<hr>Categories:<select name="cat" id="cat"> 
<option value="Mobile">Mobile 
</option><option value="T-Shirt">T-Shirt 
</option></select> 

ответ

0

Вы перенаправлять в вашей для петли.

Это должно быть так:

if (isset($_POST['url_db'])) { 
    for($i=0;$i<$count;$i++){ 

     $urllink = $_POST['url_db'][$i]; 
     $web = $_POST['web']; 
     $cat = $_POST['cat']; 

     $sql="INSERT INTO $tbl_name (web, urllink, cat) VALUES ('$web', '$urllink', '$cat')"; 
     if(!($result = mysql_query($sql))){ 
      "<BR>Error Adding!!<BR>".mysql_error(); 
       exit(); 
     } 
    } 
    header("location:index.php"); 
} 

EDIT: Вы должны действительно избежать ваши ценности, прежде чем вставлять их в запросе.

Я предлагаю это:

if (isset($_POST['url_db'])) { 
     for($i=0;$i<$count;$i++){ 
      //escape with mysqli_real_escape_string or PDO::quote() (mysql_real_escape_string) is deprecated 
      $urllink = mysqli_real_escape_string($_POST['url_db'][$i]); 
      $web = mysqli_real_escape_string($_POST['web']); 
      $cat = mysqli_real_escape_string($_POST['cat']); 

      $sql="INSERT INTO $tbl_name (web, urllink, cat) VALUES ('$web', '$urllink', '$cat')"; 
      if(!($result = mysql_query($sql))){ 
       "<BR>Error Adding!!<BR>".mysql_error(); 
        exit(); 
      } 
     } 
     header("location:index.php"); 
    } 

Для получения дополнительной информации см:

mysqli_real_escape_string()

PDO::quote()

mysql_real_escape_string() [DEPRECATED]

+0

Такая же проблема только вставив одну таблицу - каждый раз, когда я пытался вставить URL ссылки мне нужно, чтобы изменить название «Интернет» и в противном случае его показывает пустую страницу без ошибок. Зачем? –

+0

Пожалуйста, покажите нам содержимое '$ _POST ['url_db']' в вашем вопросе. –

+0

Обновлено, пожалуйста, отметьте - post –

0

Вы перенаправляют withi n forloop. для лучшей практики Создайте такие входы

<?php 
    foreach($_POST['url_link'] as $key=>$value) 
    { 
     echo '<input type="text" name="url_db[]" size="150" value="'.$value.'"/><br />'; 
    } 
    ?> 

Тогда ваш код вставки будет таким.

// Connect to server and select database. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 


if (isset($_POST['url_db'])) { 

    print_r($_POST['url_db']) ; // Make sure you have more than one indexes in array 

foreach($_POST['url_db'] as $key=>$urllink){ 

     $web = $_POST['web']; 
     $cat = $_POST['cat']; 

     $sql="INSERT INTO `tbl_name` (`web`, `urllink`, `cat`) VALUES ('".$web."', '".$urllink."', '".$cat."')"; 
     mysql_query($sql) or die("<BR>Error Adding!!<BR>".mysql_error()) ; 


    } 
    header("location:index.php"); 
} 

Позвольте мне знать, если это решить вашу проблему

+0

Такая же проблема, только вставка одной таблицы - каждый раз, когда я пытался вставлять ссылки на URL, мне нужно изменить имя «сети», иначе в противном случае будет отображаться пустая страница без ошибок. Зачем? –

+0

Я не получил это «только вставку одной таблицы». Пожалуйста, объясните первую строку. что вы пытаетесь сказать. – Zohaib

+0

Я использую цикл для создания поля ввода, каждый из которых имеет разный url, и я хочу вставить весь url с именем категории (cat) и именем веб-сайта (веб-сайта) в базе данных. выше, если скрипт содержит только одну ссылку URL в базе данных. –

Смежные вопросы