2013-12-16 1 views
0

Я новичок в PHP и MySql, и я пытался решить это в течение нескольких часов безрезультатно. Я пытаюсь создать список рассылки. После заполнения форм и нажатия submit данные просто не будут отображаться в таблице базы данных. Любая помощь приветствуется. Не знаю, как отлаживать, так что я тоже не получаю ошибку. Я после этой обучающей программы http://www.youtube.com/watch?v=HL884ugSL8cПроблема с отправкой данных в таблицу MySql - таблица остается пустой

mail.inc.php файл:

<?php 
// adds information to the table 
function add_user($firstname, $lastname, $email){ 
    $firstname = mysql_real_escape_string($firstname); 
    $lastname = mysql_real_escape_string($lastname); 
    $email  = mysql_real_escape_string($email); 

    $result = mysql_query("INSERT INTO 'users' ('firstname', 'lastname', 'email') VALUES ('{$firstname}','{$lastname}','{$email}')"); 


    return ($result !== false) ? true : false; 
    } 



//removes the given email address from the table 
function remove_user($email){ 
$email = mysql_real_escape_string($email); 

mysql_query("DELETE FROM 'users' WHERE 'email' = '{$email}'"); 

} 


// sends a given message to all subscribed users 
function mail_all($subject, $message, $headers){ 
$users = mysql_query("SELECT 'firstname', 'email' FROM 'users'"); 

while (($user = mysql_fetch_assoc($users)) !== false){ 
    $body = "Hi, {$user['firstname']}\n\n{$message}\n\nUnsubscribe: "; 

    mail($user['email'], $subject, $body, $headers); 
} 

} 
?> 

signup.php файл:

<?php 

include('core/init.inc.php'); 


// checks if all forms have been filled !!!!!!! 
if (isset($_POST['firstname]'], $_POST['lastname'], $_POST['email'])){ 
$errors = array(); 

if (preg_match('/^[a-z]+$/i', $_POST['firstname']) === 0){ 
    $errors[] = 'Your first name should contain letters only.'; 
} 

if (preg_match('/^[a-z]+$/i', $_POST['lastname']) === 0){ 
    $errors[] = 'Your last name should contain letters only.'; 
} 

if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false){ 
    $errors[] = 'This email address does not appear to be valid'; 
} 

if (empty($errors)){ 
    add_user($_POST['firstname'], $_POST['lastname'], $_POST['email']); 
} 
} 
?> 

     <form action="" method="post"> 
      <p> 
       <label for="firstname">Firstname</label> 
       <input type="text" name="firstname" id="firstname" /> 
      </p> 

      <p> 
       <label for="lastname">Lastname</label> 
       <input type="text" name="lastname" id="lastname" /> 
      </p> 

      <p> 
       <label for="email">E-mail</label> 
       <input type="text" name="email" id="email" /> 
      </p> 

      <p> 
       <input type="submit" value="Signup" /> 
      </p> 
     </form> 

init.inc.php файл содержит следующее:

<?php 

mysql_connect('localhost','wd','wd'); //not bothered 
mysql_select_db('leedsattractions'); 


$path = dirname(__FILE__); 

include("{$path}/inc/mail.inc.php"); 


?> 

И я добавил остальную часть файла mail.inc.php для первого встраивания наверх.

+1

Если ваш учебник говорит вам использовать mysql_query, вам действительно нужно найти другой учебник. Функции mysql_ * устарели. Тем не менее, где код, который вы используете для вызова функции add_user. Вы уверены, что на самом деле что-то передаете? – Robbert

+0

Вы передаете переменные $ _POST функции add_user? Кроме того, я надеюсь, что вы установили соединение с базой данных. Какие ошибки вы получаете? –

+0

Где вы на самом деле используете эту функцию? – Ali

ответ

1

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

<?php 
if(isset($_POST['firstname']){ 
    add_user($_POST['firstname'], $_POST['lastname'], $_POST['email']); 
} 
function add_user($firstname, $lastname, $email){ 
$firstname = mysql_real_escape_string($firstname); 
$lastname = mysql_real_escape_string($lastname); 
$email  = mysql_real_escape_string($email); 

$result = mysql_query("INSERT INTO 'users' ('firstname', 'lastname', 'email') VALUES ('{$firstname}','{$lastname}','{$email}')"); 


return ($result !== false) ? true : false; 
} 

?> 
+0

Это не называется. Это определяет его только. – Ali

+0

да, извините, только заметили это и исправили. – DMortensen

+0

Плюс это 'firstname', а не' firsname' –

0

Первая:
Если это все, что ваш код для добавления нового пользователя, это не очень хороший способ сделать это. Я предлагаю вам изменить логику, которая обрабатывает добавление нового пользователя в таблицу для более последовательных и связанных приложений для будущего.
Второй
Как @Robert предлагает в своем комментарии, вам нужно избегать использования устаревших функций, чтобы сэкономить время и улучшить управление.
В-третьих:
Проверьте свой код SQL в PhpMyAdmin, если он доступен, чтобы узнать, связано ли это с проблемами подключения/кодирования.
Forth:
Попробуйте подправить свой код и проверить его, если он может работать.

// you can try this: 

    $sql= "INSERT INTO 'users' ('firstname', 'lastname', 'email') VALUES ('".$firstname."','".$lastname."','".$email."')"; 
    $result = mysql_query($sql); 

Пятое:
Убедитесь, что add_user(); функция вызывается правильно, в нужном месте, после того, как переменные установленным размером. Надеюсь, это поможет.