Различные вопросы по PHP и MySQL

253K
.
(\/)____o_O____(\/)

Sitego, создать новую таблицу и циклом пройти, как обычный фетч, задача одноразовая, любой способ подойдёт

.
Enter нажат, к чему теперь рыданья…

Koenig, спасибо.

.

что тут нетак ?
http://h2.keo.su/mgr/loadfile. ... g7uf1

вроде запрос правельный

.
# serghei (24.08.2016 / 12:55)
что тут нетак ?
http://h2.keo.su/mgr/loadfile. ... g7uf1

вроде запрос правельный
Ты это на телефоне написал?
.
# ДоХтор (24.08.2016 / 14:23)
Ты это на телефоне написал?
да
.
# serghei (24.08.2016 / 14:28)
да
Читать твой код без форматирования невозможно.

У тебя в запросе ошибка. Попробуй так
* (+/-)
<?php

define('_IN_JOHNCMS', 1);
$headmod = 'manager';
$textl = 'Игрок';
require_once '../incfiles/core.php';
require_once '../incfiles/head.php';

if ($id) {
    $q = mysql_query("select * from fman_players where id=$id");
    $a = mysql_fetch_array($q);
    $p = 'id='. $id;
}

if (!$_POST['submit']) {
    echo '<h2 align="center">Изменение Номера игрока</h2>'.
        '<form action="poz.php?'. $p .'" method="post">'.
        '<div class="menu">Номер:<br/>'.
        '<input type="text" nom="nom" value="'. $a['nom'] .'"/><br/>'.
        '<input type="submit" name="submit" value="Сохранить"/></div></form>';
} else {
    // В строке ниже я удалил  where id=$id
    mysql_query("insert into fman_players set nom='". $_POST['nom'] ."'");
    echo '<div class="menu">Действие успешно выполнено!<br/><a href="poz.php?time='.
        time().'&amp;'.$p.'">Назад</a></div>';
}

echo '<div class"phdr"><a href="index.php">Фут.менеджер</a></div>';

require_once '../incfiles/end.php';
.

Всем
Вопрос такой: как достичь разделения в записи в разные файлы одной и той же пользовательской функцией? Иначе говоря, есть одно описание функции, и три её вызова с разными параметрами. При этом, по какой бы из трёх ссылок не кликнуть, запишется только файл из первого вызова.

Сначала я думал, что проблема в использовании сессий, и заменил их на текстовые файлы. Не получив нужного результата, я решил, что может быть проблема в области видимости, и перепилил функцию на класс --- результат всё равно не изменный. Как добиться раздельной записи в файлы?

Функция (+/-)
function showLink($url, $link, $days, $clicks, $dir, $fn) {
    is_dir($dir) ?: mkdir($dir);
    $fname = $dir .'/'. $fn .'.txt';
    
    $time = time();
    //$mTime = $time + 3600 * 24 * $days;
    $mTime = $time + 15; # <---15 сек. для теста
    
    file_exists($fname) ?: file_put_contents($fname, serialize(['tm'=>$mTime, 'cnt'=>0]));
    $data = unserialize(file_get_contents($fname));
    
    if (isset($_GET['cnt'])) {
        $data['cnt']++;
        file_put_contents($fname, serialize($data));
        header('Location: '. $url);
        exit;
    }

    if ($data['tm'] < $time) { // Перезапись
        file_put_contents($fname, serialize(['tm'=>$mTime, 'cnt'=>0]));
        $data = unserialize(file_get_contents($fname));
    }
    
    return ($data['tm'] >= $time && $data['cnt'] < $clicks ? '<a href="?cnt">'. 
        $link .'</a> ('. ($clicks - $data['cnt']) .')' : '');
}

echo showLink(basename(__FILE__), 'Ссылка 1', 1, 10, 'DIR', '_1') .'<br/>';
Класс (+/-)
class ShowLink
{
    private $url;
    private $link;
    private $days;
    private $clicks;
    private $dir;
    private $fn;
    
    public function __construct($url, $link, $days, $clicks, $dir, $fn) {
        $this->url    = $url;
        $this->link   = $link;
        $this->days   = $days;
        $this->clicks = $clicks;
        $this->dir    = $dir;
        $this->fn     = $fn;
    }
    
