佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 987|回复: 18

PHP高手请帮帮忙...

[复制链接]
发表于 18-9-2008 03:15 PM | 显示全部楼层 |阅读模式
<h2>Register</h2>
<form action="index.php?option=com_php&Itemid=89" method="post">
<table cellspacing="3" cellpadding="3">
<?php

$search = array(1 =>'ALL','first_name','last_name','department','site_id','did','email','status');
echo '<tr><td><p>Search By</p></td>';
echo '<td><select name = "search">';
foreach($search as $key => $value){
echo "<option value = '$search[$key]'>$display[$key]</option>\n";
}
echo '</select></td></tr>';


$as = '';
require_once('C:\xampp\db_connect\mysqli_connect.php');
$q1 = "SELECT $as AS value FROM mm_emp_detail";
$r1 = @mysqli_query($dbc,$q1);
//$num1 = mysqli_num_rows($r1);
echo '<tr><td><p>AS</p></td>';
echo '<td><select name = "as">';
while($row1 = mysqli_fetch_array($r1,MYSQLI_ASSOC)){
echo '<option value = '.$row1['value'].'>'.$row1['value'].'</option>\n';
}

echo '</select></td></tr>';
?>

</table>

<p><input type="submit" name="submit" value="Search" /></p>
<input type="hidden" name="submitted" value="TRUE" />
</form>


上面的CODING,青色的是第一个LIST BOX,中间红色的是一个VARIABLE,下面蓝色的是另一个LIST BOX(这行不重要,只是放个完整的CODE).
能不能够当我一选了第一个LIST BOX之后,第一个LIST BOX的VALUE能够STORE进$as这个VARIABLE里?
给个例子,我第一个LIST BOX 选了first_name,first_name这个VALUE 就会STORE 进$as里面.

我不是PROGRAMMER ,但工作需要,请大家帮帮忙.谢谢.
回复

使用道具 举报


ADVERTISEMENT

发表于 19-9-2008 02:04 AM | 显示全部楼层
原帖由 翻天印 于 18-9-2008 03:15 PM 发表
Register










上面的CODING,青色的是第一个LIST BOX,中间红色的是一个VARIABLE,下面蓝色的是另一个LIST BOX(这行不重要,只是放个完整的CODE).
能不能够当我一选了第一个LIST BOX之后,第一个LIST B ...


你应该是要弄 chained list 吧
例如选择国家后 ,第 2 个 list 就是那个国家里的州属。

如果是的话,建议你用 javascript / ajax 来弄。(弄起来比较美)
要不然就在 select 里加个 onchange ,一旦选择后就会自动 form submit.(这是比较老的方法)

