前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

web开发基础-怎样快速编写一个粗糙的文章管理



导语:现在网络上有很多种代码架构、设计模式、开发框架。它们的原理都是什么呢?是怎么发展到现在的这个样子呢?在有这些东西之前,web编程是怎样的呢?那时候的程序员都是怎么开发的呢?本文不能完全回答这些问题,只是想从一些基本的知识点,来侧写出冰山的一角。

链接文章:

1、php基础知识

2、web客户端编程基础-HTML、CSS

3、web客户端编程基础-JavaScript

4、数据库基础笔记-SQL

文章所说的代码和sql文件:

http://thumb.liyulinbill.com/upload/attachment/saas_mTiikMvYZq_php_html.rar


一、基本环境搭建


推荐直接使用phpstudy,软件安装好后,直接启动。

代理服务器Apache和nginx哪一个都可以,本文不涉及。

php版本5或者7 都可以,本文不涉及。

mysql 能启动就行,本文涉及。

注意:phpstudy官网已经出到8.0,和以往的版本UI差别有点大,所以建议还是找以前的版本使用。

以前版本UI如下图所示:

phpstudy默认的网站根目录,就在安装文件夹下面的WWW目录里面,

可以在软件 “其它选项菜单”>”phpStudy设置”>”端口常规设置” 里面设置网站根目录。

然后在WWW目录下新建一个phpinfo.php文件,写入代码

<?php
?phpinfo(); 
?>


在浏览器中输入地址:http://localhost/phpinfo.php

出现php的版本信息,就说明基本环境已经配置好了,如图所示:


设置mysql密码

phpstudy安装好后,mysql启动默认用户root,密码root。mysql密码可以在phpstudy软件 “其它选项菜单”>”phpStudy设置”>”端口常规设置”中,MySQL修改密码项修改。


二、静态数据页面展示


在www目录下创建一个index.php文件,

如果使用的是phpstorm编辑器,先输入一个英文!号,然后按一下tab键,则可以生成以下html代码


<!doctype html>
<html lang="en">
<head>
????<meta charset="UTF-8">
????<meta name="viewport"
??????????content="width=device-width,user-scalable=no,initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
????<meta http-equiv="X-UA-Compatible" content="ie=edge">
????<title>Document</title>
</head>
<body>

</body>
</html>

没有的话,自己手写也是不错的体验。

一般情况,建议在head标签里面引用css文件和<style></style>内联css代码,在</html>里面,body标签外面引用js文件和<script></script>内联js代码。

然后在代码中,任何地方都可以使用<?php ?>标签来插入php代码。这里可以自行尝试。


例如后文提及的detail.php:


