487day(include载入,表单)

本文详细介绍了PHP中使用include加载文件的特点及区别,并讲解了如何通过表单提交数据,包括GET、POST和REQUEST三种超全局变量的用法。

《2019年2月3日》【连续487天】

标题:include载入,表单;

内容:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <!-- require 特点: 一旦被载入的文件不存在就会报一个致命错误,当前文件不再往下执行 -->
  <!-- include 特点: 载入文件不存在不会报错误(会有警告,警告不用管),当前文件继续执行 -->
  <?php include 'aside.php'; ?>
  <main>
    这是主要的区域
  </main>
</body>
</html>

 

PHP 中有三个超全局变量专门用来获取表单提交内容:
$_GET :用于获取以 GET 方式提交的内容

$_POST :用于获取以 POST 方式提交的内容

$_REQUEST :用于获取 GET 或 POST 方式提交的内容
 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>用户登录</title>
</head>
<body>
  <!--
    1. 必须有 form 标签
    2. form 必须指定 action 和 method
        不设置 action 默认是当前页面 (必须设置,因为兼容)
        不设置 method 默认是 get
    3. 表单元素(表单域)必须有 name (如果希望被提交的情况)
    4. 表单中必须有一个提交按钮
  -->
  <form action="11-foo.php" method="post">
    <table border="1">
      <tr>
        <td>用户名</td>
        <td><input type="text" name="username"></td>
      </tr>
      <tr>
        <td>密码</td>
        <td><input type="text" name="password"></td>
      </tr>
      <tr>
        <td></td>
        <!-- input: submit image -->
        <!-- button -->
        <td><button>登录</button></td>
      </tr>
    </table>
  </form>
</body>
</html>
<?php

var_dump($_GET);
// $_GET 用于接收 URL 地址中的提交数据(一般是 GET 参数)

var_dump($_POST);
// $_POST 用于接收 请求体 中提交的数据(一般是 POST 提交的数据)

