简体   繁体   English

PHP 如果选择单选按钮,则填充文本字段

[英]PHP If radio button selected, fill text field

I have been trying to figure this little problem out and am about ready to pull my hair out lol.我一直在努力解决这个小问题,并且准备把我的头发拉出来哈哈。 I am more of a designer than I am a programmer, but I have created a submit form in php for my school.我更像是一名设计师而不是一名程序员,但我已经为我的学校创建了一个 php 提交表单。 Here is the test form I am working on:这是我正在处理的测试表格:

http://www.inrf.uci.edu/php-form-test/ http://www.inrf.uci.edu/php-form-test/

What I am trying to do is when a person selects External user, they should be required to fill out their Company Name.我想要做的是当一个人选择外部用户时,他们应该被要求填写他们的公司名称。 When someone selects Internal user, they are required to fill out their Group/PI name.当有人选择内部用户时,他们需要填写他们的组/PI 名称。 Well this isn't working.好吧,这是行不通的。 When I select Internal, it's supposed to require only Group/PI name and not Company name.当我选择内部时,它应该只需要组/PI 名称而不是公司名称。 I would appreciate any assistance.我将不胜感激任何帮助。 Thank you!谢谢!

Here is my PHP code here:这是我的PHP代码:

// internal selected (group pi)

if ($userType == 'internal') {
    $internalChecked = ' checked="checked" ';
} else {
    if(trim($_POST['grpPI']) === '') {
        $grpPIError = '<span class="error">Please enter your group or PI name.</span>';
        $hasError = true;
    } else {
        $grpPI = trim($_POST['grpPI']);
    }
}

    }

// external selected (company name)

 if ($userType == 'external') {
    $externalChecked = ' checked="checked" ';
 } else {
    if(trim($_POST['companyName']) === '') {
        $companyNameError = '<span class="error">Please enter your company name.</span>';
        $hasError = true;
    } else {
        $companyName = trim($_POST['companyName']);
    }
 }

and HTML here:和这里的 HTML:

<table class="usertype" id="usertype">   

                         <tr>
                           <td colspan="2">
                             <input type="radio" name="userType" value="external" <?php echo $externalChecked; ?>>External 
                             <select name="externalSelect" size="1">
                               <option selected="selected">Select</option>
                               <option>Academic</option>
                               <option>Non-Profit</option>
                               <option>Commercial</option>
                           </select><?php if($externalError != '') { ?><span class="error"><?=$externalError;?></span><?php } ?></td>
           </tr>
                         <tr>
                           <td colspan="2"><label for="companyName">Company Name:</label> 
                           <input type="text" size="40" name="companyName" id="companyName" value="<?php if(isset($_POST['companyName'])) echo $_POST['companyName'];?>" />
                <?php if($companyNameError != '') { ?>
                <span class="error"><?=$companyNameError;?></span><?php } ?></td>
                         </tr>
                         <tr>
                           <td colspan="3"><input type="radio" name="userType" value="internal" <?php echo $internalChecked; ?>>Internal &nbsp;&nbsp;&nbsp;&nbsp;<input title="Enter Account String. Required for Internal Users." type="text" size="30" name="ucfund" value="<?php if(isset($_POST['ucfund'])) echo $_POST['ucfund'];?>" placeholder="KFS or Account (eg. xxxxxxx)" /><?php if($ucfundError != '') { ?><span class="error"><?=$ucfundError;?></span><?php } ?>&nbsp;-&nbsp; <input title="Enter Fund String. Required for Internal Users." type="text" size="25" name="ucfund2" value="<?php if(isset($_POST['ucfund2'])) echo $_POST['ucfund2'];?>" placeholder="Fund (eg. xxxxx)" /><?php if($ucfund2Error != '') { ?><span class="error"><?=$ucfund2Error;?></span><?php } ?><br /><span class="small">(Please enter KFS number or Accound Fund)</span>
</td>
                         </tr>

                         <tr>
                           <td colspan="3">Optional&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" size="30" name="sub" value="<?php if(isset($_POST['sub'])) echo $_POST['sub'];?>" placeholder="Sub" /><?php if($subError != '') { ?><span class="error"><?=$subError;?></span><?php } ?>&nbsp;-&nbsp; <input type="text" size="25" name="proj" value="<?php if(isset($_POST['proj'])) echo $_POST['proj'];?>" placeholder="Project" /><?php if($projError != '') { ?><span class="error"><?=$projError;?></span><?php } ?>
</td>
                         </tr>
                         <tr>
                           <td colspan="3"><label for="grpPI">Group / PI:</label> 
                           <input type="text" size="40" name="grpPI" id="grpPI" value="<?php if(isset($_POST['grpPI'])) echo $_POST['grpPI'];?>" />
                <?php if($grpPIError != '') { ?>
                <span class="error"><?=$grpPIError;?></span><?php } ?></td>
                </tr>

      </table>

Note your logic:注意你的逻辑:

if ($user == 'internal') {
   ...
} else {
   ... check for empty field ...
}

So if a user select 'external', then the "internal-only" field will be empty, and you force an error.因此,如果用户选择“外部”,则“仅限内部”字段将为空,并且您会强制出错。 why should the internal-only field be set since the user selected "external".为什么要设置内部字段,因为用户选择了“外部”。

Similarly for your external check, the internal-only field will be blank and you force another error.同样,对于您的external检查,内部专用字段将为空白,并且您强制另一个错误。

You need an else clause to tie those two if() statements together, so that only ONE of the two code paths executes:您需要一个else子句将这两个if()语句联系在一起,以便只有两个代码路径中的一个执行:

if ($user == 'internal') {
   ... do internal-only checks ...
} else if ($user == 'external') {
   ... do external-only checks ...
} else {
   ... $user is undefined type, "zomg how'd you get here" error handling.
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM