接着上次WEb 系列开发之php 与mysql动态网站入门。

  个人觉得,学习技术就像一棵大树,主干很重要,枝叶其次。对于学习技术,我们应该分清主次关系。怎么学?为什么要学?有一个较好的分寸。

有时候觉得 国内有些教育,从一开始就从枝叶 细节说的很清楚。说了一大堆,就是很散的感觉,虽然有很多知识。但是学的人呢,并不清楚这个的实际应用,

这样会导致学习兴趣的缺失。个人觉得 就比如 php 和mysql吧,虽然我也不是高手,但就学习上面还是能评论几句的,比如我从表单开始 讲表单的注册,也就是

网站会员注册的部分。我从最简单的部分开始,然后尽量精简代码,一些细枝末节就可以暂时忽略(比如表单的错误处理,判断,还有完整的功能) ,这些不是不重要,

而是在开发的过程中,对于我们学这个的人,先了解一下所有的交互,后面写好表单,也能注册。恩,学的人感觉很爽,恩,然后讲解了web 的整个部分。一个很大的

轮廓就出来了,然后对于学习的人,自学的热情也会上涨,就知道自己因何去学。然后也能看点代码了,虽然还是新手。这样就已经慢慢去了解整个的开发过程了。然后也可以

吹吹牛逼说能一个人开发网站了。是个不错的感觉。

  比如表单,学的人后面发现,注册的时候,可能需要判断,如果错误了肿么办,注册的时候会不会有重合等等这些问题。然后想:“恩,这确实是个问题。看来我得着手处理这个问题了,这样才让我的网站没有漏洞以至于变得完美。”后面又觉得表单是不是要漂亮一点,然后学习了点css css3.然后重新拾起php语言的书,mysql语言的书进行更深入的学习,以至于开始的东西变得越来越好,稳定性越来越强,速度越来越快,这些都是枝叶。所有初学者,需要的就是主干的学习,枝叶的渗透的项目或者自己写代码体会的。

   当然,我后面也会写完整的网站开发过程,当然都是初级阶段,比如python采集,工具辅助,使用开源代码,简单的css javascript等等鼓捣出漂亮的网页。开始虽然没什么技术含量,但一个人得到了制作产品的满足感后,潜力是无穷的。虽然有时候copy人家的样式,这样对自己的学习不利,但是对于开始学习技术觉得枯燥的同学,比如在校的学生,做网页的时候,鼓捣不出漂亮的网页肿么办,慢慢学? 现在年轻人很浮躁的,你懂的。 直接看看知名的网站,样式不错,copy过来。加入到网站中,不错的感觉,然后,通过经常使用Firefox chrome的插件看代码,对于常见的html css 知道的也就不少了,然后通过进一步的学习,发现者里面东西真不少,后面激情大增。待续。。


  在上次中,我从 html 表单讲解开始,从一个静态的html表单开始,然后结合数据库。展现了表单和数据库的连接。简单说明了一下 表单和数据库的交互。还是表单的交互比较清晰呀。哈哈。貌似我们已经学习了网站的注册部分,虽然就三个框呀。不过这就是雏形。

  然后我们网站有时候还有后台呢,看看哪些人注册了呢。有时候 人家信息还要修改呢?恩,这是个问题,我得着手这些问题了。当然我这是个人写的教程,就接地气一点了。

  人家百行的代码 我就用10几行讲解一下就行了,主干嘛。后面会全部详细的加上的,不过暂时不是我们的主题呀。

上次说注册部分。就谈了数据库的三个量 first_name second_name age 这三个。这一次就要用表单修改已经注册用户的age 了。

也就是说 确定 first_name second_name ,然后修改 age 。以后完整的注册 修改 内容更多,当然主要还是要有密码的。这个类比下。

接着上次我们在根目录下建造一个 password.php 文件。

<?
include('includes/header.html');
echo '<p>change</p>';
$error=array();
if (empty($_REQUEST['first_name'])) {
    echo '<p>you forget type your first_name;<p>' ;# code...
    $error='1';
}
else{
    $f=$_REQUEST['first_name'];
}

if (empty($_REQUEST['second_name'])) {
    echo '<p>you forget type your second_name;<p>' ;# code...
    $error='2';
}
else{
    $s=$_REQUEST['second_name'];
}

