2013-04-20 3 views
1

У меня есть сайт, на котором администратор может выбрать добавление определенного количества тегов bbcode и соответствующих тегов html. Сначала он выбирает, сколько тегов он хочет добавить из выпадающей формы выбора в a для каждого цикла. В зависимости от того, сколько тегов он выбрал, когда он нажал кнопку отправки, соответствующее количество входных тегов появляется во второй форме, а также в каждом цикле. Он заполняет вход bbcode и html и нажимает кнопку отправки. Обычно теги должны быть добавлены к моей базе данных, но в этом случае, когда он нажмет представить форму исчезает и ничего не добавляется ..PHP - Возвращение Post from forEach select form

Вот код:

//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; 

    } 

Heres is what the site looks like

Спасибо очень много, и извините, если мой код является любительским, я только начинаю с 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 до $ количество - 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 "; 

Это работает немного лучше, но теперь он идет в другой раз здесь выше, и отображает «2 Метки пустые», так что до сих пор не совсем работает.

+0

Что такое 'action = 'config.ini.php''? Это тот же файл? – Havelock

+0

Да, я публикую эту же страницу – user1895293

+0

Я начал подозревать, что ошибка может происходить из нескольких форматов/сообщений на ту же страницу – user1895293

ответ

0

Ok, чтобы решить, я, наконец, решил опубликовать данные из второго формы на другую страницу, и я изменил свой код на этот ,

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 "; 
} 

По-видимому, использование! Empty вместо isset не работает в этом случае, возможно, из-за тегов html.

-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); 
?> 
+0

Извините, но ни одно из ваших решений не работало. Это '' просто отображает $ nb 50 раз, а изменение пустого номера на isset submit ничего не меняет. Спасибо за ваш ответ – user1895293

+0

В каком юниверсе выполняется переменная в * одинарной кавычке *, строка разбирается? – Havelock

+0

@ Хавелок, это была опечатка.спасибо – Amir