2016-07-13 2 views
0

В моей форме есть два ввода следующим образом:Вставьте входной массив в MySQL с использованием PDO

<input type="text" class="form-control input-sm" name="topico[]"/> 
 
<textarea rows="2" cols="46" maxlength="120" class="form-control input-sm" name="descricao[]"></textarea>

, который затем присваивается в атрибут класса следующим образом:

if ($_POST) { 
// seta propriedades do objeto 
$topico->nome = $_POST['topico']; 
$topico->descricao = $_POST['descricao']; 
if (!empty($_POST['id'])) { 
    if ($topico->update()) { 
     echo "<div class=\"alert alert-success alert-dismissable\">"; 
     echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>"; 
     echo "Tópico atualizado com sucesso."; 
     echo "</div>"; 
    } else { 
     echo "<div class=\"alert alert-danger alert-dismissable\">"; 
     echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>"; 
     echo "Erro ao atualizar tópico."; 
     echo "</div>"; 
    } 
}else { 
    if ($topico->create()) { 
     echo "<div class=\"alert alert-success alert-dismissable\">"; 
     echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>"; 
     echo "Tópico criado com sucesso."; 
     echo "</div>"; 
    } else { 
     echo "<div class=\"alert alert-danger alert-dismissable\">"; 
     echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>"; 
     echo "Erro ao criar tópico."; 
     echo "</div>"; 
    } 
} 

метод create, с которым у меня возникают проблемы, потому что я не знаю, как вставить эти данные в базу данных.

public function create() { 
    $query = "INSERT INTO " . $this->table_name . " (nome, descricao) values (?, ?)"; 
    $stmt = $this->conn->prepare($query); 
    $this->nome = htmlspecialchars(strip_tags($this->nome)); 
    $this->descricao = htmlspecialchars(strip_tags($this->descricao)); 
    $stmt->bindParam(1, $this->nome); 
    $stmt->bindParam(2, $this->descricao); 
    // execute statement 
    if ($stmt->execute()) { 
     return true; 
    } else { 
     return false; 
    } 
} 

Для чего я могу сказать, что должен использовать функцию foreach, как бы я это сделал?

+1

Вы несколько имен и описаний, которые вы отправляете все сразу? $ _POST ['topico'] - это массив. Нужно ли это быть? – Progrock

+0

Если вам не нужен массив в имени, просто выполните это 'name =" topico "' not 'name =" topico [] "'. Это создает массив topico –

+0

Да, он должен быть массивом. – kelsen

ответ

0

Я закончил цикл через $ _POST и назвал $ topico-> create для каждой строки, хотя это не самый лучший способ, это единственный способ, которым я нашел.

if ($_POST) { 

foreach ($_POST['topico'] as $index => $row) { 
    $topico->nome = $_POST['topico'][$index]; 
    $topico->descricao = $_POST['descricao'][$index]; 
    $topico->id = $_POST['id'][$index]; 

    if (!empty($_POST['id'])) { 
     if ($topico->update()) { 
      echo "<div class=\"alert alert-success alert-dismissable\">"; 
      echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>"; 
      echo "Tópico atualizado com sucesso."; 
      echo "</div>"; 
     } else { 
      echo "<div class=\"alert alert-danger alert-dismissable\">"; 
      echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>"; 
      echo "Erro ao atualizar tópico."; 
      echo "</div>"; 
     } 
    } else { 
     if ($topico->create()) { 
      echo "<div class=\"alert alert-success alert-dismissable\">"; 
      echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>"; 
      echo "Tópico criado com sucesso."; 
      echo "</div>"; 
     } else { 
      echo "<div class=\"alert alert-danger alert-dismissable\">"; 
      echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>"; 
      echo "Erro ao criar tópico."; 
      echo "</div>"; 
     } 
    } 
} 

}

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