PHP变量没有转移到fwrite

时间:2014-01-01 20:53:10

标签: javascript php html ajax

我遇到了通过fwrite处理其他变量的问题。当只包含$ roll变量时,它会正确写入。发生的事情是来自$ roll的随机数进入chat.txt,但是当添加$ quantity和$ dice时,则没有显示任何内容(甚至不是$ roll)。我想要发生的是,用户选择骰子的数量,骰子类型,然后滚动。然后来自roll的文本应写入chat.txt。同样,只有在添加$ quantity和$ dice变量时才会出现问题。请原谅我的新见事。这是代码:

<?php
    if(isset($_POST['submit']))//on submit
    {
        $roll = $_POST['roll'];
        $quantity = $_POST['quantity'];
        $dice = $_POST['dice'];
        $nickname = htmlentities(strip_tags($_POST['nickname']));
        fwrite(fopen('chat.txt', 'a'), "<span>". $nickname . " :</span>" . $$roll = str_replace("\n", " ", $quantity, $dice, $roll) . "\n");
        fclose($file); 
        print_r(error_get_last());
    }
?>

<form action="" id="rollBox" name="rollBox" method="post">
    <input type="text" name="roll" id="demo">
    <input type="number" name="quantity" min="1" max="10">
    <select name="dice">
        <option value="d4">d4</option>
        <option value="d6">d6</option>
        <option value="d8">d8</option>
        <option value="d10">d10</option>
        <option value="d12">d12</option>
        <option value="d20">d20</option>
    </select>
    <button type="submit" name="submit" >Roll</button>
</form>

<script>
$(document).ready(function () {
$('#rollBox').submit(function(e) {
var x=document.getElementById("demo")
x.value=Math.floor((Math.random()*20)+1);
e.preventDefault();
var obj = $(this), // (*) references the current object/form each time
                        url = obj.attr('action'),
                        method = obj.attr('method'),
                        data = {};
                        obj.find('[name]').each(function(index, value) {
                        var obj = $(this),
                            name = obj.attr('name'),
                            value = obj.val();
                        data[name] = value;
                    });
$.ajax({
                        url: url,
                        type: method,
                        data: data,
                        success: function(response2) {}
                        });
                        return false; 
});
});

</script>

<p id="name-area"></p>
<div id="chatWrap"><div id="chat-area"></div></div>

<form id="send-message-area">
    <p>Your message: </p>
    <textarea id="sendie" maxlength = '200' ></textarea>
</form>

4 个答案:

答案 0 :(得分:2)

您在此处有错误:

$$roll = str_replace("\n", " ", $quantity, $dice, $roll)

删除一个 $

另外,请查看str_replace声明:

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

你有太多的争论。

答案 1 :(得分:1)

str_replace("\n", " ", $quantity, $dice, $roll)

您正在向str_replace函数传递额外的参数。你可能想把最后三个作为一个传递,所以你必须引用它们:

str_replace("\n", " ", "$quantity, $dice, $roll")

答案 2 :(得分:0)

永远不会定义

$file。将你的行分开:

$file = fopen('chat.txt', 'a');
fwrite($file, "<span>". $nickname . " :</span>" . $$roll = str_replace("\n", " ", $quantity, $dice, $roll) . "\n");
fclose($file);

答案 3 :(得分:0)

想出来。这个问题通过你们的答案组合解决了。感谢大家的帮助。顺便说一下,新代码如下:

<div id="pageWrap">

<div id="expander"> Expand</div>

<?php
if(isset($_POST['submit']))//on submit
{
    $roll = $_POST['roll'];
    $quantity= $_POST['quantity'];
    $dice = $_POST['dice'];
    $nickname = htmlentities(strip_tags($_POST['nickname']));
    $file = fopen('chat.txt', 'a');
    fwrite($file, "<span>". $nickname . " :</span>" . $roll = str_replace("\n", " ", "    <em> Rolls </em>$quantity $dice <em>for</em> $roll") . "\n");
    fclose($file);
}
?>

<form action="" id="rollBox" name="rollBox" method="post">
    <input type="text" name="roll" id="demo">
    <input type="number" name="quantity" min="1" max="10">
    <select name="dice">
        <option value="d4">d4</option>
        <option value="d6">d6</option>
        <option value="d8">d8</option>
        <option value="d10">d10</option>
        <option value="d12">d12</option>
        <option value="d20">d20</option>
    </select>
    <button type="submit" name="submit" >Roll</button>
</form>

<script>
$(document).ready(function () {
$('#rollBox').submit(function(e) {
var x=document.getElementById("demo")
x.value=Math.floor((Math.random()*20)+1);
e.preventDefault();
var obj = $(this), // (*) references the current object/form each time
                        url = obj.attr('action'),
                        method = obj.attr('method'),
                        data = {};
                        obj.find('[name]').each(function(index, value) {
                        var obj = $(this),
                            name = obj.attr('name'),
                            value = obj.val();
                        data[name] = value;
                    });
$.ajax({
                        url: url,
                        type: method,
                        data: data,
                        success: function(response2) {}
                        });
                        return false; 
});
});

</script>
</form>
<p id="name-area"></p>
<div id="chatWrap"><div id="chat-area"></div></div>

<form id="send-message-area">
    <p>Your message: </p>
    <textarea id="sendie" maxlength = '200' ></textarea>
</form>

</div>
相关问题