0

所以我在表格中有一个选择......

<select id="aca" name="aca">
  <option value="2012">2012-2013</option>
  <option value="2011">2011-2012</option>
  <option value="2010">2010-2011</option>
  <option value="2009">2009-2010</option>
  <option value="2008">2008-2009</option>
  <option value="2007">2007-2008</option>
  <option value="2006">2006-2007</option>
  <option value="2005">2005-2006</option>
</select>

看起来不错,对吧?然后我想检查是否设置了整个表单:

if(isset($_FILES['fichier']) && isset($_POST['nom']) && isset($_POST['a']) && isset($_POST['c']) && isset($_POST['t']) && isset($_POST['auteur']) && isset($_POST['aca'])) echo 'tout';

好吧,这总是返回 FALSE,我知道这是由于 'aca'。当我尝试...

if(isset($_POST['aca'])) echo 'aca';

如果我在列表中选择了某些内容,它会返回 TRUE ,而另一个条件仍然没有回显“tout”,所以我只看到“aca”。并且这条 js 行似乎不是问题,因为其他选择的返回 TRUE。

$("select").prop('selectedIndex', -1);

我真的不明白……哈普^^”

完整的 HTML:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>Upload</title>
  <link rel="stylesheet" href="style/upload.css"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="js/upload.js"></script>
</head>
<body>

<form method="post" action="" enctype="multipart/form-data">

<fieldset>
<legend>Informations d'upload</legend>
<p>Fichier (tous formats | max. 1 Mo):</p>
<input type="file" name="fichier" size="60"/><br/>
<p>Nom du fichier. Caractères utilisables: alphanumériques °*@()-_()</p>
<input type="text" name="nom" size="40"/>
</fieldset>

<fieldset>
<legend>Classification</legend>
<p>Merci d'indiquer où ce fichier devra être classé.</p>
  <select id="a" name="a">
    <option value="0">BA1</option>
  </select>
  <select id="c" name="c" style="display:none"></select>
  <select id="t" name="t" style="display:none"></select>
</fieldset>

<fieldset>
<legend>Détails</legend>
<p>Auteur:</p>
<input type="text" name="auteur" size="40"/>
<p>Année académique:</p>
<select id="aca" name="aca">
  <option value="2012">2012-2013</option>
  <option value="2011">2011-2012</option>
  <option value="2010">2010-2011</option>
  <option value="2009">2009-2010</option>
  <option value="2008">2008-2009</option>
  <option value="2007">2007-2008</option>
  <option value="2006">2006-2007</option>
  <option value="2005">2005-2006</option>
</select>
</fieldset>

<br/>

<div style="width:500px;text-align:center">
<input type="submit" name="submit" value="Envoyer" />
</div>

</form>
</body>
</html>

完整的PHP:

<?php
$formats = array('pdf');
echo strtolower(substr(strrchr($_FILES['fichier']['name'],'.'),1)).'<br/>';
if(isset($_POST['aca'])) echo 'aca';
if(isset($_FILES['fichier']) && isset($_POST['nom']) && isset($_POST['a']) && isset($_POST['c']) && isset($_POST['t']) && isset($_POST['auteur']) && isset($_POST['aca'])) echo 'tout';
if(preg_match("#^[a-zA-Z0-9éè°*@ ()_-]{10,50}$#",$_POST['nom']))
{
echo 'OK';
}
else echo 'Nope';
?>
4

2 回答 2

2

如果未选择任何内容,则该元素不会 POST 到服务器。您可以通过选择来解决此问题:

<select id="aca" name="aca">
  <option value="" selected="selected"> </option>
  <option value="2012">2012-2013</option>
  <option value="2011">2011-2012</option>
  <option value="2010">2010-2011</option>
  <option value="2009">2009-2010</option>
  <option value="2008">2008-2009</option>
  <option value="2007">2007-2008</option>
  <option value="2006">2006-2007</option>
  <option value="2005">2005-2006</option>
</select>

同样,如果您希望其他“选择”元素在不选择某些内容的情况下发布,则必须对它们执行此操作。

于 2013-01-25T02:09:44.690 回答
0

做一个 print_r($_POST) ,你将能够准确地看到设置了什么......

于 2013-01-25T02:09:40.750 回答