<!doctype html>
<html lang="en">
<head>
????<meta charset="UTF-8">
????<?php
????$data = $_GET;
????if(!isset($data['id'])||!$data['id']){
????????var_dump('404');die;
????}
????//连接mysql数据库
????$con = mysql_connect('localhost','root','liyulin');
????//选择数据库
????mysql_select_db('test',$con);
?????>
????<title>文章详情页面</title>
????<style>
????????/*css代码*/
????????input[name='comment']{padding: 5px;height: 35px;line-height: 35px;font-size: 16px;border-radius: 8px;}
????????.comment-btn{background-color: red;color: #fff;border: none;cursor: pointer;width: 80px;padding: 12px;text-align: center;border-radius: 5px;}
????</style>
</head>
<body>
<?php
$sql = "SELECT * FROM article";
$result = mysql_query($sql);
$detail = mysql_fetch_object($result);
?>
<h1>
????<?php echo $detail->title; ?>
</h1>
<div class="content">
????<?php echo $detail->content;?>
</div>
<div class="back">
????<a href="/index.php?page=1">返回列表页面</a>
</div>

<div class="comment">
????<h4>我要评论</h4>
????<p>
????????<input type="text" placeholder="请输入要评论的内容" name="comment" id="comment">
????????<input type="hidden" value="<?php echo $data['id']?>" name="id" id="article_id">
????????<div onclick="comment()" class="comment-btn">确认评论</div>
????</p>
</div>

<?php
mysql_close($con);
?>
</body>
<script>
????function comment(){
??????...
????}
</script>
</html>


三、使用navicate 管理Mysql

1、什么是navicate

Navicat是一套快速、可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。


2、创建数据库连接

在导航栏上,选择 “连接”>”MySQL”,出现连接面板

连接名:本地 //这个自定义名称

主机:localhost //连接本地的地址,也可以填127.0.0.1 本地回环地址

端口: 3306 //没有特殊需求,默认都是3306

用户名: root //mysql的登录用户名

密码:root //mysql的root用户的密码

连接成功,效果如图所示:


3、创建数据库

命令行:ALTER DATABASE `test` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';

navicat操作:点击创建好的连接,右键选择“新建数据库”

数据库名称: test //要操作的数据库名称

字符集:utf8 //数据库字符集,后文涉及到中文,这里建议使用utf8

排序规则: utf8_general_ci

如图:


4、创建数据库表

命令行:
CREATE TABLE `test`.`article`?(
??`id` int(11) NOT NULL,
??`title` varchar(255) NULL,
??`content` varchar(255) NULL,
??PRIMARY KEY (`id`)
) COMMENT = '文章表';


navicat操作: 选择数据库,右键点击“表”,选择新建表,

名:这是数据库表字段的名称

类型:表字段的数据类型

长度:不同类型的长度范围是不同的。

小数点:针对double、decimal、float使用,其它建议默认0

不是null:是否允许为空

键:是否为主键

注释:对该表字段的注释

如图:



现在,有了mysql数据库,浏览器也能访问localhost了。于是就可以做一个最最简单的文章展示了。常见的文章展示,分为列表页面展示和详情页面展示。首先,要把数据从数据库里面取出来,再展示到html页面。


四、php自带mysql操作函数


1、连接数据库

mysql_connect(servername,username,password);

servername 可选。规定要连接的服务器。默认是 "localhost:3306"。

username 可选。规定登录所使用的用户名。默认值是拥有服务器进程的用户的名称。

password 可选。规定登录所用的密码。默认是 ""。


2、关闭数据库连接

mysql_close($con); //$con 连接变量


3、选择数据库

mysql_select_db(“数据库名称”, $con);


4、执行数据库语句

mysql_query(“DDL 或 DML”);


5、结果集处理

mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有

返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。


mysql_fetch_object() 函数从结果集(记录集)中取得一行作为对象。


mysql_affected_rows() 函数返回前一次 MySQL 操作所影响的记录行数


根据上述几个简单函数,可得知php把数据从数据库取出来,再显示到web页面上的流程:

连接数据库连接->选择数据库->执行数据库语句->获取结果集->把结果集显示到web页面->关闭数据库


五、文章列表页面


数据库获取数据代码


//连接mysql数据库
$con = mysql_connect('localhost','root','liyulin');
???if(!$con){
???die('Could not connect: ' . mysql_error($con));
}
//选择数据库
mysql_select_db('test',$con);
//执行查询
$result = mysql_query(" SELECT * FROM article");

处理数据库结果

```

//处理查询结果

while($row = mysql_fetch_array($result))

{

echo "<div class='lists'>";

echo "<h4>";

echo $row['title'];

echo "</h4>";

echo "<p>";

echo $row['content'];

echo "</p>";

echo "</div>";

}

```

把代码添加到index.php 文件中,并访问 http://localhost/index.php

基本列表页效果,如图所示:

现在列表页出来了,数据量少,一次性展示出来没问题,但是当数据量多,有成千上万条时,一起查出来就不合理了。这时,sql 中有一个TOP 子句,mysql也就是limit 子句,可以限制一次查询条数。这种需求功能,在web编程中,就叫做分页功能。

根据上述需求,需要修改一条执行查询语句:$result = mysql_query(" SELECT * FROM article");

把 SELECT * FROM article 加上 limit “开始数”,”长度”:select * from article limit 2,2;

那么开始数和长度哪里来的?

这时每页数长度可以默认2条或者10条,而页数可以简单的直接从 url地址get传参进来:

http://localhost/index.php?page=1


最糙的分页功能就出来了:


????//获取传参
????$data = $_GET;?????//$_POST, $_REQUEST;
????????//执行查询
????????$size = 2;?//每页条数
????????if(isset($data['page'])&&$data['page']){
????????????$start = ($data['page']-1)*$size;
????????????$sql = "SELECT * FROM article limit ".$start.",".$size;
????????}
????????else{
????????????$sql = "SELECT * FROM article";
????????}

翻页按钮:


????<div class="pages">
????????<a href="/index.php?page=1">第一页</a>
????????<a href="/index.php?page=2">第二页</a>
????</div>

如图:

列表页点击进入详情页面

html页面跳转的方式主要有四种:

1、meta 设置

2、a标签href属性

3、window.location.href

4、window.history.go(-1);或者window.history.back(-1)

列表页面进入详情页方法1和4都不合适。方法2是比较常用的,这里就使用方法3:

在JavaScript代码中实现 location.href

<script>
????function jump(id) {
????????location.href = '/detail.php?id='+id;
????}
</script>

然后,我们发现WWW目录下还没有detail.php 这个文件,所以需要去建一个。


六、文章详情页


数据库连接和数据获取、展示都和列表页差不多,就不累述了。

目前列表页和详情页都有了,下面我们就给文章详情页面添加一个更糙的评论功能吧。

要有的东西:

0、既然是评论功能,得有用户吧 -- 匿名评论,可以不要用户,那么这步就省略了。

1、既然是评论功能,得有地方输入吧:

<input type="text" placeholder="请输入要评论的内容" name="comment" id="comment">

2、既然是评论功能,得知道评论的是哪篇文章吧:

<input type="hidden" value="<?php echo $data['id']?>" name="id" id="article_id">

3、既然是评论功能,评论写好了,得提交到哪里去吧:

<div onclick="comment()" class="comment-btn">确认评论</div>

4、提交到哪里呢?直接写一个api.php 文件

5、这个api.php 要做什么呢?连接数据库,把评论内容存到数据库里面。

INSERT INTO `comment` (article_id,content) VALUES (".$data['id'].",'".$data['comment']."');

目前好像没有 comment 的这张表呢?? 用navicat 新建一个吧。

6、得告诉用户评论成功了: alert(“评论成功!”);



那么就开始写代码了。

信息提交,我们可以使用form表单或者js实现

这里就使用js 的XMLHttpRequest,来实现POST的异步信息提交


<div class="comment">
????<h4>我要评论</h4>
????<p>
<!--???<form action="api.php" method="post">-->
<!--???</form>-->

????????<input type="text" placeholder="请输入要评论的内容" name="comment" id="comment">
????????<input type="hidden" value="<?php echo $data['id']?>" name="id" id="article_id">
????????<div onclick="comment()" class="comment-btn">确认评论</div>
????</p>
</div>
<script>
????function comment(){
????????var xmlHttp = new XMLHttpRequest();
????????xmlHttp.open('POST','/api.php',true);
????????xmlHttp.onreadystatechange = function () {
????????????if(this.readyState==4 && this.status == 200){
????????????????alert('评论成功!');
????????????}
????????};
????????var c = document.getElementById('comment').value;
????????var id = document.getElementById('article_id').value;
????????//请求头部
????????xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
????????var sendStr = "id="+id+"&comment="+c;
????????xmlHttp.send(sendStr);
????}
</script>


api.php 文件部分代码

<?php
$data = $_REQUEST;
.....
//数据库插入
$sql = "INSERT INTO `comment` (article_id,content) 
VALUES (".$data['id'].",'".$data['comment']."'); ";
$result = mysql_query($sql);
....
echo json_encode(array('status'=>200,'data'=>$data));
?>


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言