看你图片上的表单设计,你都有“上传”按钮了,这就是等于已经把图片上传上去了(而此时表单的其他数据还没有提交)
一般来说,PHP做商品添加,表单的其他数据和图片的上传都是一起来提交的,而如果你要检查图片是否上传成功来决定是否提交其他表单数据的话,可以这样设计:
一、你现在的这个表单不用改,只需要在最下面的那个“确定”按钮上加个JS判断,判断一下上面的图片是否上传成功(如果图片上传这里成功上传了图片,你返回一个图片的保存路径及图片名称到一个隐藏的文本框里面,然后在“确定”按钮的JS代码里去取这个隐藏的文本框的值,如果有值就可以判定这个图片是上传成功的了,否则失败则整个表单的数据都不能提交)
二、图片上传框这里,确实因为表单不能嵌套,所以这个位置你就要采用一个iframe来加载另一个上传图片的页面(这个上传图片的页面代码很简单,就是那个图片上传框(当然你得加一些权限判断不然就会是一个上传漏洞了),然后写相应的上传代码把图片上传上去最后返回上传后的图片路径及文件名等信息,使用
parent.表单名.隐藏文本框名.value='xxxx.jpg'
这个JS语句来实现把你上传的图片信息保存到你的隐藏文本框里。
上面这句parent...语句的详解如下:
a.由于你的图片上传页面是放在iframe里的,因此你要把iframe里的页面的内容保存到上一层页面(即你这个添加商品的页面,也就是这个加了iframe代码的页面)
举例个吧:
你添加商品的页面文件名是a.php,在a.php的表单里你加了一个
这里面的b.php就是你的上传图片的页面(在b.php中就是你正常的上传图片的表单),另外你接收上传及处理上传的程序都是在这个iframe里面完成的。。
这样应该明白了吧。既然你的上传后的返回值是在iframe里的页面中的,那要想把它保存到a.php这个页面的一个隐藏文本框里,就要使用parent了。。。
所以上面那个js语句是:parent.表单名....
b.这个js语句parent.表单名.隐藏文本框名.value='xxx'中的“表单名”、“隐藏文本框名”,是指的a.php这个页面的表单名哦。
比如你a.php的表单是
上传成功后,你会返回一个路径到这个页面.这个页面应该有一个隐藏的表单.
然后你点提交的时候,判断这个隐藏的表单内容是否为空.如果为空就提示他还没上传图片.
你整个的提交.必须是图片上传完毕之后才可以.
虽然表单不能嵌套提交,但是你可以用隐藏的表单域来实现啊,具体你查下就知道了,很简单的