if (empty($_REQUEST['age'])) {
    echo '<p>you forget type your age;<p>'; # code...
    $error='3';
}
else{
    $a=$_REQUEST['age'];
}
if (empty($error)) {
    echo'<p> everything is ok<p>';# code...
    require('connect/mysqli_connect.php');
    $q="update user set age='$a' where (first_name='$f' and second_name='$s')" ;
    $r=@mysqli_query($dbc,$q);
    mysqli_close($dbc);     //上次没说,其实准备后面说的。就是连接数据库后要断开连接呀,不过php代码运行到最后也会断的。不过养好好习惯嘛。
    exit();     // 然后由此打断,提交后,修改成功,后面的表单就不要出来了嘛。
}
?>
<form action='password.php' method='POST'>
<p>please type your first name:<input type="text" name="first_name" value="<? if(isset($_REQUEST['first_name'])) echo $_REQUEST['first_name'];?>"></p>
<p>please type your second name:<input type="text" name="second_name" value="<? if(isset($_REQUEST['first_name'])) echo $_REQUEST['second_name'];?>" ></p>
<p>please type your age:<input type="text" name="age" value="<? if(isset($_REQUEST['age'])) echo $_REQUEST['age'];?>"></p>
<p><input type="submit" name='submit' value='change'></p>
</form>

  看着这个表单,其实啊和上次说的注册变化在哪呢?

$q="update user set age='$a' where (first_name='$f' and second_name='$s')" ;

  只有这一句,主要还是数据呀,数据库的 更新呀,看来修改信息就改一个数据库语言就够了。后面这个就断一下,写个 mysql 语言的基础部分吧。其实我看着就像

  看英文句子一样一样的呀。updat user set 更新 user 表 然后设置  后面就是什么设置什么内容了。 where 对它限定一下嘛。first_name second_name 在数据库中找到这个

匹配的信息。然后就是修改了age数据了. 还有

<form action='password.php' method='POST'>

  action 的部分要改成 password.php 提交给它的。这个不一样,就这两个地方不一样了。啊哈。后面呢。说说注册用户的检索吧。就是看看有哪些用户注册了。就拿主要的部分了。view_user.php
<?
require('connect/mysqli_connect.php');
$q="select concat(second_name,',',first_name) as name from user order by name";
$r=@mysqli_query($dbc,$q);
// mysqli_query() need connect the database;
echo "<table>
<tr>
<td>name</td>
</tr>
";
while($row=mysqli_fetch_array($r,MYSQLI_ASSOC)){
    echo "<tr><td>".$row["name"]."</td></tr>";
}
echo "</table>";
?>
  很简短的语句吧。我省了很多。前面就不说了。 
select concat(second_name,',',first_name) as name from user order by name

这就涉及数据语言了。后面说写个文章 简单谈谈。  写英文句子一样一样的。

  select 选择 second_name first_name 的组合 as 作为name 表示 。name 就作为他们的新表示方法了。后面就用name 了呀。来自于 user 表 由名字排序。

里面 concat () 函数 就是连接那两个东东的。中间加一个 “ ,”

  前面部分就不说了.后面又来了一个 <table ><tr><td></td></tr></table>这就是列表的结构了。后面也写篇文章最简单的 写下 html.

这个列表就是展示检索出来的用户了。

while($row=mysqli_fetch_array($r,MYSQLI_ASSOC)){

} 
上面这个函数很重要的。就是执行完检索后,
mysqli_fetch_array($r,MYSQLI_ASSOC))
  MYSQLI_ASSOC是这个函数后面的可选参数,可以有MYSQLI_NUM MYSQLI_BOTH我们用的就是这种格式$row["name"]
  MYSQLI_NUM 就是$row[0]这种格式 不同的数组一样一样的。BOTH 就是都可以啦。
这个函数每次返回一行,我们要一行一行的输出。然后就用 while了。 

echo "<tr><td>".$row["name"]."</td></tr>";

中间就是每次输出的变量了。就是 name 了。

然后就检索 检索 出来一堆 。出来一堆啊。。 。。

后面还有分页呢。 哈哈 ~~

关于作者:

[作者]:——石头——热爱互联网事业,关注互联网技术发展,文章欢迎转载,请保留原文地址,谢谢。
[出处]:
http://www.cnblogs.com/webers/

[本文基于]:
署名-非商业性使用 3.0
许可协议发布,欢迎转载,演绎,但是必须保留本文的署名
——石头——
(包含链接),且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系