[ 本帖最后由 vampcheah 于 19-9-2008 02:05 AM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 19-9-2008 08:45 AM | 显示全部楼层
有人回复了,太好了...我要的就只是第一个LIST 选了first_name,$as 就会STORE AS first_name,不是chained list.

"在 select 里加个 onchange ,一旦选择后就会自动 form submit."我试了很多次,但都不成功....帮帮我吧,大哥,能给我一个概念如和使用onchange吗?
回复

使用道具 举报

发表于 19-9-2008 12:26 PM | 显示全部楼层
看你的问题你好像还没搞清楚 PHP HTML JAVASCRIPT 的概念。

你要的可能是这个,到 google 查这个关键字吧。XMLHttpRequest

趴帖去吧你会学的更多。
回复

使用道具 举报

发表于 19-9-2008 01:18 PM | 显示全部楼层
在php是不能像你讲得那样的。。。。。
$as是php的variable....

如果你要把first list的value在onchange的时候store 起来呢。。。
那么你需要一个hidden element, 然后当first list 在 onChange的时候,call 一个javascript的function,
把first list selected的value store 在那个hidden element 里面。。。。。

不知道是不是你要的。。。。。
参考下。。。
回复

使用道具 举报

发表于 19-9-2008 07:13 PM | 显示全部楼层
还原基本步
为什么要 store 进 一个 variable 里面?
你是想在 form submit 后得到 list 1 里面的数据?
在无刷新的底下,使list 1 的数据在其他区域(div 之类)出现?
list 1 的数据有助于填寫其他的资料栏?


必须先清楚你本身需要什么。不然你问到明年都很难回答你。
回复

使用道具 举报

Follow Us
发表于 20-9-2008 12:00 AM | 显示全部楼层
你编写程式码很乱。。。
把PHP 和 JavaScript 互相的使用就可以了。。
回复

使用道具 举报

 楼主| 发表于 22-9-2008 03:22 PM | 显示全部楼层
$as = '';
require_once('C:\xampp\db_connect\mysqli_connect.php');
$q1 = "SELECT $as AS value FROM mm_emp_detail";
$r1 = @mysqli_query($dbc,$q1);
//$num1 = mysqli_num_rows($r1);
echo '<tr><td><p>AS</p></td>';
echo '<td><select name = "as">';
while($row1 = mysqli_fetch_array($r1,MYSQLI_ASSOC)){
echo '<option value = '.$row1['value'].'>'.$row1['value'].'</option>\n';
}

echo '</select></td></tr>';


我要拿到第一个SELECT LIST的目的是要将它$as,然后跑上面这段CODE,就是让第二个SELECT LIST显示DATABASE里的DATA根据第一个SELECT LIST的变化. 举个例子,当第一个SELECT LIST 的选项是first_name,第二个SELECT LIST就会显示所有在DATABASE里, first_name整个COLUMN的DATA.

PHP 和JAVASCRIPT的结合,我试着,但不知道如和从JAVASCRIPT里将VALUE拿出来......
或者有没有其他的方法?
回复

使用道具 举报


ADVERTISEMENT

发表于 22-9-2008 08:54 PM | 显示全部楼层
原帖由 翻天印 于 22-9-2008 03:22 PM 发表
$as = '';
require_once('C:\xampp\db_connect\mysqli_connect.php');
$q1 = "SELECT $as AS value FROM mm_emp_detail";
$r1 = @mysqli_query($dbc,$q1);
//$num1 = mysqli_num_rows($r1);
echo 'AS';
echo  ...
这不就是我第一次就讲过了
这就是叫做 chained list.
2 个 list box
用第一个 list 里的value 引发 第 2个 list

建议你用ajax 来做,步骤可以简化很多。
一般上我是用 jquery 做的。
回复

使用道具 举报

发表于 23-9-2008 09:04 AM | 显示全部楼层
翻天印,首先你必须明白 (我也花了很长时间才分辨明白)
php 是 server site coding
她只能在 page loading 的时候执行。任何 user 在 web browser 的 activities (例如:textchange, onchange selection, button click 等等),server 都不会知道 (除非你 POST DATA)。也就是说,你不可能 onchange 你的 selection 然后期望可以 assign value 给 php variable, 除非你 submit form.

所以~~~就如 vampchead 说的,你只能用 ajax, 或者就 submit form, 来让你第二个 select list 变换。


给你一个 ajax 的 example....


把以下的 javascript, 放在你的 php code 里面, 把原本要放 selectionList2 的地方,放一个 DIV, id=divSelection2
********************************************************************************
<script language="javascript" type="text/javascript">
   var request = false;
   try {
     request = new XMLHttpRequest();
   } catch (trymicrosoft) {
     try {
       request = new ActiveXObject("Msxml2.XMLHTTP";
     } catch (othermicrosoft) {
       try {
         request = new ActiveXObject("Microsoft.XMLHTTP";
       } catch (failed) {
         request = false;
       }
     }
   }

   if (!request)
     alert("Error initializing XMLHttpRequest!";
</script>
<script type="text/javascript">
function SelectionList1_Change() {

            var selectedValuie = document.getElementById("UrSelectList1".options[document.getElementById("UrSelectList1".selectedIndex].value;
            var url = "./ajax_loadSelectionList2.php?value="+selectedValue;
            request.open("GET", url, true);
            request.onreadystatechange = updatePage;
            request.send(null);
            }

function updatePage() {
            if (request.readyState == 4) {
            if (request.status == 200) {
            var response = request.responseText.split("|";
                //alert(request.responseText);
               if (response[0] == 0) {                                      
                       document.getElementById("divSelection2".innerHTML =
                   response[1].replace(/\n/g, "";

               } else                     
                       document.getElementById("divSelection2".innerHTML =
                   response[1].replace(/\n/g, "";

                  
               } else
                 alert('Unable to process. Please try again');
               } else
               document.getElementById("divSelection2".innerHTML =
               '<b>loading, please wait</b>';
            }
</script>
------------------------------- 然后,create 一个file 叫ajax_loadSelectionList2.php-------------------------------------
<?
  if (isset($_GET['value'])){
          $as = $_GET['value'];
          require_once('C:\xampp\db_connect\mysqli_connect.php');
         $q1 = "SELECT $as AS value FROM mm_emp_detail";
         $r1 = @mysqli_query($dbc,$q1);
        //$num1 = mysqli_num_rows($r1);
         $returnValue = “<select name = \"as\">';
          while($row1 = mysqli_fetch_array($r1,MYSQLI_ASSOC)){
                       $returnValue .=  '<option value = '.$row1['value'].'>'.$row1['value'].'</option>\n';
          }

         $returnValue  .=  '</select>';


         echo "1|$returnValue";

  }else{
          echo "0|<font color=\"red\">Invalid parameter</font>";

  }
?>


******************************************** GOOD LUCK**********************************************

[ 本帖最后由 biau_dart 于 23-9-2008 09:06 AM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 23-9-2008 04:09 PM | 显示全部楼层
biau_dart,谢谢你的CODE,但看不是很明白,我研究一下才看要怎样放进去...
谢谢大家的帮忙,我成功了会再会来跟大家道谢的
回复

使用道具 举报

发表于 23-9-2008 10:25 PM | 显示全部楼层
原帖由 biau_dart 于 23-9-2008 09:04 AM 发表
翻天印,首先你必须明白 (我也花了很长时间才分辨明白)
php 是 server site coding
她只能在 page loading 的时候执行。任何 user 在 web browser 的 activities (例如:textchange, onchange selection, button ...
长到很够力

我都忘了ajax 的写法
都是直接用 jquery ,懒人一个(我)
回复

使用道具 举报

 楼主| 发表于 24-9-2008 09:19 AM | 显示全部楼层
哇,救命啊....我完全不知道如何将您的CODE跟我的CODE融合....那一段是用来DETECT SELECT LIST1变化,如何设定DIV....您的CODE我看不是很明白,不知到如何加进去.....对不起
回复

使用道具 举报

发表于 24-9-2008 04:34 PM | 显示全部楼层
今天心情好,人品爆发一下。
用jquery 写的方式解释一下给你听。

首先你必须知道整个流程,
1)html 里的 id(或class)是一个很重要的角色,他们负责把 value 带上来。
2)css -> onchange 的用途,一旦有更改(select),数据马上进行处理
3)用 javascript 把 value 送去 process.php
4)return 回来的value 进行处理(如加进select 或 input 里)

---------- html code -------------------
<script type="text/javascript" src="jquery.js"></script>   
<script type="text/javascript">
function show_second() {
    var first = $("#first_list".val();

    $.ajax({url: 'process.php',
        type: 'GET',
        data:"var=1234&first_choice="+first,
        dataType: 'html',
        timeout: 1000,
        error: function(){alert('Error loading.');},
        success: function(result){$('#ref').html(result);}
    });
}
</script>
<select name="first_list" id="first_list" >
<option value="1">the option 1</option>
<option value="2">the option 2</option>
<option value="3">the option 3</option>
</select>

<select name="second_list" id="second_list">
</select>

------------ 以下是 process.php ---------------
<?php
// 由于我 define 的是 get
$the_value = $HTTP_GET_VARS['first_choice'];
/*
你的sql 搜索就在这里运行
*/
// result 记得是用 <option></option> 的 format 哦
echo $result;
?>

由于是直接在论坛写出来,可能里面会有一点错漏
回复

使用道具 举报

 楼主| 发表于 25-9-2008 08:58 AM | 显示全部楼层
首先要特别感谢vampcheah和biau_dart.谢谢你们的热心帮助,还有谢谢大家的回复.
虽然我还是我法将你们的CODE和我的CODE融合...
试了好多次还是不行,看来不知己去了解,还是不行的...谢谢大家,我会去翻一翻AJAX的书来看一看...
回复

使用道具 举报

发表于 25-9-2008 11:16 AM | 显示全部楼层
大家好...
你们都是自修AJAX吗???
我有试过在网上找tutorial....
但是还不是很明白如何可以掌握....
请大家指教....
回复

使用道具 举报


ADVERTISEMENT

发表于 26-9-2008 03:43 PM | 显示全部楼层
厚…………居然看不懂我的code?? 哈哈哈哈, 好,就送佛送到西!~~~

example 看着里 : http://www.iatahni.com/test.php
哈哈,顺便可以成为会员 http://www.iatahni.com, 我公司的 portal (汶莱)

如果要 source code, 这里:http://www.iatahni.com/ajaxSample.rar

学会了要通知一声 哦!!
回复

使用道具 举报

发表于 26-9-2008 03:46 PM | 显示全部楼层
对了………… 什么是 jquery? jquery.js, 网上有的下载?
回复

使用道具 举报

发表于 14-10-2008 09:52 PM | 显示全部楼层
原帖由 biau_dart 于 26-9-2008 03:46 PM 发表
对了………… 什么是 jquery? jquery.js, 网上有的下载?


www.jquery.com
不懂要如何定义。。
简单来讲它是一个standard的java script / ajax的framework..
里面有很多librarary可以用。
我们可以通过参考它所给的API来启动它的functions,
接着你不需要完全懂怎么写ajax,不用再去dynamicdrive.com了,
却可以做到ajax tabs, ajax query。。ajax只是它其中一个元件而已。
现在很多web development都走jquery路线了。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-12-2025 01:34 AM , Processed in 0.181611 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表