@RRStoyanov Такой вид микрооптимизации не важен в 99,999% веб-разработки, и, конечно, он здесь не актуален.

я есть такая таблица:

$query = "select * from pharmacy";
$result = mysql_query($query);
$num = mysql_num_rows($result);
$num1 = mysql_num_fields($result);

if($num>0)
{
    echo "<table border=2>";
    for($i=0;$i<$num;$i++)
    {
        $row=mysql_fetch_row($result);
        echo "<tr>";
        echo"<td><input type='Checkbox' name='p$i'  value='yes' unchecked /></td>";
        echo"<td>$row[0]</td>";

        echo"</tr>";
    }

я хочу вставить отмеченные в другую мою таблицу в Mysql, как я могу вставить текст каждого флажка?

 ayush31 мая 2011 г., 11:03
не могли бы вы уточнить, что вы хотите?
 RRStoyanov31 мая 2011 г., 11:06
пожалуйста, предоставьте больше информации, потому что это очень непонятно в этом формате. Значение флажков? Вы устанавливаете все выбранные строки как непроверенные ... Вы имеете в виду, что хотите получить все строки и вставить их в другую таблицу, а затем обновить исходную таблицу с помощью какого-либо флага, который вы уже проверили выбранным? Или вы просто хотите каждый раз получать результаты из исходной таблицы и помещать их в другую таблицу? Будьте более конкретным, пожалуйста.
 Nickool31 мая 2011 г., 11:07
я хочу просто вставить отмеченные в другую таблицу, как это, у меня есть txt: 1 для флажка 1 и текст 2 для флажка 2 при выборе ckeck box один и нажав кнопку отправки, то выбранный один из флажков должен быть вставлен в еще одна таблица MySQL
 RRStoyanov31 мая 2011 г., 11:09
Боже мой Я думаю, вы имеете в виду, что вы хотите иметь HTML со всеми извлеченными строками + флажок. Чем вы хотите проверить результаты X из Y и вставить только те, которые отмечены в этой другой таблице.
 Nickool31 мая 2011 г., 11:06
Я могу использовать: if (isset ($ _ POST ['$ i']) && $ _ POST ['$ i'] == 'yes')

Ответы на вопрос(4)

Решение Вопроса

вы должны изменить этот HTML-код, чтобы флажок представлял собой массив

$query = "select * from pharmacy";
$result = mysql_query($query);
$num = mysql_num_rows($result);
$num1 = mysql_num_fields($result);

if($num>0)
{
    echo "<table border=2>";
    for($i=0;$i<$num;$i++)
    {
        $row=mysql_fetch_row($result);
        echo "<tr>";
        echo"<td><input type='Checkbox' name='pi[$i]' /></td>";
        echo"<td>$row[0]</td>";

        echo"</tr>";
    }

затем на странице действий

    foreach($_POST['pi'] as $key=>$value)
    {
    if($value=="on")
    {
    //DO THE INSERT CODE HERE
// the $key is the $i counter in the HTML
// the $value is whether the user selected it no in this case its just on/off
    }
    }
 cHao01 июн. 2011 г., 12:32
Нет веских причин для проверкиif ($value=='on'), Если флажок не установлен, он не будет в массиве.
 Nickool31 мая 2011 г., 12:27
MRR я нашел это: D спасибо! я использовал массив $ r [$ i] = $ row [0]; и затем: if ($ value == "on") {$ query2 = "вставить в значения наркотика (имя) ('$ r [$ key]')"; echo $ query2; $ result2 = mysql_query ($ query2); }
 Nickool31 мая 2011 г., 11:58
каково значение $ _POST ['pi'] здесь? это не мои наркотики, я думаю, может быть, я должен поставить <input type = 'Checkbox' name = 'pi [$ i]' value = $ row [0] />
 Nickool31 мая 2011 г., 11:33
для выполнения кода вставки я должен вставить $ row [0], как я могу поместить его здесь? моя проблема в этом, но вы решили мою проблему с массивом спасибо

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

Вот полный пример моего предложения:

list_drugs.php

$query = "select * from pharmacy";
$result = mysql_query($query);
$num = mysql_num_rows($result);

if($num>0) {
    echo '<table border="2">';
    while($row=mysql_fetch_array($result) {
        echo '<tr>';
        echo '<td><input type="checkbox" name="drugid_'.$row["PRIMARY_KEY_ID"].'" value="1" unchecked /></td>';
        echo '<td>$row[0]</td>';

        echo'</tr>';
    }
    echo '</table>';
}

do_update.php

<?php
foreach($_POST AS $k=>$x) {
    if(!preg_match("/[^drugid_*]/i", $k)) {
            if($x=="1") {
                $getOnlyTheDrugID=str_replace('drugid_','',$k);
                mysql_query('INSERT INTO otherTable SET columnName='.($drugid_+0).'');
            }
    }
}
 RRStoyanov31 мая 2011 г., 12:18
вижу, что я назвал все ваши входыdrugid_'.$row["PRIMARY_KEY_ID"].', когда вы отправляете, вы не хотите получать информацию из других входных данных, поэтому с preg_match мы получаем только проверенные.
 Nickool31 мая 2011 г., 12:53
спасибо Р.Р.Стоянов Идея массива сработала у меня и теперь я знаю решение
 Nickool31 мая 2011 г., 11:54
Р.С.Стоянов, я знаю, подчиняется и т. Д. Я не знаю, как работает функция preg_match?
 Nickool31 мая 2011 г., 11:45
Не могли бы вы объяснить do_update.php? я не могу понять
 RRStoyanov31 мая 2011 г., 11:47
потому что это мой код выполнения. если вы не хотите разделять его на два сценария, просто переместите содержимое (сверху) из do_update.php в list_drug.php. Вам также нужна форма и кнопка отправки, которые, я полагаю, есть в вашем коде.

Вы должны дать всем вашим флажкам одно и то же имя. Что-то вроде

<input type="checkbox" name="drugs[]" value="name of drug" />

Затем в вашем скрипте, который обрабатывает скрипт

for($i=0;$i<count($_POST['drugs']);$i++) {
    $query = "INSERT INTO table (ID, Drugname) VALUES ('', '$_POST['drugs'][$i]')";
}

Вы должны знать, как отправлять этот запрос каждый раз

 cHao01 июн. 2011 г., 12:26
@Negin: Полу. Вам нужно проверить, существует ли массив (так как он будет существовать, только если установлен хотя бы один флажок), но вы захотите проверить это внеforeach, И только отмеченные флажки будут включены в массив, поэтому, пока вы находитесь в пределах границ массива, каждый элемент должен иметь значение. Кроме того, в этом решении каждое поле будет иметь различное значение, поэтому вы не можете быть уверены, что оно будет «да».
 RRStoyanov31 мая 2011 г., 11:23
PHP убивает котенка каждый раз, когда вы звонитеcount внутри петли.count вызывается с каждым приращением. И пример не верный, потому что он хотел проверить.
 BoqBoq31 мая 2011 г., 11:22
но он хочет только проверенных ...
 meagar♦01 июн. 2011 г., 15:41
@RRStoyanov Такой вид микрооптимизации не важен в 99,999% веб-разработки, и, конечно, он здесь не актуален.
 Nickool31 мая 2011 г., 11:41
я думаю, что после for ($ i = 0; $ i <count ($ _ POST ['drug']); $ i ++) я должен написать if (isset ($ _ POST ['drug']) && $ _ POST ['drug' ] == «да») я прав?

Я бы порекомендовал использовать массивы POST / GET так:

<input type='Checkbox' name='p[]'  value='$i' unchecked />

После отправки формы вы получите массив значений вp переменная параметров запроса (POST / GET).

С этого момента довольно просто выбрать эти идентификаторы из исходной таблицы и вставить данные в новую.

Это будет выглядеть примерно так:

INSERT INTO `new_table` (firsT_column, second_column, third_column)
SELECT firsT_column, second_column, third_column
FROM `old_table`
WHERE id IN (<IDS>)

Естественно<IDS> тег должен быть заменен взорванной строкойp массив из до.

 Nickool31 мая 2011 г., 11:37
<input type = 'Checkbox' name = 'p []' value = '$ i' unchecked /> Вы имеете в виду что из тега? у меня есть только один столбец, и это мой $ row [0] из другой таблицы. Как мне вставить $ row [0]?
 BigFatBaby31 мая 2011 г., 12:59
@Negin: значение флажка должно быть идентификатором строки. Название флажков должно остаться таким же, как я опубликовал. это приведет к тому, что все проверенные значения заполнят массив с именемp

Ваш ответ на вопрос