2012-02-04 5 views
0

все.Вставка значений флажка в базу данных MySQL с PHP

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

У меня есть серия флажков на моей веб-странице и вам нужно вставить значения в базу данных.

За то, что я читал, это должно быть сделано таким образом:

<tr> 
     <td class="titulofila">Sal&oacute;n Completo con: </td> 
     <td> 
     <table width="100%"><tr><td> 
      <label> 
      <input name="equipSalon[]" type="checkbox" id="equipSalon[]" value="mesa" /> 
      mesas </label> 
     </td><td> 
      <label> 
      <input name="equipSalon[]" type="checkbox" id="equipSalon[]" value="sillas" /> 
      sillas </label> 
     </td><td> 
      <label> 
      <input name="equipSalon[]" type="checkbox" id="equipSalon[]" value="sofa" /> 
      sof&aacute;</label> 
     </td></tr></table> 
     </td> 
    </tr> 

, а затем, в PHP скрипт, который кнопку отправки требуется, чтобы:

$equipSalonF=mysql_real_escape_string(implode(',', $_POST['equipSalon'])); 
mysql_query("INSERT INTO markers (ciudad, 
          zona,address,name, 
          telefono,email,piso, 
          tipo,erasmus,nhabitaciones, 
          plazas,equipHabita,nbanos, 
          salon,cocina,electrodomesticos, 
          garaje,internet,calefaccion, 
          sexo,precio,superficie,otros, 
          fecha,lat,lng) 
     VALUES ('{$_POST['ciudad']}','{$_POST['zona']}', 
       '{$_POST['address']}','{$_POST['name']}','{$_POST['telefono']}', 
       '{$_POST['email']}','{$_POST['piso']}','{$_POST['tipo']}', 
       '{$_POST['erasmus']}','{$_POST['nhabitaciones']}', 
       '{$_POST['plazas']}','{$equipHabitaF}', 
       '{$_POST['nbanos']}','{$equipSalonF}', 
       '{$equipCocinaF}','{$equipElectroF}','{$_POST['garaje']}', 
       '{$_POST['internet']}','{$_POST['calefaccion']}', 
       '{$_POST['sexo']}','{$_POST['precio']}', 
       '{$_POST['superficie']}','{$_POST['otrosF']}', 
       '{$_POST['fecha']}','{$_POST['lat']}', 
       '{$_POST['lng']}'",$link); 

У меня есть еще чем эти флажки, и это не работает, просто говорит: «У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с« по строке 21 ».

Если кто-то хочет посмотреть полные файлы index.html и php, вы можете их здесь: http://paste.ideaslabs.com/show/8qEHDnsZdr Форма начинается с строки 147. И файл PHP здесь: http://paste.ideaslabs.com/show/IJFLSHM7Ka

Заранее спасибо.

+0

За исключением того, что вы должны удалить атрибуты идентификатора. Вам нужно сделать это только для атрибута name. – animuson

+0

Если вы действительно хотите увидеть, что происходит под капотом, сбросьте переменную POST: \ n"; ?> ... затем используйте источник просмотра, чтобы увидеть отладочную информацию в комментариях – dar7yl

ответ

1

Флажки выставлены только в том случае, если они отмечены галочкой. Поэтому, если флажок не отмечен, он не появится в $_POST. Также вы не должны указывать значения для флажков. Вместо этого используйте имена, чтобы различать их.

В базе данных я обычно представляю флажки с tinyints и сохраняю 1 для отмеченных и 0 для unchecked.

// If your checkbox name is foo, this will convert it 
// into a value that can be stored in the database 
$foo = isset($_POST['foo']) ? 1 : 0; 

Также обратите внимание, что html требует, чтобы идентификаторы были уникальными. Таким образом, вы не можете иметь несколько элементов с одним и тем же идентификатором. И вы должны дезинфицировать свои входы для предотвращения внедрения sql. Используйте mysql_real_escape_string() на входах пользователя, которые входят в базу данных.

Update

Основная проблема заключается в том, что запрос не хватает «)» в последней строке. запрос должен выглядеть

$query = "INSERT INTO markers (ciudad, 
         zona,address,name, 
         telefono,email,piso, 
         tipo,erasmus,nhabitaciones, 
         plazas,equipHabita,nbanos, 
         salon,cocina,electrodomesticos, 
         garaje,internet,calefaccion, 
         sexo,precio,superficie,otros, 
         fecha,lat,lng) 
    VALUES ('{$_POST['ciudad']}','{$_POST['zona']}', 
      '{$_POST['address']}','{$_POST['name']}','{$_POST['telefono']}', 
      '{$_POST['email']}','{$_POST['piso']}','{$_POST['tipo']}', 
      '{$_POST['erasmus']}','{$_POST['nhabitaciones']}', 
      '{$_POST['plazas']}','{$equipHabitaF}', 
      '{$_POST['nbanos']}','{$equipSalonF}', 
      '{$equipCocinaF}','{$equipElectroF}','{$_POST['garaje']}', 
      '{$_POST['internet']}','{$_POST['calefaccion']}', 
      '{$_POST['sexo']}','{$_POST['precio']}', 
      '{$_POST['superficie']}','{$_POST['otrosF']}', 
      '{$_POST['fecha']}','{$_POST['lat']}', 
      '{$_POST['lng']}')"; 
mysql_query($query, $link); 

Обратите внимание на закрытие «)» на последней строке запроса. Также обратите внимание, что создание такого запроса в переменной позволяет вывести созданный запрос, чтобы вы могли видеть, что именно отправлено в MySQL, и вы также можете протестировать свой запрос в другой среде (то есть в phpmyadmin или любом другом администрировании базы данных инструмент).

+0

Спасибо за ответ, но я пытаюсь сохранить значения флажков, а не если они проверены или нет. Я хочу создать строку со значениями флажков и сохранить их в БД MySQL. Это возможно? – danielrozo

+2

Возможно, вы сможете получить правильное значение в вашем флажке '$ _POST', но если этот флажок не установлен, он никогда не будет опубликован.Поэтому вам нужно реализовать логику, чтобы увидеть, какие значения были опубликованы, и использовать их для определения того, какие значения не были опубликованы. – Arjan

+0

Вам следует более внимательно посмотреть код, который он публикует. Он цитирует значения $ _POST, поэтому не должно быть никаких проблем, независимо от того, отмечены ли флажки или нет. – periklis

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