    public function getLink() {
        is_dir($this->dir) ?: mkdir($this->dir);
        $fname = $this->dir .'/'. $this->fn .'.txt';
        
        $time = time();
        //$mTime = $time + 3600 * 24 * $this->days;
        $mTime = $time + 15; # <---15 сек. для теста
        
        file_exists($fname) ?: file_put_contents($fname, serialize(['tm'=>$mTime, 'cnt'=>0]));
        $data = unserialize(file_get_contents($fname));
        
        if (isset($_GET['cnt'])) {
            $data['cnt']++;
            file_put_contents($fname, serialize($data));
            header('Location: '. $this->url);
            //exit;
        }

        if ($data['tm'] < $time) { // Перезапись
            file_put_contents($fname, serialize(['tm'=>$mTime, 'cnt'=>0]));
            $data = unserialize(file_get_contents($fname));
        }
        
        return ($data['tm'] >= $time && $data['cnt'] < $this->clicks ? '<a href="?cnt">'. 
            $this->link .'</a> ('. ($this->clicks - $data['cnt']) .')' : '');
    }
}

$show2Link = new ShowLink(basename(__FILE__), 'Ссылка 2', 1, 10, 'DIR', '_2');
echo $show2Link->getLink() .'<br/>';

$show3Link = new ShowLink(basename(__FILE__), 'Ссылка 3', 1, 10, 'DIR', '_3');
echo $show3Link->getLink() .'<br/>';
Результат (+/-)
/*
    Ссылка 1 (7)
    Ссылка 2 (10)
    Ссылка 2 (10)

    Т.е., записывается только один файл.
*/
.
(\/)____o_O____(\/)

ДоХтор, у тебя одинаковый get параметр, первая функция отрабатывает и редиректит, если убрать редирект и эксит, будет сразу со всех файлов выпиливать, надо что то типа ?cnt&f=1, тогда заработает верно

.
# Koenig (25.08.2016 / 04:34)
ДоХтор, у тебя одинаковый get параметр, первая функция отрабатывает и редиректит, если убрать редирект и эксит, будет сразу со всех файлов выпиливать, надо что то типа ?cnt&f=1, тогда заработает верн
Благодарю, Димон )
.
Udesign

это форма не отправляет сообщению где ошибка сделал

форма (+/-)

<?php

/* =====================================================
 * change this to the email you want the form to send to
 * ===================================================== */
$email_to = "udesign.uzb@gmail.com"; 
$email_from = "udesign.uzb@gmail.com"; // must be different than $email_from 
$email_subject = "Контактный формуляр представленный";

if(isset($_POST['email']))
{

    function return_error($error)
    {
        echo json_encode(array('success'=>0, 'message'=>$error));
        die();
    }

    // check for empty required fields
    if (!isset($_POST['name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['message']))
    {
        return_error('Пожалуйста, заполните все обязательные поля.');
    }

    // form field values
    $name = $_POST['name']; // required
    $email = $_POST['email']; // required
    $message = $_POST['message']; // required

    // form validation
    $error_message = "";

    // name
    $name_exp = "/^[a-z0-9 .\-]+$/i";
    if (!preg_match($name_exp,$name))
    {
        $this_error = 'Пожалуйста, введите верное имя.';
        $error_message .= ($error_message == "") ? $this_error : "<br/>".$this_error;
    }        

    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
    if (!preg_match($email_exp,$email))
    {
        $this_error = 'Пожалуйста, введите действительный адрес электронной почты.';
        $error_message .= ($error_message == "") ? $this_error : "<br/>".$this_error;
    } 

    // if there are validation errors
    if(strlen($error_message) > 0)
    {
        return_error($error_message);
    }

    // prepare email message
    $email_message = "Форма подробности ниже .\n\n";

    function clean_string($string)
    {
        $bad = array("content-type", "bcc:", "to:", "cc:", "href");
        return str_replace($bad, "", $string);
    }

    $email_message .= "Name: ".clean_string($name)."\n";
    $email_message .= "Email: ".clean_string($email)."\n";
    $email_message .= "Message: ".clean_string($message)."\n";

    // create email headers
    $headers = 'From: '.$email_from."\r\n".
    'Reply-To: '.$email."\r\n" .
    'X-Mailer: PHP/' . phpversion();
    if (@mail($email_to, $email_subject, $email_message, $headers))
    {
        echo json_encode(array('success'=>1, 'message'=>'Форма успешно отправлен .')); 
    }

    else 
    {
        echo json_encode(array('success'=>0, 'message'=>'
Произошла ошибка. Пожалуйста, повторите попытку позже.')); 
        die();        
    }
}
else
{
    echo 'Пожалуйста, заполните все обязательные поля.';
    die();
}
?>
Всего: 7969