0

そして、私は再び PHP と MySQL を扱わなければなりません :) それで、私は mysql テーブルを持っていて、「追加」機能を持ちたいと思っています。そのため、ブラウザから簡単にテーブルを編集できます。これまでのところ、ほぼすべてのことを行ってきましたが、問題は、テーブル (または ID) の「番号」で構成される変数が他のページに _POST しないことです。textarea から直接 _POST することはありません。また、隠しフィールドに入れても (まあ、これはほとんど同じであることがわかりました)。

いくつかの例を示しましょう。

  $a = mysql_query("SELECT number FROM peoples ORDER BY number DESC LIMIT 1");
  $number_a = mysql_fetch_assoc($a);
  $number = $number_a['number']+1;`

それが私がこの変数を取得した方法です。

echo '<input name="id" type="hidden" value="'.$number.'"  />';

それが私がそれを渡す方法です。

echo $number = mysql_escape_string( $_POST['id'] );

それが私が他のphpファイルでそれを取得しようとした方法です。

他のテキストエリアからのものはすべて問題なく通過します。

要求された完全なコード。ADD.PHP:

<?php
$dblocation = "127.0.0.1";
    $dbname = "tvp";
    $dbuser = "root";
    $dbpasswd = "";
    $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
    if (!$dbcnx) 
    {
      echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому 
                корректное отображение страницы невозможно.</P>" );
      exit();
    }
    if (!@mysql_select_db($dbname, $dbcnx)) 
    {
      echo( "<P>В настоящий момент база данных не доступна, поэтому
                корректное отображение страницы невозможно.</P>" );
      exit();
    }   

    echo '<form name="editform" action="adder.php" method="POST">'; 
  echo '<table>'; 
  echo '<tr>'; 
  echo '<td>Номер</td>'; 
  $a = mysql_query("SELECT number FROM peoples ORDER BY number DESC LIMIT 1");
  $number_a = mysql_fetch_assoc($a);
  $number = $number_a['number']+1;


    echo $number;
    var_dump($number);
    print_r($number);
  echo '<td><textarea name="number" >'.$number.'</textarea></td>'; 
    echo '<input name="id" type="hidden" value="'.$number.'"  />';
  echo '</tr>'; 
  echo '<tr>'; 
  echo '<td>Имя</td>'; 
  echo '<td><textarea name="givenName">'.$man['givenName'].'</textarea></td>'; 
  echo '</tr>';
  echo '<tr>'; 
  echo '<td>Инициалы</td>'; 
  echo '<td><textarea name="middleInitial">'.$man['middleInitial'].'</textarea></td>'; 
  echo '</tr>';  
  echo '<tr>'; 
  echo '<td>Фамилия</td>'; 
  echo '<td><textarea name="surname">'.$man['surname'].'</textarea></td>'; 
  echo '</tr>'; 
 echo '<tr>'; 
  echo '<td>Пол</td>'; 


      echo '<td>   <input type="radio" name="gender" value=1 >Man<Br>
       <input type="radio" name="browser" value=0>Woman<Br> </td>'; 
      echo '</tr>'; 



  echo '<tr>'; 
  echo '<td>Город</td>'; 
  echo '<td><textarea name="city">'.$man['city'].'</textarea></td>'; 
  echo '</tr>';     
    echo '<input name="id" type="hidden" value="'.$id.'"  />';
    echo '<input name="statee" type="hidden" value="'.$man['state'].'"  />';
  echo '<tr>'; 
  echo '<td>Штат</td>';

    ?>
    <td><select size="3" name="state">
    <option disabled>Выберите штат</option>
    <option value="AL" 
    <?php 
    if($man['state']=="AL"){
    echo "selected";
    }?>
    >Alabama
    </option>
    //...and so on...
   </select></td>
<?php
   echo '</tr>';    

        echo '<tr>'; 
  echo '<td>Телефон</td>'; 
  echo '<td><textarea name="telephone">'.$man['telephone'].'</textarea></td>'; 
  echo '</tr>'; 

    echo '<tr>'; 
  echo '<td>E-mail</td>'; 
  echo '<td><textarea name="emailAddress">'.$man['emailAddress'].'</textarea></td>'; 
  echo '</tr>'; 

      echo '<tr>'; 
  echo '<td>Дата</td>'; 
  echo '<td><textarea name="birthday">'.$man['birthday'].'</textarea></td>'; 
  echo '</tr>'; 

    echo '<tr>'; 
  echo '<td>Место работы</td>'; 
  echo '<td><textarea name="occupation">'.$man['occupation'].'</textarea></td>'; 
  echo '</tr>'; 
      echo '<tr>'; 
   echo '<td>Компания</td>'; 
  echo '<td><textarea name="company">'.$man['company'].'</textarea></td>'; 
  echo '</tr>';

  echo '<tr>'; 
  echo '<td>Вес</td>'; 
  echo '<td><textarea name="weight">'.$man['weight'].'</textarea></td>'; 
  echo '</tr>';

    echo '<tr>'; 
  echo '<td>Рост</td>'; 
  echo '<td><textarea name="length">'.$man['length'].'</textarea></td>'; 
  echo '</tr>';

      echo '<tr>'; 
  echo '<td>Адрес</td>'; 
  echo '<td><textarea name="streetAddress">'.$man['streetAddress'].'</textarea></td>'; 
  echo '</tr>';

  echo '<tr>'; 
  echo '<td>Почтовый индекс</td>'; 
  echo '<td><textarea name="zipCode">'.$man['zipCode'].'</textarea></td>'; 
  echo '</tr>';

    echo '<tr>'; 
  echo '<td>Страна</td>'; 
  echo '<td><textarea name="country">'.$man['country'].'</textarea></td>'; 
  echo '</tr>';

    echo '<tr>'; 
  echo '<td><input type="submit" value="Сохранить"></td>'; 
  echo '<td><button type="button" onClick="history.back();">Отменить</button></td>'; 
  echo '</tr>'; 
  echo '</table>'; 
  echo '</form>'; 

  ?>

ADDER.PHP:

<?php
$dblocation = "127.0.0.1";
    $dbname = "tvp";
    $dbuser = "root";
    $dbpasswd = "";
    $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
    if (!$dbcnx) 
    {
      echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому 
                корректное отображение страницы невозможно.</P>" );
      exit();
    }
    if (!@mysql_select_db($dbname, $dbcnx)) 
    {
      echo( "<P>В настоящий момент база данных не доступна, поэтому
                корректное отображение страницы невозможно.</P>" );
      exit();
    }

$number=$_POST["id"]; echo '<br>';
var_dump($_POST['id']);
print_r($POST['id']);
echo $number;
echo $givenName = mysql_escape_string( $_POST['givenName'] ); echo '<br>';
echo $middleInitial = mysql_escape_string( $_POST['middleInitial'] ); echo '<br>';
echo $surname = mysql_escape_string( $_POST['surname'] ); echo '<br>';
echo $gender = $_POST['gender'] ; echo '<br>';
echo $city = mysql_escape_string( $_POST['city'] ); echo '<br>';
echo $state = mysql_escape_string( $_POST['state'] );echo '<br>';
echo $emailAddress = mysql_escape_string( $_POST['emailAddress'] );  echo '<br>';
echo $telephone = mysql_escape_string( $_POST['telephone'] );  echo '<br>';
echo $birthday = mysql_escape_string( $_POST['birthday'] );  echo '<br>';
echo $occupation = mysql_escape_string( $_POST['occupation'] );echo '<br>';
echo $company = mysql_escape_string( $_POST['company'] );    echo '<br>';
echo $weight = mysql_escape_string( $_POST['weight'] );  echo '<br>';
echo $length = mysql_escape_string( $_POST['length'] );  echo '<br>';
echo $streetAddress = mysql_escape_string( $_POST['streetAddress'] );  echo '<br>';
echo $zipCode = mysql_escape_string( $_POST['zipCode'] );  echo '<br>';
echo $country = mysql_escape_string( $_POST['country'] );  echo '<br>'; 



    $query = "INSERT INTO peoples (number,givenName, middleInitial, surname, gender, city, state, emailAddress, telephone, birthday, occupation, company, weight, length, streetAddress, zipCode, country) VALUES ( '".$number."', '".$givenName."', '".$middleInitial."', '".$surname."', '".$gender."', '".$city."', '".$state."', '".$emailAddress."', '".$telephone."', '".$birthday."', '".$occupation."', '".$company."', '".$weight."', '".$length."', '".$streetAddress."', '".$zipCode."', '".$country."');";
  mysql_query ( $query );

    ?>

前もって感謝します!

4

3 に答える 3

1

まず最初に。番号を画面にエコーアウトしていることを確認してください。あなたが書いたコードは正しいように見えますが、それは単なるスニペットです。

番号を割り当てた後に var_dump($number) を追加し、番号が表示されているかどうかを確認します。そうでない場合は、SQLに問題があります

于 2013-05-09T03:45:53.213 に答える
0

問題は、フォームの下部にある隠しフィールド ID を再割り当てすることです

ここ

  echo '<td><textarea name="city">'.$man['city'].'</textarea></td>'; 
  echo '</tr>';     
    echo '<input name="id" type="hidden" value="'.$id.'"  />';     <------- HERE
    echo '<input name="statee" type="hidden" value="'.$man['state'].'"  />';
  echo '<tr>'; 
  echo '<td>Штат</td>';

$id を number に割り当てたことはないと仮定しているので、フォームの上部で非表示フィールド ID を「$num​​ber」に割り当てますが、フォームの下部で非表示フィールド ID を $id に割り当てます。フォームの上部から元の id フィールドを上書きする

于 2013-05-09T04:12:59.160 に答える
0

あなたはechoingです!

echo $number = mysql_escape_string( $_POST['id'] );

それを次のように変更します。

$number = mysql_escape_string( $_POST['id'] );
echo $number;

あなたがechoそれを望むなら。

于 2013-05-09T03:41:50.130 に答える