Используйте PHP для извлечения значений из форм HTML и сохранения их в БД MySQL - PullRequest
0 голосов
/ 28 января 2011

Кажется, у меня есть небольшая проблема, которую я не могу понять.

Так что дело в том, что у меня есть php-скрипт вместе с HTML-файлом, в этом файле у меня есть несколько форм с некоторыми текстовыми полями и некоторыми раскрывающимися списками. Теперь причина, по которой мне приходилось использовать отдельные формы для всех них, заключалась в том, что если бы я делал одну большую форму, ни одна из них не работала, когда я нажимал кнопку отправки. Я понятия не имею ... Мой текущий код ниже, мой предыдущий код имел только одну форму, и он не будет работать вообще.

          <form method="post" id="locationFromPost" name="locationFormPost">
                                <div class="formRow">
                                    <div class="label">
                                        <label for="locationForm">Current Location:</label>
                                    </div>

                                    <div class="field">
                                            //If post is null go back to value pull originally else echo post           
                                               <?php if($_POST['locationForm']==null) $location=$location;else $location=$_POST['locationForm']; ?>             
                                        <input type="text" name="locationForm" id="locationForm" value="<?php echo $location?>"></input>
                                    </div>
                                </div>
                            </form>

...... и так далее .......

           <form method="post" id="sexFromPost" name="sexFormPost">    
                          <div class="formRow">
                                <div class="label">
                                    <label for="sexForm">Sex</label>
                                </div>

                                <div class="dropDown">
                                    <select name="sex" id="sexForm" >
//If post is null go back to value pull originally else echo post                                   
                              <?php if($_POST['sexForm']==null) $sex=$sex;else $sex=$_POST['sexForm']; ?>
                                        <option value="1" <?php if($sex==1){echo"selected='selected'";}?>>Male</option>
                                        <option value="2" <?php if($sex==2){echo"selected='selected'";}?>>Female</option>
                                        <option value="3" <?php if($sex==3){echo"selected='selected'";}?>>Not Specified</option>
                                    </select>
                                </div>
                             </div>
            </form>

...... и так далее .......

    <form method="post" id="submit" name="submit">
    <div class="formRow"><div id="seperator"></div></div>
                    <div class="submitButton">
                        <input type="submit" name="submit" id="submit" value="Save Changes"/> 
                    </div>          
                </div>
</form>

Так вот как выглядит верхняя часть моего кода, все div'ы предназначены для форматирования, вам не нужно беспокоиться об этом. Теперь код php для сохранения информации находится ниже. Я должен отметить, что переменные, которые вы видите в php-частях приведенного выше кода, извлекаются из базы данных в более ранней части кода, и это работает нормально. У меня проблемы с тем, что я хочу, чтобы пользователь мог редактировать свою информацию, а затем просто нажать кнопку «Отправить» и информацию, которую нужно сохранить. То, что в настоящее время происходит, ну, в общем, абсолютно замечено. Страница обновится, и все значения вернутся к тому, что было, когда они были извлечены, они вообще не сохраняются в БД, теперь я проверил, чтобы убедиться, что часть кода работает, купите несколько тестов. Сохраняет данные без проблем. Проблема в том, что они сами - формы, если я делаю все в одной большой форме, это не работает ... Не знаю почему. теперь, если я нажимаю клавишу ввода в конце каждой из форм по отдельности в браузере, данные поступают, но только в это поле, иногда другие поля полностью стираются, и сохраняется пустая или пустая строка. Я не могу понять эту вещь вообще.

вот php, чтобы сохранить информацию.

<?php
if (isset($_POST['submit']))
{ 
mysql_query("UPDATE members SET location= '".$_POST['locationForm']."' WHERE usr='" .mysql_real_escape_string($_SESSION['usr']) ."'");
mysql_query("UPDATE members SET location= '".$_POST['sexForm']."' WHERE usr='" .mysql_real_escape_string($_SESSION['usr']) ."'");

........ you know the rest.......
}?>

Я совершенно растерялся из-за того, почему эта штука делает это, теперь я не лучший программист на PHP во всех отношениях, так что это может быть (возможно, есть) я. Если кто-то может указать, что мне нужно сделать, чтобы система работала, пожалуйста, дайте мне знать

Спасибо.

Ответы [ 3 ]

0 голосов
/ 28 января 2011

Я не совсем понял, в чем ваша проблема.

Однако это:

 <?php if($_POST['locationForm']==null) $location=$location;else $location=$_POST['locationForm']; ?> 

Мне не кажется, что это многое сделает. Попробуйте что-то вроде этого:

<?php 
    if(!isset($_POST['locationForm'])){
       $location=$location;
    }
   else {
       $location=$_POST['locationForm'];
    } 
?> 

(фигурные скобки мне нравятся)

Предположим, у вас есть $ location, который вы не указали. Это проверит, не существует ли $ _POST ['locationForm'] и будет ли он его использовать.

0 голосов
/ 28 января 2011

вам нужно, чтобы все поля, которые будут отправлены на любую данную страницу, существовали в одном теге формы. любые элементы в другом теге формы будут представлены как набор тегов формы THAT. Я предполагаю, что вы также хотите объединить ваши обновления?

//$_SESSION['usr'] should already be sanitized and safed wherever you handle your site credentials..
//set your submittable values, with a default to an empty string in this case.

$sex=isset($_POST['sexForm'])?mysql_real_escape_string($_POST['sexForm']):"";
$location=isset($_POST['locationForm'])?mysql_real_escape_string($_POST['locationForm']):"";

//single statement, no need to iterate for each field, that's wasted connections.
$sql="update "UPDATE members SET location= '$location' , sex='$sex' WHERE  usr='".$_SESSION['usr']."'";
0 голосов
/ 28 января 2011

Попробуйте разместить все поля формы внутри тега формы, а также используйте mysql_real_escape_string для вашей переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...