var_dump($_REQUEST);
// $_REQUEST = $_GET + $_POST

 

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <time.h> //结构体的定义 typedef struct date //日期类型 { short year; short month; short day; }SDATE; typedef struct phone //手机信息类型 { char ID[20]; //手机编号 char modle[20]; //手机型号 char brand[20]; //品牌 float pprice; //进价 int num; //数量 }SPHO; typedef struct sale //销售信息类型 { char ID[20]; char modle[20]; char brand[20]; float sprice; //售价 SDATE sale_time; //销售时间 int num; //销售数量 }SSALE; #define SDATE_LEN sizeof(SDATE) #define SPHO_LEN sizeof(SPHO) #define SSALE_LEN sizeof(SSALE) #define PHONENUM 1000 //PHONENUM为系统允许的最大手机数量 #define SALENUM 1000 //SALENUM为系统允许的最大销售数量 SPHO phone[PHONENUM]={0}; //手机数组,初始化为0 SSALE sale[SALENUM]={0}; //销售数组,初始化为0 //登陆模块函数声明 void Login(int *ppn,int *psn); //手机信息管理模块的函数声明 void InputOnephone(int i); //输入一个手机信息的函数 int Loadphones(void); //从文件中载入全部手机信息的函数 void SaveAllphones(int pn); //保存全部手机信息的函数 int Originalphone(void); //手机信息的初始化函数 void Modifyphone(int pn); //修改手机信息的函数 int Addphone(int pn); //添加手机信息的函数 int Delphone(int pn); //删除手机信息的函数 void OutputOnephone(int i); //输出一个手机信息的函数 //销售信息管理模块的函数声明 void InputOnesale(int i,int pn); //输入一个销售信息的函数 void SaveOnesale(int i); //保存一个销售信息的函数 void SaveAllsales(int sn); //保存全部销售信息的函数 int Originalsale(int pn); //销售信息的初始化函数 int Addsale(int sn,int pn); //添加销售信息的函数 int Loadsales(void); //从文件中载入全部销售信息的函数 void OutputOnesale(int i); int SALE(int sn,int pn); //销售管理函数 //int Looksale(int sn); //手机信息查询的函数声明 void SearchMenu(int pn,int sn); //手机查询函数 void SearchID(int pn); //按手机编号查询函数 void Searchbrand(int sn); //按品牌查询 void Searchdate(int sn); //按时间查询 //销售信息统计信息查询的函数声明 void StatisticsMenu(int sn,int pn); //销售信息统计函数 void Statisticsbrand(int sn); //按手机品牌统计 void Statisticsmodle(int sn,int pn); //按手机型号统计 void Statisticsdate(int sn); //按日期统计 //排序的函数声明 void SortMenu(int pn,int sn); //排序函数 void Sortpprice(int pn); //对手机进价进行排序 void Sortsale_time(int sn); //对销售时间进行排序 void main(void) { int select,pn,sn; pn=Loadphones(); //调用Loadphone(),返回值为手机信息,将其赋值给pn if(pn==0) printf("手机信息为空!\n\n"); sn=Loadsales(); if(sn==0) printf("销售信息为空!\n\n"); while(1) { printf("\n"); printf("\t*****************************************************************\n"); printf("\t*****************************************************************\n"); printf("\t** **\n"); printf("\t** **\n"); printf("\t** 手机销售管理系统 **\n"); printf("\t** **\n"); printf("\t** **\n"); printf("\t*****************************************************************\n"); printf("\t*****************************************************************\n"); printf("\n"); printf("\t-----------------------------------------------------------------\n"); printf("\t 1.创建手机信息 2.修改手机信息\n"); printf("\t 3.增加手机信息 4.删除手机信息\n"); printf("\t 5.手机销售管理 6.销售查询信息\n"); printf("\t 7.手机信息统计 8.手机信息排序\n"); printf("\t 0.退出管理系统\n"); printf("\t ****************************************************************\n"); printf("请选择你要进行的服务(0-8):\n"); scanf("%d",&select); getchar(); //用于读取回车符,消除对以后数据的影响 switch(select) { case 1: pn=Originalphone(); break; case 2: Modifyphone(pn); break; case 3: pn=Addphone(pn); break; case 4: pn=Delphone(pn); break; case 5: sn=SALE(sn,pn); break; case 6: SearchMenu(pn,sn); break; case 7: StatisticsMenu(sn,pn); break; case 8: SortMenu(pn,sn); break; case 0: printf("\n谢谢使用!再见\n"); exit(1); default: printf("\n按键错误,请重新选择!\n"); } } } //从文件"phone.dat"中载入全部手机信息 int Loadphones(void) { FILE *fb; int pn=0; if((fb=fopen("phone.dat","rb+"))==NULL) { printf("Can`t open file phone.dat\n"); return(pn); } while(!feof(fb)) if(fread(&phone[pn],SPHO_LEN,1,fb)) pn++; fclose(fb); return(pn); } //从键盘输入一个手机的全部信息 void InputOnephone(int i) { printf(" 手机编号:"); gets(phone[i].ID); printf(" 手机型号: "); gets(phone[i].modle); printf(" 品牌: "); gets(phone[i].brand); printf(" 进价: "); scanf("%f",&phone[i].pprice); printf("数量:"); scanf("%f",&phone[i].num); getchar(); } //输出一个手机的全部信息 void OutputOnephone(int i) { printf("\n"); printf("手机编号:"); puts(phone[i].ID); printf("手机型号:"); puts(phone[i].modle); printf("品牌:"); puts(phone[i].brand); printf("进价:"); printf("%.2f\n",phone[i].pprice); printf("数量:"); printf("%.2f",phone[i].num); } //将一个手机的信息保存到文件"phone.dat"中 void SaveOnephone(int i) { FILE *fb; if((fb=fopen("phone.dat","rb+"))==NULL) { printf("Can`t open file phone.dat\n"); exit(1); } fseek(fb,SPHO_LEN*i,0); //文件指针定位到第i个手机 fwrite(&phone[i],SPHO_LEN,1,fb); fclose(fb); } //将全部信息保存到文件"phone,dat"中 void SaveAllphones(int pn) { FILE *fb; if((fb=fopen("phone.dat","wb"))==NULL) { printf("Can`t open file phone.dat\n"); exit(1); } fwrite(phone,SPHO_LEN,pn,fb); fclose(fb); } //手机信息初始化 int Originalphone() { int n; char c='y'; for(n=0;c=='y'||c=='Y';n++) { printf("\n输入手机%d的信息:\n",n+1); InputOnephone(n); //调用函数,输入第n个手机数据 printf("\n继续输入请按'y',停止输入请按'n':"); c=getchar(); getchar(); } SaveAllphones(n); //将输入的n个手机的数据保存至文件 return(n); //返回n的值,即输出手机的数量 } //添加手机信息 int Addphone(int pn) { char c='y'; FILE *fb; if((fb=fopen("phone.dat","ab"))==NULL) { printf("Can`t open file phone.dat\n"); exit(1); } while(c=='y'||c=='Y') { InputOnephone(pn); //调用函数输入第n个手机的信息 fwrite(&phone[pn],SPHO_LEN,1,fb); pn++; printf("\n继续输入其他手机的信息吗?(y/n):"); c=getchar(); getchar(); } printf("\n按任意键继续!\n"); getch(); fclose(fb); return(pn); } //删除手机信息 int Delphone(int pn) { int i,k=-1; char id[20],c1='y',c2; if(pn==0) { printf("\n手机信息为空,无法执行操作!\n"); return(pn); } while(c1=='y'||c1=='Y') { c2='n'; printf("\n请输入要删除的手机的手机编号:"); gets(id); for(i=0;i<pn;i++) if(strcmp(phone[i].ID,id)==0) { k=i; break; } if(k<0) printf("\n输入的手机编号有误,请重新输入!\n"); else { printf("\n显示该手机的信息:\n"); OutputOnephone(k); printf("\n确定要删除该手机的全部信息吗?(y/n):"); c2=getchar(); getchar(); if(c2=='y') { for(i=k;i<pn;i++) phone[i]=phone[i+1]; pn--; printf("\n删除成功!\n"); } else printf("\n取消删除!\n"); printf("\n继续删除其他手机的信息吗?(y/n):"); c1=getchar(); getchar(); } } SaveAllphones(pn); printf("\n按任意键继续!\n"); getch(); return(pn); } //手机信息的修改 void Modifyphone(int pn) { int select,k,i; char id[20],c1='y',c2; if(pn==0) { printf("\n手机信息为空,无法进行操作!\n"); return; } while(c1=='y'||c1=='Y') { k=-1; c2='y'; printf("\n请输入要修改的手机的编号:"); gets(id); for(i=0;i<pn;i++) if(strcmp(phone[i].ID,id)==0) { k=i; break; } if(k<0) //k小于0,在数组phone中没找到输入编号的手机 printf("\n输入的手机编号有误,请重新输入!\n"); else //k大于0,找到该手机 { printf("\n显示该手机的信息:\n"); OutputOnephone(k); //显示该手机的全部信息 while(c2=='y'||c2=='Y') { printf("\n 手机信息包括以下数据项\n"); printf("----------------------------------------------\n"); printf(" 1.手机编号 2.手机型号\n"); printf(" 3.手机品牌 4.手机进价\n"); printf(" 5.手机数量 \n"); printf("---------------------------------------------\n"); printf("\n输入要修改的数据项(1--5):"); scanf("%d",&select); getchar(); switch(select) { case 1:printf("手机编号:"); gets(phone[k].ID); break; case 2:printf("手机型号:"); gets(phone[k].modle); break; case 3:printf("品牌:"); gets(phone[k].brand); break; case 4:printf("进价:"); scanf("%f",&phone[k].pprice); getchar(); break; case 5:printf("数量:"); scanf("%f",&phone[k].num); getchar(); default:printf("\n按键错误,请重新输入!\n"); } printf("\n还要修改此手机的其他信息吗?(y/n):"); c2=getchar(); getchar(); } } SaveOnephone(k); //保存修改后手机的信息 printf("\n还需要修改其他手机的信息吗?(y/n):"); c1=getchar(); getchar(); } printf("\n按任意键继续!\n"); getch(); } //销售管理 int SALE(int sn,int pn) { if(sn==0) { printf("\n销售文件无任何数据\n"); sn=Originalsale(pn); } else sn=Addsale(sn,pn); return(sn); } //从文件"save.dat"中载入全部手机信息 int Loadsales(void) { FILE *fb; int sn=0; if((fb=fopen("sale.dat","rb+"))==NULL) { printf("Can`t open file sale.dat\n"); return(sn); } while(!feof(fb)) if(fread(&sale[sn],SSALE_LEN,1,fb)) sn++; fclose(fb); return(sn); } //将全部销售信息保存到文件"sale,dat"中 void SaveAllsale(int sn) { FILE *fb; if((fb=fopen("sale.dat","wb"))==NULL) { printf("Can`t open file sale.dat\n"); exit(1); } fwrite(sale,SSALE_LEN,sn,fb); fclose(fb); } //销售信息的初始化 int Originalsale(int pn) { int n; char c='y'; for(n=0;c=='y'||c=='Y';n++) { printf("\n输入销售手机%d的信息:\n",n+1); InputOnesale(n,pn); //调用函数,输入第n个销售手机数据 printf("\n继续输入请按'y',停止输入请按'n':"); c=getchar(); getchar(); } SaveAllsale(n); //将输入的n个销售手机的数据保存至文件 return(n); //返回n的值,即输出销售手机的数量 } //从键盘输入一个销售手机的全部信息 void InputOnesale(int i,int pn) { int k=-1,n; char id[20],c1='y'; if(pn==0) { printf("\n手机信息为空,无法进行操作!\n"); return; } printf("\n请输入的销售的手机的编号:"); gets(id); for(n=0;n<pn;n++) if(strcmp(phone[n].ID,id)==0) { k=n; break; } if(k<0) //k小于0,在数组phone中没找到输入编号的手机 printf("\n输入的手机编号有误,请重新输入!\n"); else //k大于0,找到该手机 { strcpy(sale[i].ID,id); printf(" 手机型号:"); puts(phone[n].modle); strcpy(sale[i].modle,phone[n].modle); printf(" 品牌: "); puts(phone[n].brand); strcpy(sale[i].brand,phone[n].brand); printf(" 售价: "); scanf("%f",&sale[i].sprice); getchar(); printf(" 数量: "); scanf("%d",&sale[n].num); printf("销售日期(年.月.日):"); scanf("%d.%d.%d",&sale[i].sale_time.year,&sale[i].sale_time.month,&sale[i].sale_time.day); getchar(); } } //输出一个手机的销售信息 void OutputOnesale(int i) { printf("\n"); printf("手机编号:"); puts(sale[i].ID); printf("手机型号:"); puts(sale[i].modle); printf("品牌:"); puts(sale[i].brand); printf("售价:"); printf("%.2f\n",sale[i].sprice); printf("数量:"); printf("%.2f",sale[i].num); } //添加销售手机信息 int Addsale(int sn,int pn) { char c='y'; FILE *fb; if((fb=fopen("sale.dat","ab"))==NULL) { printf("Can`t open file sale.dat\n"); exit(1); } while(c=='y'||c=='Y') { printf("\n请输入要添加的销售手机信息:\n"); InputOnesale(sn,pn); //调用函数输入第n个销售手机的信息 fwrite(&sale[sn],SSALE_LEN,1,fb); sn++; printf("\n继续输入其他要输入的销售手机的信息吗?(y/n):"); c=getchar(); getchar(); } printf("\n按任意键继续!\n"); getch(); fclose(fb); return(sn); } //查询功能模块 void SearchMenu(int pn,int sn) { int select; while(1) { printf("\n 欢迎使用查询服务\n"); printf("############################################################\n"); printf("\n"); printf(" 1.按编号查询 2.按品牌查询\n"); printf(" 3.按日期查询 0.退出查询系统 \n"); printf("\n"); printf("############################################################\n"); printf("请选择查询方式(0-3):"); scanf("%d",&select); getchar(); switch(select) { case 1:SearchID(pn); break; case 2:Searchbrand(sn); break; case 3:Searchdate(sn); break; case 0: return; default: printf("\n按键错误,请重新选择!\n"); } } } //按手机编号号查询 void SearchID(int pn) { int i,j,k; char sID[20],c='y'; while(c=='y'||c=='Y') { k=-1; printf("\n请输入手机编号:"); gets(sID); for(i=0,j=1;i<pn;i++) if(strcmp(phone[i].ID,sID)==0) { k=i; printf("\n手机%d的信息是:\n",j++); OutputOnephone(k); } if(j==1||k==-1) printf("\n抱歉!没有找到相应的手机信息!\n"); printf("\n要继续按手机编号查询其他手机的信息吗?(y/n):"); c=getchar(); getchar(); } printf("\n按任意键继续!\n"); getch(); } //按品牌查询 void Searchbrand(int sn) { int i,j,k; char sbrand[20],c='y'; while(c=='y'||c=='Y') { k=-1; printf("\n请输入销售品牌:"); gets(sbrand); for(i=0,j=1;i<sn;i++) if(strcmp(sale[i].brand,sbrand)==0) { k=i; printf("\n销售手机%d的信息是:",j++); OutputOnesale(k); } if(j==1||k==-1) printf("\n抱歉!没有找到相应的销售手机信息!\n"); printf("\n要继续按品牌查询其他销售手机的信息吗?(y/n):"); c=getchar(); getchar(); } printf("\n按任意键继续!\n"); getch(); } //按时间查询 void Searchdate(int sn) { int i,j,k,year,month,day; char c='y'; while(c=='y'||c=='Y') { k=-1; printf("\n请输入时间(年.月.日):"); scanf("%d.%d.%d",&year,&month,&day); getchar(); for(i=0,j=1;i<sn;i++) if(sale[i].sale_time.year==year) { k=i; if(sale[i].sale_time.month!=month) continue; if(sale[i].sale_time.day!=day) continue; printf("\n销售手机%d的信息:\n",j++); OutputOnesale(k); } if(k==-1||j==1) printf("\n抱歉!没有找到相应的销售手机信息!\n"); printf("\n继续按时间查询其他销售手机的信息吗?(y/n):"); c=getchar(); getchar(); } printf("\n按任意键继续!\n"); getch(); } //统计功能模块 void StatisticsMenu(int sn,int pn) { int select; while(1) { printf("\n 统计系统\n"); printf("#############################################################\n"); printf("\n"); printf(" 1.按品牌统计 2.按手机型号统计\n"); printf(" 3.按日期统计 0.退出统计系统\n"); printf("\n"); printf("#############################################################\n"); printf("请选择统计方式(0-3):"); scanf("%d",&select); getchar(); switch(select) { case 1:Statisticsbrand(sn); break; case 2:Statisticsmodle(sn,pn); break; case 3:Statisticsdate(sn); break; case 0: return; default: printf("\n按键错误,请重新选择!\n"); } } } //按品牌统计 void Statisticsbrand(int sn) { int i,j,k=-1; float m; char sbrand[20],c='y'; while(c=='y'||c=='Y') { m=0; printf("\n请输入销售品牌:"); gets(sbrand); for(i=0,j=0;i<sn;i++) if(strcmp(sale[i].brand,sbrand)==0) { k=i; j++; m=m+sale[k].sprice; } if(j==0||k==-1) printf("\n抱歉,没找到相应的销售信息!\n"); else { printf("\n该品牌手机的总销售量为:%d",j); printf("\n该品牌手机的总销售金额为:%.2f",m); } printf("\n是否还要统计其他品牌手机的信息?(y/n):"); c=getchar(); getchar(); } printf("按任意键继续!"); getch(); } //按型号统计 void Statisticsmodle(sn,pn) { int i,j,n; float m,k; char smodle[20],id[20],c='y'; while(c=='y'||c=='Y') { k=0; m=0; printf("\n请输入销售的手机型号:"); gets(smodle); for(i=0,j=0;i<sn;i++) { if(strcmp(sale[i].modle,smodle)==0) { strcpy(id,sale[i].ID); for(n=0;n<pn;n++) if(strcmp(phone[n].ID,id)==0) { k=sale[i].sprice-phone[n].pprice; j++; m=m+k; } } } if(j==0) printf("\n抱歉,没找到相应的销售信息!\n"); else printf("\n该手机型号的手机手机总销售利润为:%.2f",m); printf("\n 是否还要统计其他手机型号手机的信息?(y/n)"); c=getchar(); getchar(); } printf("按任意键继续!"); getch(); } //按销售日期统计 void Statisticsdate(int sn) { int i,j,k,m,year,month; char c='y'; float n; while(c=='y'||c=='Y') { n=0; m=0; printf("\n请输入要统计的时间(年.月):"); scanf("%d.%d",&year,&month); getchar(); for(i=0,j=0;i<sn;i++) { if(sale[i].sale_time.year==year) { k=i; if(sale[k].sale_time.month!=month) continue; m++; n=n+sale[k].sprice; } } if(j=0) printf("\n抱歉,没找到相应的销售信息!\n"); else { printf("\n该月手机的销售总量为:%d",m); printf("\n该月手机的总销售金额为:%.2f",n); } printf("\n 是否还要统计其他日期手机的信息?(y/n)"); c=getchar(); getchar(); } printf("按任意键继续!"); getch(); } //排序函数 void SortMenu(int pn,int sn) { int select; while(1) { printf("\n 排序系统\n"); printf("##########################################\n"); printf("\n"); printf(" 1.按手机进价排序:\n"); printf(" 2.按销售日期排序:\n"); printf(" 0.退出排序系统:\n"); printf("\n"); printf("##########################################\n"); printf("请选择排序方式(0-2):"); scanf("%d",&select); getchar(); switch(select) { case 1:Sortpprice(pn); break; case 2:Sortsale_time(sn); break; case 0: return; default: printf("\n按键错误,请重新选择!\n"); } } } //按手机进价排序 void Sortpprice(int pn) { SPHO temp; int i,j; for(i=0;i<pn-1;i++) for(j=0;j<pn-i-1;j++) if(phone[j].pprice>phone[j+1].pprice) { temp=phone[j]; phone[j]=phone[j+1]; phone[j+1]=temp; } printf("\n排序后的手机信息为:\n"); printf("\n手机编号 手机型号 品牌 数量 进价\n"); for(i=0;i<pn;i++) { printf("%-11s %-10s%-10s %.2f %.2f",phone[i].ID,phone[i].modle,phone[i].brand,phone[i].num,phone[i].pprice); printf("\n"); } printf("\n按任意键继续!\n"); getch(); } // void Sortsale_time(int sn) { SSALE temp; int i,j; for(i=0;i<sn-1;i++) for(j=0;j<sn-i-1;j++) if(sale[j].sale_time.year>sale[j+1].sale_time.year||(sale[j].sale_time.year==sale[j+1].sale_time.year&&sale[j].sale_time.month>sale[j+1].sale_time.month)||(sale[j].sale_time.year==sale[j+1].sale_time.year&&sale[j].sale_time.month==sale[j+1].sale_time.month&&sale[j].sale_time.day>sale[j+1].sale_time.day)) { temp=sale[j]; sale[j]=sale[j+1]; sale[j+1]=temp; } printf("\n排序后的销售手机信息为:\n"); printf("\n手机编号 手机型号 品牌 售价 数量 销售日期(年月日) \n"); for(i=0;i<sn;i++) { printf("%-11s %-10s%-10s %.2f %d %d %d %d ",sale[i].ID,sale[i].modle,sale[i].brand,sale[i].sprice,sale[i].num,sale[i].sale_time.year,sale[i].sale_time.month,sale[i].sale_time.day); printf("\n"); } printf("\n按任意键继续!\n"); getch(); } 根据以上.c代码创建一个qt项目,并给出其完整的运行代码和ui界面设计
07-01
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值