2015-05-01 6 views
0

Моя идея - заполнить записи в форме HTML, а затем сохранить информацию в базе данных (phpmyadmin). Затем отобразите информацию на карте google (экспорт).HTML Form> SQL> Отображение карты Google - Синтаксис + Логика

Но это не работает из-за синтаксиса и логической проблемы.

Мой HTML форма:

<html> 
<head></head> 
<body> 
    <form method="POST" action="../BackEnd/ShopSetup.php" name="Setup"> 
    <td>Name</td> 
    <td> 
     <input type="text" name="name"></td> 
    </tr> 
    <tr> 
     <td>type</td> 
     <td> 
      <input type="varchar" name="type"></td> 
    </tr> 
    <tr> 
     <td>Address</td> 
     <td> 
      <input type="text" name="address"></td> 
    </tr> 
    <tr> 
     <td>Email</td> 
     <td> 
      <input type="email" name="email"></td> 
    </tr> 
    <tr> 
     <td>Phone Number</td> 
     <td> 
      <input type="varchar" name="phone"></td> 
    </tr> 
    <tr> 
     <td>longitude</td> 
     <td> 
      <input type="float" name="long"></td> 
    </tr> 
    <tr> 
     <td>latitude</td> 
     <td> 
      <input type="float" name="lat"></td> 
    </tr> 
    <tr> 
     <td>Opening Hour</td> 
     <td> 
      <input type="varchar" name="opening"></td> 
    </tr> 
    <tr> 
     <td>Closing Hour</td> 
     <td> 
      <input type="varchar" name="closing"></td> 
    </tr> 
    <tr> 
     <td> 
      <input id="button" type="submit" name="submit" value="Setup"></td> 

    </tr> 
    <tr></tr> 
    </form> 
</body> 
</html> 

Мой PHP страницу На бэкенд:

  1. ShopSetup.php

     <?php 
    
    
        include ("../Connections/Connection.php"); 
    
    
    
        if (isset($_POST["submit"])) 
        { 
         $name = $_POST["name"]; 
         $type = $_POST["type"]; 
         $address = $_POST["address"]; 
         $email = $_POST["email"]; 
         $phone = $_POST["phone"]; 
         $long = $_POST["long"]; 
         $lat = $_POST["lat"]; 
         $opening = $_POST["opening"]; 
         $closing = $_POST["closing"]; 
    
        $sql = "INSERT INTO locations (name, type, address, email, phone, long, lat, opening, closing) 
          VALUES('$name', '$type', '$address', '$email', '$phone', '$long', '$lat', '$opening', '$closing')"; 
    
        $query = mysql_query($sql); 
    
        if (!$query) 
        { 
         die ("Error : " . mysql_error()); 
        } 
        if(empty($name) || empty($type) || empty($address) || empty($email) || empty($phone) || empty($long) || empty($lat) || empty($opening) || empty($closing)) 
         { 
         echo "You did not fill out the required fields."; 
         die(); // Note this 
         } 
        echo "<center></center>"; 
        } 
    
        ?> 
         <h1> Your order is complete!</h1> 
           <p class="intro-text">You will see your shop on the map soon<br></p> 
           <center> 
    
        <h3> <a href="../index.php"> go to home page </a></h3> 
        </center> 
    

Но когда я отправить форму, я получаю :

Ошибка: У вас возникла ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «long, lat, opening, closed». VALUES ('', '', '', '', '', '', '', ' ',' ')' по строке 1

Что является лучшим атрибутом HTML для сохранения времени открытия/закрытия: недель, дней. часы, минуты, секунды?

+1

Там нет никаких законных оснований для использования в '' mysql_ * API больше @Misunderstood –

+0

Пожалуйста, [прекратить использование '' mysql_ * функции] (http://stackoverflow.com/questions/12859942/why -shouldnt-я-использование-MySQL-функции-в-PHP). Они больше не поддерживаются и [официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). Узнайте о [подготовленных заявлениях] (http://en.wikipedia.org/wiki/Prepared_statement) и используйте [PDO] (http://jayblanchard.net/demystifying_php_pdo.html). –

+0

Я все еще не понял, в чем проблема? Моя карта экспортирует информацию из базы данных phpmyadmin и отображает ее на карте .. но вместо того, чтобы заполнять ее вручную, пользователь должен заполнить ее как форму, в которой хранится информация о базе данных ... так что я должен менять столбцы имена «long, lat, закрытие, открытие» на что-то еще? @Misunderstood – Naz970

ответ

0

Вы должны использовать обратные метки (`) вокруг имен столбцов. Как так:

$sql = "INSERT INTO locations (`name`, `type`, `address`, `email`, `phone`, `long`, `lat`, `opening`, `closing`) 
     VALUES('$name', '$type', '$address', '$email', '$phone', '$long', '$lat', '$opening', '$closing')"; 

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

Отъезд this discussion для получения дополнительной информации.

Что касается вашего второго вопроса, посмотрите на тип ввода HTML5 datetime. Сразу отметим, что it is not supported by all browsers

+0

Я сделал то, что вы мне сказали @nevos, но у меня все еще такая же проблема ... Ошибка: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' name ',' type ',' address ',' email ',' phone ',' lng ',' lat ',' opening ',' 'закрытие') 'в строке 1 и рядом с каждой переменной выше сказано: «Не обращайтесь к суперглобальному $ _Post Array напрямую – Naz970

+0

@ Naz970: попробуйте повторить SQL-запрос, а затем запустите его непосредственно в своей базе данных (например, на консоль) .Чтобы отладить его, удалите все столбцы, кроме одного, и посмотрите, удастся ли он (или, по крайней мере, если ошибка изменилась, так как вы могли нарушить ограничения). Затем добавьте столбцы один за другим, пока не найдете проблему. Может быть, у вас есть несвязанный апостроф в одной из ваших строк? – halfer

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