2011-02-07 3 views
0

Я новичок в программировании, я нахожу этот скрипт, и я бы хотел его адаптировать к моим потребностям, этот скрипт сохранил почтовый адрес в MySQL db, но я бы хотел для сохранения этого в файле txt, возможно повторное использование этого кода?php, change a db: from MySQL to txt file

address.php

require "includes/connect.php"; 

$msg = ''; 

if($_POST['email']){ 

    // Requested with AJAX: 
    $ajax = ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'); 

    try{ 
     if(!filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)){ 
      throw new Exception('Invalid Email!'); 
     } 

     $mysqli->query("INSERT INTO coming_soon_emails 
         SET email='".$mysqli->real_escape_string($_POST['email'])."'"); 

     if($mysqli->affected_rows != 1){ 
      throw new Exception('This email already exists in the database.'); 
     } 

     if($ajax){ 
      die('{"status":1}'); 
     } 

     $msg = "Thank you!"; 

    } 
    catch (Exception $e){ 

     if($ajax){ 
      die(json_encode(array('error'=>$e->getMessage()))); 
     } 

     $msg = $e->getMessage(); 
    } 
} 

где connect.php является

<?php 

error_reporting(E_ALL^E_NOTICE); 

$db_host = ''; 
$db_user = ''; 
$db_pass = ''; 
$db_name = ''; 

@$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name); 

if (mysqli_connect_errno()) { 
die('<h1>Could not connect to the database</h1><h2>Please try again after a few moments.</h2>'); 
} 

$mysqli->set_charset("utf8"); 


?> 
+3

Нет смысла «повторно использовать» это, так как, возможно, 5% этого кода не связано с базой данных. – Mchl

+0

Да, это звучит как полная переписывание –

ответ

0

Этот файл является очень специфичны для использования базы данных. Однако использовать файл не сложно. Я бы предположил, что вместо использования простого файла подумайте об использовании базы данных, такой как sqlite, которая использует файлы, а не полностью полноценную базу данных.

Если вы настроены на использование файлов, вы можете легко манипулировать файлами в php. Некоторые примеры приведены ниже:

$file = fopen('path/to/file', 'r+'); 

    fputs($file, '[email protected]'); 
    // fputs() is an alias for fwrite, they are interchangable 

This page детализирует различные режимы для открытия файла с fopen(). Вы захотите обратить особое внимание на то, будет ли режим открывать указатель файла в начале или в конце файла. Если вы написали несколько писем в файл, затем позже снова открыли файл с указателем файла в начале, чтобы написать больше писем, вы перезаписали бы существующие данные. Это хорошая причина для использования базы данных, поскольку для удаления существующих данных требуется больший винт.

fputs() Используется для записи строк в файл. Очевидно, что вы можете передать переменную, а не строку, которую я поставил в этом примере, просто убедитесь, что переменная представляет собой значимую строку. Например, вы не можете передать массив писем. Вам нужно будет перебрать массив и вызвать fputs() для каждого письма.

0

Вы можете повторно использовать его части; строка, которая фактически сохраняет данные в базе данных, - это строка, начинающаяся $mysqli->query, а строка после этого - проверка на успех. Удалите их и замените их собственными функциями сохранения текстовых файлов (и поместите их в файл include, а не заданный, который определяет соединитель mysqli).