web系列教程之php 与mysql 动态网站 。检索 与更新。的更多相关文章

  1. kali Linux系列教程之BeFF安装与集成Metasploit

    kali Linux系列教程之BeFF安装与集成Metasploit 文/玄魂 kali Linux系列教程之BeFF安装与集成Metasploit 1.1 apt-get安装方式 1.2 启动 1. ...

  2. Kali Linux系列教程之OpenVas安装

    Kali Linux系列教程之OpenVas安装 文 /玄魂 目录 Kali Linux系列教程之OpenVas安装 前言 1.  服务器层组件 2.客户层组件 安装过程 Initial setup ...

  3. RabbitMQ系列教程之二:工作队列(Work Queues)(转载)

    RabbitMQ系列教程之二:工作队列(Work Queues)     今天开始RabbitMQ教程的第二讲,废话不多说,直接进入话题.   (使用.NET 客户端 进行事例演示)          ...

  4. Spring 系列教程之 bean 的加载

    Spring 系列教程之 bean 的加载 经过前面的分析,我们终于结束了对 XML 配置文件的解析,接下来将会面临更大的挑战,就是对 bean 加载的探索.bean 加载的功能实现远比 bean 的 ...

  5. WCF系列教程之WCF服务协定

    本文参考自:http://www.cnblogs.com/wangweimutou/p/4422883.html,纯属读书笔记,加深记忆 一.服务协定简介: 1.WCF所有的服务协定层里面的服务接口, ...

  6. WCF系列教程之WCF服务宿主与WCF服务部署

    本文参考自http://www.cnblogs.com/wangweimutou/p/4377062.html,纯属读书笔记,加深记忆. 一.简介 任何一个程序的运行都需要依赖一个确定的进程中,WCF ...

  7. kali linux 系列教程之metasploit 连接postgresql可能遇见的问题

    kali linux 系列教程之metasploit 连接postgresql可能遇见的问题 文/玄魂   目录 kali linux 下metasploit 连接postgresql可能遇见的问题. ...

  8. SpringBoot系列教程之Bean加载顺序之错误使用姿势辟谣

    在网上查询 Bean 的加载顺序时,看到了大量的文章中使用@Order注解的方式来控制 bean 的加载顺序,不知道写这些的博文的同学自己有没有实际的验证过,本文希望通过指出这些错误的使用姿势,让观文 ...

  9. SpringBoot系列教程之Bean之指定初始化顺序的若干姿势

    上一篇博文介绍了@Order注解的常见错误理解,它并不能指定 bean 的加载顺序,那么问题来了,如果我需要指定 bean 的加载顺序,那应该怎么办呢? 本文将介绍几种可行的方式来控制 bean 之间 ...

随机推荐

  1. IOS ScrollowView 滑动到边缘后不允许再拖动

    当scrollowview滑动图片时,滑动到最后一张图本应该不让其滑动,但是如果不可以去设置属性,依然可以滑动,露出白色的底色,挺影响美观的, 可以设置其属性: sv.bounces=NO; 这样就不 ...

  2. 使用dispatch_once:创建单列

    无论是爱还是恨,你都需要单例.实际上每个iOS或Mac OS应用都至少会有UIApplication或NSApplication. 什么是单例呢?Wikipedia是如此定义的: 在软件工程中,单例是 ...

  3. kontalk

    Site: http://kontalk.org/ Code: https://github.com/kontalk/androidclient

  4. Vim 快捷键整理

    一.移动光标 1.左移h.右移l.下移j.上移k 2.向下翻页ctrl + f,向上翻页ctrl + b 3.向下翻半页ctrl + d,向上翻半页ctrl + u 4.移动到行尾$,移动到行首0(数 ...

  5. java list&lt;string&gt;组 传递到值js排列

    方法一 后台:     String sql = "select * from tree";     list = this.treeService.getTreeList(sql ...

  6. Android 系统状态栏一体化

    Android4.4新特性,系统状态栏一体化. 实现的步骤主要有以下几点: 1.android4.4 以上版本 2.设置app全屏: 方法:在AndroidManifest.xml中设置android ...

  7. C# - 集合类 - 集合类型

    Stack类 ns:System.Collections 此类模仿了一个简单的先进后出(LIFO)的集合 它实现了ICollection接口 可以通过三种方式创建Stack类对象 Stack stac ...

  8. Activity 与ListActivity的区别

    转载自 http://www.cnblogs.com/bravestarrhu/archive/2012/05/06/2486703.html

  9. 一个不错的flash 模板

    听到好听的背景音乐,而且效果也挺不错的,忽然感觉flash好强大呀 1.模板浏览地址:http://www.cssmoban.com/cssthemes/5229.shtml 2.模板演示地址:htt ...

  10. wampserver修改mysql密码后phpmyadmin登陆错误处理方法

    首先针对wampserver这个软件来说,是很方面的! 在进行使用时都会涉及到关于mysql数据管理系统的相关密码的修改,这个当然修改是很简单,当时没有想那么多,想为自己的mysql添加一个密码,方式 ...