2013-12-16 10 views
0

저는 PHP와 MySQL을 처음 사용하고 있으며, 아무런 도움이없이 몇 시간 동안이 문제를 해결하려고 노력해 왔습니다. 메일 링리스트를 만들려고합니다. 양식을 채우고 제출을 누르면 데이터는 데이터베이스 테이블에 나타나지 않습니다. 어떤 도움을 주셔서 감사합니다. 아직 디버깅 방법을 모르므로 오류가 발생하지 않습니다.MySql 테이블에 데이터를 게시하는 데 문제가 발생했습니다. 테이블은 비어 있습니다.

<?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 파일이 포함 :이 튜토리얼을 http://www.youtube.com/watch?v=HL884ugSL8c

mail.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

플러스 그것은 'firsname'이 아닌'firstname'입니다 –

0

첫째 :
을이 새 사용자를 추가 할 모든 코드의 경우,이 그것을 할 수있는 좋은 방법은 아니다. 새로운 사용자를 테이블에 추가하는 로직을 변경하여 향후보다 일관되고 관련성이 높은 응용 프로그램을 만들 것을 제안합니다.
두 번째
@Robert와 마찬가지로 @Robert는 자신의 의견에서 시간을 절약하고 처리하기 위해 더 이상 사용되지 않는 기능을 사용하지 않아야한다고 제안했습니다.
세 번째 :
PhpMyAdmin에서 SQL 코드를 테스트하여 사용 가능한 경우 연결/코딩 문제와 관련된 내용인지 확인하십시오.
앞뒤 :
코드가 트위 어 (tweek)되어 작동하는지 테스트 해보십시오. 다섯 번째

// you can try this: 

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

:
add_user(); 기능은 오른쪽, 제대로 호출되고 있는지 확인 장소 - 후 변수 defined-. 희망이 도움이됩니다.