zoukankan      html  css  js  c++  java
  • php第二例

    参考:

    http://www.php.cn/code/3645.html

    前言

    由于navicat在linux平台不能很好的支持, PHP的学习转到windows平台.

    • php IDE: PhpStorm 64bit(需要和jvm保持一致)
    • XAMPP套件
    • navicat 可视化数据库

    目标:

    实现 message-board

    涉及技术:

    php读写mysql, 增, 删, 查

    代码:

    https://github.com/hixin/message-board

    目录映射

    ln -s /home/sain/code/PHP/message-board /opt/lampp/htdocs/test/message-board

    访问页面: http://localhost/test/message-board/add.html

    修改mysql密码

    ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'

    /opt/lampp/phpmyadmin/config.inc.php

    /* Authentication type */
    $cfg['Servers'][$i]['auth_type'] = 'config';
    $cfg['Servers'][$i]['user'] = 'root';
    $cfg['Servers'][$i]['password'] = 'tiger';
    

    访问数据库时 mysql -u root -p;

    数据库

    构造数据库

    create  database demo;
    
    CREATE TABLE `message` (
     `id` tinyint(1) NOT NULL auto_increment,
     `user` varchar(25) NOT NULL,
     `title` varchar(50) NOT NULL,
     `content` tinytext NOT NULL,
     `lastdate` timestamp NOT NULL,
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    

    查询数据库:

    查看数据库中的表:
    MariaDB [demo]> show tables
        -> ;
    +----------------+
    | Tables_in_demo |
    +----------------+
    | message        |
    +----------------+
    1 row in set (0.00 sec)
    
    查看表结构:
    MariaDB [demo]> desc  message;
    +----------+-------------+------+-----+-------------------+-----------------------------+
    | Field    | Type        | Null | Key | Default           | Extra                       |
    +----------+-------------+------+-----+-------------------+-----------------------------+
    | id       | tinyint(1)  | NO   | PRI | NULL              | auto_increment              |
    | user     | varchar(25) | NO   |     | NULL              |                             |
    | title    | varchar(50) | NO   |     | NULL              |                             |
    | content  | tinytext    | NO   |     | NULL              |                             |
    | lastdate | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
    +----------+-------------+------+-----+-------------------+-----------------------------+
    5 rows in set (0.00 sec)
    
    

    创建所需的PHP文件

    add.html 评论页面

    add.php 提交评论页面传输的内容到数据库。

    conn.php 连接数据的配置文件

    css.css 文件 美化html样式

    del.php 删除评论文件

    list.php 获得数据库中所有的数据展示在页面上。

    连接数据库 conn.php

    新建文件conn.php 用来设置连接数据库文件

    <?php
     $conn =mysql_connect("localhost", "root", "tiger") or die("数据库链接错误");
     mysql_select_db("demo", $conn);
     mysql_query("set names 'utf8'"); //使用utf-8中文编码;
     ?>
    

    后面的文件 需要用到数据库连接,只需要调用conn.php文件就可以将使用,很方便。

    创建留言板提交页面

    add.html

    <!DOCTYPE html>
     <html lang="en">
     <head>
         <meta charset="UTF-8">
         <link href="css.css" rel="stylesheet" type="text/css">
         <title>Title</title>
         <?php include ("add.php")?>
     
     </head><body>
     <b><a href="add.php">添加留言</a></b>
     <hr size=1>
     <form action="add.php" method="post" >
         用户:<input type="text" size="10" name="user"/><br>
         标题:<input type="text" name="title" /><br>
         内容:<textarea name="content"></textarea><br>
         <input type="submit" name="submit" value="发布留言" />
     </form>
     </body>
     </html>
    

    加强版:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <link href="css.css" rel="stylesheet" type="text/css">
        <title>Title</title>
        <?php include ("add.php")?>
    </head>
    <script>
        function CheckPost() {
            if(myform.user.value=="")
            {
                alert("请填写用户");
                myform.user.focus();
                return false;
            }
            if (myform.title.value.length<5)
            {
                alert("标题不能少于5个字符");
                myform.title.focus();
            return false;
            }
            if (myform.content.value=="")
            {
                alert("内容不能为空");
                myform.content.focus();
                return false;
            }
        }
    </script>
    <body>
    <b> <a href="list.php">浏览留言</a>  </b>
    <hr size=1>
    <form action="add.php" method="post" name="myform" onsubmit="return CheckPost();">
        用户:<input type="text" size="10" name="user"/><br>
        标题:<input type="text" name="title" /><br>
        内容:<textarea name="content"></textarea><br>
        <input type="submit" name="submit" value="发布留言" />
    </form>
    </body>
    </html>
    

    html页面中引入了conn文件和css文件,分别用来连接数据库和对页面进行布局

    css.css

    td {
       line-height: 16pt;
       font-size: 10pt;
       font-family: "Verdana", "Arial", "Helvetica", "sans-serif";
    }
    a:link {
       text-decoration: none;
       color: #000000;
    }
    body {
       font-size: 10pt;
       line-height: 13pt;
       background-color: #ECF5FF;
    }
    textarea {
       font-size: 8pt;
       font-family: "Verdana", "Arial", "Helvetica", "sans-serif";
       border: 1px solid #999999;
       padding: 5px;
    }
    form {
       margin: 0px;
       padding: 0px;
    }
    .textdrow {
       color:#666666;
       filter: DropShadow(Color=white, OffX=1, OffY=1, Positive=1);
    }
    .p {
       text-indent: 24px;
    }
    

    留言板页面提交php文件 add.php

    add.php 文件通过 $_POST 变量来收集表单数据了

    <?php
    
    include ("conn.php");
    $id=$_POST['id'];
    $user=$_POST['user'];
    $title=$_POST['title'];
    $content=$_POST['content'];
    if ($_POST['submit']){
     $sql="insert into message(id,user,title,content,lastdate)values('','$user','$title','$content',now())";
     mysql_query($sql);
     echo "<script>alert('提交成功!返回首页。');location.href='add.html';</script>";
    }
    ?>
    

    调用数据库连接文件,当点击submit时用post提交方式,使用sql语insert into对message表内的id user title content lastdata 写入文件, echo "<script>alert('提交成功!返回首页。');

    location.href='add.html';</script>";是使用js来进行弹窗提示并返回。

    创建文件 list.php

    <!DOCTYPE html>
     <html lang="utf-8">
     <head>
     <?php
     include ("conn.php");
     ?> 
     <link href="css.css" rel="stylesheet" type="text/css">
     </head>
     
     
     <table width=500 border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#add3ef" >
     <?php
     $sql="select * from message order by id desc";
     $query=mysql_query($sql);
     while($row=mysql_fetch_array($query)){ ?>
     
     <tr bgcolor="#eff3ff">
     <td>标题: <?php echo $row['title'];?> <font color="red">用户: <?php echo $row['user'];?> </td>
     </tr>
     <tr bgColor="#ffffff">
     <td>发表内容:<?php echo $row['content'];?></td>
     </tr>
     <tr bgColor="#ffffff">
     <td><div align="right">时间:<?php echo $row['lastdate'];?></td>
     </tr>
     <?php } ?>
     <tr bgcolor="#f0fff0">
     <td><div align="right">< a href=" ">返回留言</ a> </td>
     </tr>
     </table>
     </html>
    

    其中

    <?php
        $sql="select * from message order by id desc";
        $query=mysql_query($sql);
        while($row=mysql_fetch_array($query)){ 
        } ?>
    

    连接message数据库进行倒叙排序,使用倒叙的方式显示数据,最新的放在最前面,更能符合人们使用的习惯。

    要注意: 一定要用.php后缀, php可以看作是加强版的html, 可以执行php函数, 如果是html后缀, 里面的php命令默认不会执行.

    删除留言 del.php

    <?php
    include 'conn.php';
        $id = $_GET['id'];
        $query="delete from message where id=".$id;
        mysql_query($query);
    ?>
    //引入conn文件,使用get方式获取id,使用sql语句来删除id
    <?php
    //页面跳转,实现方式为javascript 
    $url = "list.php";
    echo "<script>";
    echo "window.location.href='$url'";
    echo "</script>";
    ?> 
    //使用js页面跳转回list查看文件的页面
    

    注意list.php的这里:

    <?php error_log($row['id'], 3, "D:php_error.log");?>
    <div align="right"><a href="del.php?id=<?php echo $row['id']; ?>">删除</a></div>
    

    实际相当于执行:http://localhost/test/message_board/del.php?id=7

    异常及解决

    Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /home/sain/code/PHP/message-board/conn.php:2 Stack trace: #0 /home/sain/code/PHP/message-board/add.php(2): include() #1 {main} thrown in /home/sain/code/PHP/message-board/conn.php on line 2

    查阅资料后发现,原来是从PHP5.0开始就不推荐使用mysql_connect()函数,到了php7.0则直接废弃了该函数,替代的函数是: mysqli_connect(); 用法是: $con=mysqli_connect("localhost","my_user","my_password","my_db");

    Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in /home/sain/code/PHP/message-board/conn.php on line 2 error Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in /home/sain/code/PHP/message-board/add.php on line 6 insert error

    还是因为密码的问题,改成下面ok:

    <?php
    $conn = mysqli_connect("localhost", "root", "", "demo");
    if($conn){
        echo"ok";
    }else{
        echo"error";    
    }
     ?>
    

    技巧

  • 相关阅读:
    ios 关闭自动修正输入内容
    Tarjan+缩点【强连通分量】【模板】
    初识Tarjan算法
    【尺取法】【转】
    【先加后减拼凑思想】【合成数问题】
    强连通分量【k 算法、t 算法】
    大数【加减乘除】
    洛谷博客地址【置顶!】
    差分约束+spfa【模板】
    【poj3169】【差分约束+spfa】
  • 原文地址:https://www.cnblogs.com/hixin/p/9548810.html
Copyright © 2011-2022 走看看