Я пытаюсь создать простой веб-интерфейс, который подключается к небольшой базе данных. Я сослался на интерфейс, который станет списком сочинской Олимпиады. У меня возникли проблемы с вставкой нового спортсмена. Новые спортсмены могут быть добавлены только к существующей команде в базе данных из-за зависимости внешнего ключа. Чтобы исправить это, я создал массив столбца таблицы, вызвав pg_fetch_all_columns. Затем я повторяю массив и создаю новый тег опции для каждого из них. Имена правильно отображаются в качестве параметров в раскрывающемся списке, но когда я пытаюсь добавить его в базу данных, он включает только первое слово команды. Например, "Команда США по керлингу" становится "США". Я нашел это, вызвав переменную echo $.
PHP Portion, который правильно делает массив и форматирует выпадающее меню:
<?php
$db_handle = pg_connect("host='postgres.cs.wisc.edu' port='5432' dbname='cs564_s14' sslmode='require'")
or die ("Connection failed".pg_last_error());
$queryTeam = "SELECT name from sochi14_schema.team";
$result = pg_exec($db_handle, $queryTeam);
if (!$result) {
echo "An error occurred.\n";
exit();
}
$array =pg_fetch_all_columns($result, 0);
for ($i = 0; $i < count($array); ++$i) {
echo "<option value=".$array[$i]."> ".$array[$i]." </option>";
}
?>
Действие, которое вызывается:
if (!isset($_POST['name']) || !isset($_POST['age'])){
echo "Name and age of the athlete must be specified";
exit();
}
if (isset($_POST['medals'])){
$medals = $_POST['medals'];
}else{
$medals = "''";
}
$name = $_POST['name'];
$age = $_POST['age'];
$team = $_POST['team'];
$country = $_POST['country'];
echo $name;
echo $medals;
echo $country;
echo $team;
if($age < 12){
echo "Age must be larger than 12";
exit();
}
if($age > 120){
echo "Age must be less than 120";
exit();
}
$db_handle = pg_connect(DATABASE INFO CORRECTLY HANDLED)
or die ("Connection failed".pg_last_error());
$query = "INSERT into sochi14_schema.athlete values ( '".$name."',
".$age.", '".$medals."', ".$team.", ".$country.")";
$result = pg_exec($db_handle, $query);
if($result){
echo "Success: ".$name." has been inserted<br>";
}
pg_close();
?>
Выяснил это... Там должны быть кавычки, если опция имеет более одного слова в HTML.. Пример:
'<option value="'.$row['car'].'">' . $row['car'] . '</option>';
US Men'
. потому что, если вы не избежите этой цитаты, это нарушит вашу строку.var_dump($_POST)
они показываются нормально?