尝试在PHP(或JS)中创建一个简单的累积添加脚本:

时间:2014-10-12 03:09:07

标签: php sql cumulative-sum

尝试在PHP(或JS)中创建一个简单的累积添加脚本:

1)输入任意整数(4位或更少),点击提交,输入的数字显示并保存在同一网页上

2)输入另一个号码,点击提交,输入的号码被添加到上一个号码,总数被保存并显示在网页上

重复......。

示例:garchen.net上的咒语计数器

以下是我到目前为止的代码 在Index.php中:

<form method="post" action= "process-mantra-form-ami.php" >
    <p><strong>Amitabha Million Mantra Accumulation: </strong><br></p>
    <div style="margin-left: 20px;">
        <p>OM AMI DEWA HRI</p>
        <input type="text" name="accumulation" size="10" maxlength="6">
        <input type="submit" value="Submit Your Mantra" name="B1"><br>
        <span id="mani">Amitabha Mantra Count: <?php echo $newValue; ?> </span>
        <p></p>
    </div>
</form>

我对表单处理php感到困惑。我试图使用我的本地mamp服务器为数据库。我是否创建连接,创建数据库和表,将表单数据插入表中,并在process-mantra-form-ami.php文件中同时将数据检索回index.php?

你们在我的上一篇文章中看起来很容易,但似乎有很多内容。我知道下面的代码不完整,不太正确。救命啊!

下面的PROCESS-MANTRA-FORM-AMI.PHP代码

<?php 

// Create connection
$con=mysqli_connect("localhost:8888","root","root","my_db");

// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// escape variables for security
$accumulation = mysqli_real_escape_string($con, $_POST['accumulation']);

// Create database
$sql="CREATE DATABASE my_db";
if (mysqli_query($con,$sql)) {
  echo "Database my_db created successfully";
} else {
  echo "Error creating database: " . mysqli_error($con);
}

// Create table "Mantras" with one column 'Num'
$sql="CREATE TABLE Mantras (Num INT)";
if (mysqli_query($con,$sql)) {
  echo "Table mantras created successfully";
} else {
  echo "Error creating table: " . mysqli_error($con);
}

// Insert form data into table
$sql="INSERT INTO Mantras (Num INT)
VALUES ('$num')";

if (!mysqli_query($con,$sql)) {
  die('Error: ' . mysqli_error($con));
}

// update database
mysqli_query($con,"UPDATE Mantra SET Num = num + 1");

}

mysqli_close($con);


?>

<div>   
    <h2>Thank you for your <?php echo $num; ?> Amitabha Mantras!</h2>

    <p>Remember to dedicate your merit.</p>

    <p><a href="index.php">Return to the main site</a></p>

</div>

1 个答案:

答案 0 :(得分:1)

尝试一下......(对不起,今晚很无聊)

<?php  
$host = 'localhost';  // localhost:8888
$user = 'root';      
$pass = '';           // root
$dbnm = 'test'; 
$conn = mysqli_connect($host,$user,$pass,$dbnm)
            or die('Error ' . $conn->connect_error);    

// for testing.... so i can run the code over and over again and not 
// get errors about things existing and stuff 
run_statement($conn,"drop database if exists `my_db`;",'cleared old db');     
run_statement($conn,"drop table    if exists `mantras`;",'cleared old table');   
run_statement($conn,"drop table    if exists `two_col_table`;",'cleared old table');            

// Create database
$sql  = 'create database my_db';
$err = run_statement($conn,$sql,'Database creation');   
if (!$err) $conn->select_db('my_db'); 

// Create table "Mantras" with one column 'Num'
$sql = 'create table mantras (num int)';
$err = run_statement($conn,$sql,'Table mantras');  

if (!$err) {
   $sql  = 'insert into mantras (num) values ( ? )';
   $stmt = $conn->prepare($sql); 
   $stmt->bind_param('d',$num);   // d is for digit but s (string) would work too
   $num = 1; 
   $stmt->execute(); 
   $num = 2; 
   $stmt->execute(); 
   $stmt->close(); 
   echo ($conn->error) ? "insert errored: {$conn->error}" : 'insert ran succesfully'; 

   // update database
   $sql = 'update mantras set num = num + 1';
   run_statement($conn,$sql,'Update database'); 
}


// Create table "test" with two columns
$sql = 'create table two_col_tbl (num int, txt varchar(10))';
$err = run_statement($conn,$sql,'Table two_col_tbl');  

if (!$err) {
   // demonstrating how to bind multiple values 
   $sql  = 'insert into two_col_tbl values ( ?, ? )';
   $stmt = $conn->prepare($sql); 
   $stmt->bind_param('ds',$num,$txt);   
   $num = 1; $txt = 'hello';
   $stmt->execute(); 
   $num = 2; $txt = 'world';
   $stmt->execute();  
   $stmt->close(); 

   // select statement
   $sql  = 'select num, txt from two_col_tbl';
   $stmt = $conn->prepare($sql); 
   $stmt->bind_result($db_num, $db_txt);
   $stmt->execute();  
   print '<table><tr><th colspan=2>two_col_tbl</tr><tr><th>num</th><th>txt</th></tr>';
   while ($stmt->fetch()) {
      print "<tr><td>$db_num</td><td>$db_txt</td></tr>"; 
   }
   print '<table>';
   $stmt->close(); 
} 

$conn->close();  


function run_statement($conn,$statement,$descr) { 
   if ($conn->query($statement)) 
        echo "$descr ran successfully"; 
   else echo "$descr failed: {$conn->error}"; 
   return $conn->error; 
} 
?>

<div>   
    <h2>Thank you for your <?php echo $num; ?> Amitabha Mantras!</h2> 
    <p>Remember to dedicate your merit.</p> 
    <p><a href="index.php">Return to the main site</a></p> 
</div>