0

クエリでこの厄介な問題が発生しています。

フィールド idtbl_profissao(INT(11)、AI、UNSIGNED、NOT NULL)、 cbo(INT(6)、UNSIGNED、ZERO FILL)および profissao(VARCHAR(110))を持つテーブルtbl_profissaoがあります。

次のコードを使用して、クエリをprofissao_busca.phpprofissao_busca_input.phpの2 つの PHP ページに分割しました。

profissao_busca.php の場合:

<?php include "header.php"; ?>
<body>
<h2>PESQUISA: PROFISSÃO (CBO) </h2>
<form id="form_profissao_busca" method="post" action="profissao_busca.php?go">
<p>Por favor, escreva o número CBO da profissão que quer encontrar:<br/><br/>
<input name="busca_cbo" type="text" id="busca_cbo" size="11" maxlength="11" />
<input name="submit" type="submit" value="PROCURAR" /></p>
</form>
<?php
  if(isset($_POST['submit'])){
  if(isset($_GET['go'])){
  if(preg_match("/^[  a-zA-Z]+/", $_POST['busca_cbo'])){
  $name=$_POST['busca_cbo'];

    $db=mysql_connect  ("localhost", "root",  "root") or die ('Não foi possível conectar-se ao Banco de Dados (erro No.): ' . mysql_error());
    $mydb=mysql_select_db("grcc_db_pr");
    $sql="SELECT idtbl_profissao, cbo, profissao FROM tbl_profissao WHERE profissao LIKE '%$name%' OR idtbl_profissao LIKE '%$name%' OR cbo LIKE '%$name%'";
    $result=mysql_query($sql);
    while($row=mysql_fetch_array($result)){
        $Pessoa=$row['cbo'];
        $ident=$row['idtbl_profissao'];
        $prof=$row['profissao'];
  echo "<ul>\n";
  echo "<li> CBO requisitado: " . $Pessoa . "</li><li> Identificador: ". $ident . "</li><li>Ocupação:" . $prof . "</li><li>
  <form id=\"form_profissao_busca\" method=\"post\" action=\"profissao_busca_input.php?go\">
  <input name=\"button\" type=\"submit\" value=\"BUSCAR ESTE CBO\" />
  <input name=\"busca_cbo\" type=\"hidden\" value=\"". $ident. "\" /></form></li>\n";
  echo "</ul>";
  }
  }
  else{
  echo  "<p>Este número não existe no Banco de Dados</p>";
  }
  }
  }
?>
</body> 
</html>

profissao_busca_input.php の場合:

<?php include "header.php";
$nome_proc = $_POST['busca_cbo'];
        // ================== Dados pessoais e documentos
$listagem =  "SELECT idtbl_profissao, cbo, profissao FROM tbl_profissao WHERE profissao LIKE '%$name%' OR idtbl_profissao LIKE '%$name%' OR cbo LIKE '%$name%'";
$resultado = mysql_query($listagem);
$listagem = mysql_fetch_array($resultado);

print "<ul><li> CBO requisitado:  $listagem[1] </li><li> Identificador: $listagem[0] </li><li>Ocupação: $listagem[2] </li></ul>";

テーブルの小さなサンプルを次のように持っています。

idtbl_profissao,cbo,profissao

1,'010205','Oficial da aeronáutica'
2,'010210','Oficial do exército'
3,'010210','X5020'
4,'010215','Oficial da marinha'
5,'010215','X6020'
6,'010215','X6030'

問題は、「cbo」列に属する値を入力すると、結果が「Este número não existe no Banco de Dados」になることです (値がデータベースに存在しないことを意味します)。「profissao」列から単語または英数字の値を入力すると、正常に機能します。

「cbo」が INT 形式であるため、何が起こっているのかわかりません。

何はともあれ、ご清聴ありがとうございました。

ニコル

4

0 に答える 0