2015-05-06 2 views
0

Я новичок в PHP, так что это для меня ново. Во всяком случае, я создаю сайт, чтобы получить доступ к своим рецептам в Интернете.HTML/PHP Form не отправляет данные в базу данных MySQL

Это форма:

<form action="Form.php" method="post" class="basic-grey"> 
<h1><a href="index.html">Receita</a> 
    <span>Aqui podes adicionar uma nova receita</span> 
</h1> 
<label> 
    <span>Titulo :</span> 
    <input id="titulo" type="text" size="20" maxlength="100" name="titulo" placeholder="Introduza o Titulo" /> 
</label> 

<label> 
    <span>Categoria :</span><select maxlength="10" name="categoria"> 
    <option value="categoria">--- Seleccione aqui a Categoria ---</option> 
    <option name=" " value="sopa">Sopa</option> 
    <option name="entrada" value="entrada">Entrada</option> 
    <option name="carne" value="carne">Carne</option> 
    <option name="peixe" value="peixe">Peixe</option> 
    <option name="salada" value="salada">Salada</option> 
    <option name="sobremesa" value="sobremesa">Sobremesa</option> 
    </select> 

</label> 

<label> 
    <span>Ingredientes :</span> 
    <textarea id="ingredientes" size="20" maxlength="1000" name="ingredientes" placeholder="Introduza os ingredientes"></textarea> 
</label> 
<label> 
    <span>Preparação :</span> 
    <textarea id="preparacao" size="20" maxlength="1000" name="preparacao" placeholder="Introduza o modo de preparação"></textarea> 
</label> 
<label> 
    <span>Notas :</span> 
    <textarea id="notas" size="20" maxlength="1000" name="notas" placeholder="Aqui pode adicionar uma nota"></textarea> 
</label> 
<label> 
    <span>&nbsp;</span> 
    <input type="submit" class="button" value="Enviar" /> 
</label> 

</form> 

Это код для обработки формы:

<?php 
// processing form values 


if ($_SERVER['REQUEST_METHOD'] == 'POST'){ 

$titulo = $_POST['titulo']; 
$categoria = $_POST['categoria']; 
$ingredientes = $_POST['ingredientes']; 
$preparacao = $_POST['preparacao']; 
$notas = $_POST['notas']; 


if(!empty($titulo) && !empty($categoria) && !empty($ingredientes) && !empty($preparacao) && !empty($notas)){ 

    include('connection.php'); 

    mysqli_query($dbc, "INSERT INTO receita(Titulo,Categoria,Ingredientes,Preparacao,Notas) VALUES ('$titulo','$categoria','$ingredientes','$preparacao','$notas')"); 
    $registered = mysqli_affected_rows($dbc); 
    echo $registered." row is affected, everything worked fine!"; 
}else{ 
    echo "Please fill all values on the form"; 
} 

}else{ 

echo "No form has been submitted"; 

} 

?> 

И то, что происходит в том, что если я что-то вход, как это он не работает:

título: Акорда де camarao

Категория: Peixe

Ingredientes: 800 g de camarao; 4 dentes de alho; 1 рамо-де-сальса ou коэнтрос; 3 ovos inteiros; 1,5 дл. 1,5 pão por pessoa; сала; piri-piri

Препарат: Coze-se o camarão com sal e piri-piri e Reserva-se aua. De seguida demolha-se o pão na agua do camarão. Aquece-se o azeite com os alhos e os coentros e de seguida junta-se o camarão e por ultimo o pão. Mexe-se tudo para cozer o pão e ganhar consistencia. Por ultimo junta-se os ovos e envolve-se tudo.

Nota: Receita пункт 4 pessoas

Но если вход так это работает:

título: gfdsfdsa

Категория: Peixe

Ingredientes: hudsbfbdsf fdsfidsfidsfsd, fdsjifjdsifdis 0palpdsandnsaud jkdosakodsakodmnsa jidsjaidsa

Препарат Ao: nfjdbshfbhdbjfdjs dsajijdisandiabuu fjndoisjfojidsanfds

Нота: fbhdubsufbndsnfs

Моя база данных таблицы:

Nome Tipo Agrupamento (Collation) Atributos Nulo Omissao Extra 

1 ID BigInt (50) Não None AUTO_INCREMENT Muda Muda Elimina
2 título VARCHAR (100) utf8_general_ci Нет Нет Муда Муда Элимина 3 Категория verchar (10) utf8_general_ci Нет Нет Muda Muda
4 Ingredientes varchar (1000) utf8_gene ral_ci Não Отсутствует Muda 5 Preparacao VARCHAR (1000) utf8_general_ci Não Отсутствует Muda Muda 6 Notas VARCHAR (1000) utf8_general_ci Não Без Muda Muda

К сожалению, если этот пост сво долго. Есть идеи, как это исправить?

+1

Добавить сообщение об ошибках в верхней части файла (ов) сразу после открытия PHP тега , например, '

+3

[Ваш скрипт находится под угрозой для SQL Injection.] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

ответ

5

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

Вам нужно либо избежать ввода, прежде чем подставлять его в запрос.Добавьте это после того, как include ('connection.php');

$titulo = mysqli_real_escape_string($dbc, $titulo); 
$categoria = mysqli_real_escape_string($dbc, $categoria); 
// and so on for all the other variables 

или (лучше) использовать подготовленное заявление. Используйте это вместо вашего звонка в mysqli_query:

$stmt = mysqli_prepare($dbc, "INSERT INTO receita(Titulo,Categoria,Ingredientes,Preparacao,Notas) VALUES (?, ?, ?, ?, ?)"); 
mysqli_stmt_bind_param($stmt, "sssss", $titulo, $categoria, $ingredientes, $preparacao, $notas); 
mysqli_stmt_execute($stmt); 
$registered = mysqli_stmt_affected_rows($stmt); 
+0

@BryanWay Он использует mysqli в вопросе , Я этого не изменил. – Barmar

+0

Прошу прощения, но я немного потерян. Код выше от Barmar я могу добавить или заменить его? и где? извините, noob здесь: p –

+0

Я добавил больше объяснений, надеюсь, этого достаточно. Должно быть ясно, понимаете ли вы, что это такое? – Barmar

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