Почему строки правильно обрезаются после появления в выпадающем меню?

0

Я пытаюсь создать простой веб-интерфейс, который подключается к небольшой базе данных. Я сослался на интерфейс, который станет списком сочинской Олимпиады. У меня возникли проблемы с вставкой нового спортсмена. Новые спортсмены могут быть добавлены только к существующей команде в базе данных из-за зависимости внешнего ключа. Чтобы исправить это, я создал массив столбца таблицы, вызвав 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();
                        ?>
  • 1
    Это просто первое слово или оно обрезается после каждой кавычки, например, US Men' . потому что, если вы не избежите этой цитаты, это нарушит вашу строку.
  • 1
    Если у вас var_dump($_POST) они показываются нормально?
Показать ещё 3 комментария
Теги:
database
web

1 ответ

0

Выяснил это... Там должны быть кавычки, если опция имеет более одного слова в HTML.. Пример:

'<option value="'.$row['car'].'">' . $row['car'] . '</option>'; 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню