1

管理者が特定の数の bbcode タグと対応する html タグを追加することを選択できる Web サイトがあります。まず、for Each ループのドロップダウン選択フォームから、追加するタグの数を選択します。送信ボタンをクリックしたときに選択したタグの数に応じて、対応する数の入力タグが 2 番目のフォーム (これも for Each ループ) に表示されます。彼は bbcode と html 入力を入力し、送信ボタンをクリックします。通常、タグはデータベースに追加する必要がありますが、この場合、送信をクリックするとフォームが消え、何も追加されません..

コードは次のとおりです。

//FIRST FORM WHERE HE DECIDES HOW MANY TAGS TO ADD
<form id='nbbalises' action='config.ini.php' method='post' accept-charset='UTF-8'>
  <fieldset>
    <legend>How many tags ?</legend>
    <input type='hidden' name='submitted' id='submitted' value='1' /> 
    <?php

    echo '<select name="number">';
    $range = range(1,50,1);
    foreach ($range as $nb) {
      echo "<option value='$nb'>$nb</option>";
    }
    echo "</select>";

    ?>  

    <input type='submit' name='Submit' value='Submit' />
  </fieldset>
</form><br /> <br />




<?php 

if (!(empty($_POST['number']))) {
if ($_POST['number'] >= 1 && $_POST['number']<= 50){
    $number = $_POST['number'];
    $range2 = range(1,$number,1);
?>


//SECOND FORM WHERE I GENERATE THE INPUT DEPENDING ON THE NUMBER CHOSEN FROM FIRST FORM     
<form id='balises' action='config.ini.php' method='post' accept-charset='UTF-8'>
  <fieldset>
    <legend>Balises bbc : </legend>
    <input type='hidden' name='submitted' id='submitted' value='1' />

    <?php 

    foreach ($range2 as $nb2) {
      echo "<label>bbcode tag $nb2 :</label> 
        <input type='text' size='40' name='bbc$nb2' id='bbc$nb2' maxlength='40'  />
        <label>html tag $nb2 :</label> 
     <input type='text' size='40' name='html$nb2' id='html$nb2' maxlength='40'   />
         <br />";

     }

   }
   ?>
   <input type='submit' name='Submit2' value='Submit2' />
  </fieldset>
</form>

<?php 

//PROBLEM STARTS HERE, NOTHING WORKS UNDER HERE  
if (isset($_POST['Submit2'])){

  //CONNECT TO MY DATABASE      
  connectDB();
  for ($i=0; $i<$number ; $i++){

     if (!(empty($_POST["bbc$i"])) && (empty($_POST["html$i"]))) 

     //FUNCTION ADDS TAGS TO DATABASE       
     addBbc($_POST["bbc$i"], $_POST["html$i"]);


 }   
 mysql_close();
}

}


//MY FUNCTIONS TO ADD THE BBCODE AND HTML TO DATABASE


function connectDB(){
//connexion DB

$link = mysql_connect('127.0.0.1', 'USERNAME', 'PASSWORD');
if (!$link) {
    die('Erreur de connexion: ' . mysql_error());
}

$db = mysql_select_db('1213he200967',$link) or die("N'a pu selectionner
    1213he200967");    

mysql_query("SET NAMES 'utf8'");
    }


function addBbc($bbc, $html){

 $b = mysql_real_escape_string($bbc);
 $h = mysql_real_escape_string($html);


$query="INSERT INTO bbcode (BBC,HTML) VALUES ('$b','$h')";

$result = mysql_query($query) or  die("error");

if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    die($message);
    return false;
}
else return true;

   }

サイトはこんな感じ

どうもありがとうございました。私のコードがアマチュアっぽい場合は申し訳ありません。私は php から始めたばかりです。

編集 私の問題の一部が見つかりました

$number = $_POST['number'];
$range2 = range(1,$number,1);

これは、1 からユーザーが最初のフォームで選択した数までです。

for ($i=0; $i<$number ; $i++){

    if (!(empty($_POST["bbc$i"])) && (empty($_POST["html$i"]))) 

    //FUNCTION ADDS TAGS TO DATABASE       
    addBbc($_POST["bbc$i"], $_POST["html$i"]);

これは 0 から $number - 1 までです

だから私は自分のコードをこれに変更しました。

for ($i=0; $i<$number ; $i++){
  $nb = $i + 1;
  if (!(empty($_POST["bbc$nb"])) && (empty($_POST["html$nb"]))) {
    addBbc($_POST["bbc$nb"], $_POST["html$nb"]);
  }
  else echo "$nb tags empty ";

これは少しうまく機能しますが、すぐ上のelseに移動し、「2つのタグが空です」と表示されるため、まだ完全には機能しません.

4

2 に答える 2

0

それを解決するために、最終的に2番目のフォームから別のページにデータを投稿することに決め、コードをこれに変更しました。

for ($i=0; $i<$number ; $i++){
    $nb = $i + 1;

    $varBbc = 'bbc'.$nb;
    $varHtml = 'html'.$nb;

    if ((isset($_POST[$varBbc])) && (isset($_POST[$varHtml]))) {

        addBbc($varBbc, $varHtml);

    }

    else echo "$nb tags empty ";
}

この場合、 isset の代わりに !empty を使用しても機能しないようです。おそらく html タグが原因です。

于 2013-04-22T19:17:20.217 に答える
-1

$nb は二重引用符で囲む必要があります。

それでecho "<option value='$nb'>$nb</option>"

への変更echo "<option value='".$nb."'>$nb</option>";

そしてまた

if (!(empty($_POST['number']))) {
if ($_POST['number'] >= 1 && $_POST['number']<= 50){
    $number = $_POST['number'];
    $range2 = range(1,$number,1);
?>

への変更:

if (isset($_POST['submit'])) {
if ($_POST['number'] >= 1 && $_POST['number']<= 50){
    $number = $_POST['number'];
    $range2 = range(1,$number,1);
?>
于 2013-04-20T12:53:22.443 に答える