Есть ли способ дублировать данные перед публикацией в базу данных SQL с помощью PHP? - PullRequest
0 голосов
/ 03 января 2012

Есть ли способ поместить данные в два поля таблицы, если установлен флажок?

Так что на английском языке, как чисто гипотетический, у меня есть шесть полей и флажок в две строки. Первая строка, первое поле - это имя, второе - адрес, третье - электронная почта.

Что я хочу сделать, так это, если информация будет передаваться слева направо после публикации, человек должен поставить галочку.

Таблица будет иметь шесть полей.

name, address, email, name2, address2, email2.

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

Возможно ли это в PHP?

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

<?php

require_once('connectvars.php');
        $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
        or die('Error connecting to MySQL server.');
$output_form = 'yes';

echo '<div id="postwrap">'
?>

<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document Test</title>
<link rel="stylesheet" type="text/css" href="CSS/postie.css" />

</head>

<body>
<div id="title">
    <h3 id="NCMR2">Document Test</h3>
</div>
<?php
//Post Data
 if (isset($_POST['submit'])) {
    $ab = mysqli_real_escape_string($dbc, trim($_POST['ab']));
    $date = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime ($_POST['date']))));
    $part = mysqli_real_escape_string($dbc, trim($_POST['part']));
    $rev = mysqli_real_escape_string($dbc, trim($_POST['rev']));
    $partdesc = mysqli_real_escape_string($dbc, trim($_POST['partdesc']));
    $ncmrqty = mysqli_real_escape_string($dbc, trim($_POST['ncmrqty']));
    $ab2 = mysqli_real_escape_string($dbc, trim($_POST['ab']));
    $date2 = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime ($_POST['date']))));
    $part2 = mysqli_real_escape_string($dbc, trim($_POST['part']));
    $rev2 = mysqli_real_escape_string($dbc, trim($_POST['rev']));
    $partdesc2 = mysqli_real_escape_string($dbc, trim($_POST['partdesc']));
    $ncmrqty2 = mysqli_real_escape_string($dbc, trim($_POST['ncmrqty']));


    $output_form = 'no';

    if (empty($ab) || empty($date) || empty($part) || empty($partdesc)){

// We know at least one of the input fields is blank 
echo '<div id="alert">';
echo 'Please fill out all of the required NCMR information.<br />';
    echo '</div>';

}
    $output_form = 'yes';

}

//Access the Database
    if (!empty($ab) && !empty($date) && !empty($pod)) {
        $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
        or die('Error connecting to MySQL server.');

    $query = "INSERT INTO ncmr (ab, date, part, rev, partdesc, ncmrqty, ab2, date2, part2, rev2, partdesc2, ncmrqty2)

    VALUES ('$ab', '$date', '$part', '$rev', '$partdesc', '$ncmrqty', '$ab2', '$date2', '$part2', '$rev2', '$partdesc2', '$ncmrqty2')";

    mysqli_query($dbc,$query)
        or die ('Data not inserted.');

            // Clear the form data
    $ab = "";
    $date = "";
    $part = "";
    $rev = "";
    $partdesc = "";
    $ncmrqty = "";
    $ab2 = "";
    $date2 = "";
    $part2 = "";
    $rev2 = "";
    $partdesc2 = "";
    $ncmrqty2 = "";


      // Confirm success with the user
    echo '<tr><td class="thank">';
    echo '<p>Thank you for adding the NCRM, the correct person will be informed.</p>';
    echo '<p><a href="post.php">&lt;&lt; Back to the form</a></p>';
        $output_form = 'no';
    echo '</td></tr>';

    mysqli_close($dbc);
}
  if ($output_form == 'yes') {
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
        echo '<fieldset>';
        //Part, Rev, Part Description, NCMR Qty
            echo '<div id="box1">';
                echo '<div id="ab"><span class="b">Added By:&nbsp;&nbsp;</span><input type="text" name="ab" value="" /></div>';
                echo '<div id="date"><span class="b">Date Filed:&nbsp;&nbsp;</span><input type="text" name="date" value="" /></div>';
                echo '<div id="part"><span class="b">Part Number:&nbsp;&nbsp;</span><input type="text" name="part" value="" /></div>';
                echo '<div id="rev"><span class="b">Part Revision:&nbsp;&nbsp;</span><input type="text" name="rev" value="" /></div>';
                echo '<div id="partdesc"><span class="b">Part Description:&nbsp;&nbsp;</span><textarea name="partdesc" rows="4" cols="22" ></textarea></div>';
                echo '<div id="ncmrqty"><span class="b">NCMR Qty:&nbsp;&nbsp;</span><input type="text" name="ncmrqty" value="" /></div>';
            echo '</div>';


            echo '<div id="box2">';
                echo '<div id="ab2"><span class="b">Added By:&nbsp;&nbsp;</span><input type="text" name="ab2" value="" /></div>';
                echo '<div id="date2"><span class="b">Date Filed:&nbsp;&nbsp;</span><input type="text" name="date2" value="" /></div>';
                echo '<div id="part2"><span class="b">Part Number:&nbsp;&nbsp;</span><input type="text" name="part2" value="" /></div>';
                echo '<div id="rev2"><span class="b">Part Revision:&nbsp;&nbsp;</span><input type="text" name="rev2" value="" /></div>';
                echo '<div id="partdesc2"><span class="b">Part Description:&nbsp;&nbsp;</span><textarea name="partdesc2" rows="4" cols="22" ></textarea></div>';
                echo '<div id="ncmrqty2"><span class="b">NCMR Qty:&nbsp;&nbsp;</span><input type="text" name="ncmrqty2" value="" /></div>';
            echo '</div>';
                    echo '<div id="button3"><input type="submit" value="Submit NCMR" name="submit" /></div>';
            echo '</div>';
    echo '</fieldset>';
echo '</form>';
    }
echo '</div>';
?>
</body>
</html>

Ответы [ 2 ]

2 голосов
/ 03 января 2012

Установите имя для флажка, скажем " duplicateBox ", и установите его значение равным 1 при проверке.

<?php
    $name = $_POST['name'];
    $address = $_POST['address'];
    $email = $_POST['email'];
    $name2 = $_POST['name2'];
    $address2 = $_POST['address2'];
    $email2 = $_POST['email2'];
    $duplicate = $_POST['duplicateBox'];


    if($duplicate == 1)
    {
        $name2 = $name;
        $address2 = $address;
        $email2 = $email;
    }

    $insert = "INSERT INTO `table` (name,address,email,name2,address2,email2) VALUES ('$name','$address','$email','$name2','$address2','$email2')";
    mysql_query($insert)or die(mysql_error());
?>
0 голосов
/ 03 января 2012

Да, это возможно (вроде) сделать это с помощью условного оператора.Дело не в том, что вы публикуете повторяющиеся данные, а в том, что дублируете данные, которые уже опубликованы в вашем PHP-скрипте.Очень простой пример:

$fieldsToDuplicate = array('name', 'address', 'email');
if (isset($_POST['checkbox'] && 1 == $_POST['checkbox']) { 
    foreach ($fieldsToDuplicate as $value)
    {
        $_POST[$value.'2'] = $_POST[$value];
    } 
}

Хотя имейте в виду, что вы должны проверить и отфильтровать ввод, полученный от пользователя, прежде чем фактически манипулировать / вставлять в базу данных:)

Также возможнодублировать поля в HTML и дублировать данные с помощью Javascript, а затем обрабатывать их в PHP без каких-либо условий.

...