PHP-запрос для обновления таблицы с таким же идентификатором session_id - PullRequest
0 голосов
/ 27 ноября 2018

Я использовал session_id в качестве столбца ID в моей базе данных. Есть еще один столбец с именем Sections, в который добавлено целое xml.xml содержит названия разделов и количество времени, проведенного там пользователем.Я хочу обновить столбец Разделы для тех же идентификаторов сессии.Как я могу это сделать?Прямо сейчас он добавляет новую строку для каждой записи.Вот мой php код

$id=$_SESSION["id"];
$totaltime=$_POST['total'];
$HomeTime=$_POST['home'];
$ProductTime=$_POST['products'];
$ProcessTime=$_POST['process'];
$DevTime=$_POST['dev'];
$ContactTime=$_POST['contact'];


$xmlObject = <<<XML
<?xml version="1.0" encoding="UTF-8"?> 
<item>
    <section>
        <name>Home</name>
        <time>$HomeTime</time>
    </section>  
    <section>
        <name>Product</name>
        <time>$ProductTime</time>
    </section>
    <section>
        <name>Process</name>
        <time>$ProcessTime</time>
    </section>  
    <section>
        <name>Development</name>
        <time>$DevTime</time>
    </section>
    <section>
        <name>Contact</name>
        <time>$ContactTime</time>
    </section>
    </item>
XML;



    $sql = "INSERT INTO user_time (ID, Sections) VALUES ('$id', '$xmlObject')";

    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }

1 Ответ

0 голосов
/ 27 ноября 2018

Сначала извлеките существующие данные XML из базы данных, используя идентификатор сеанса, в котором они существуют, и сохраните их в переменной $xmlFromDB и выполните следующие шаги.В противном случае вставьте в БД.

if(session id exisits in db){
    //Fetch the table row or corresponding session id.
    //Extract times from XML using this code.

    $arr = [];
    $times = new SimpleXMLElement($xmlFromDB);
    foreach($times->section as $sec){
        $arr[$sec->name.""] = $sec->time;
    }
    extract($arr);

    //This will add previous value to new value.
    $HomeTime += $Home;
    $ProductTime += $Product;
    $ProcessTime += $Process;
    $DevTime += $Development;
    $ContactTime += $Contact;
}

//Now generate xml using your method.

$xmlObject = <<<XML
    <?xml version="1.0" encoding="UTF-8"?> 
    <item>
        <section>
            <name>Home</name>
            <time>$HomeTime</time>
        </section>  
        <section>
            <name>Product</name>
            <time>$ProductTime</time>
        </section>
        <section>
            <name>Process</name>
            <time>$ProcessTime</time>
        </section>  
        <section>
            <name>Development</name>
            <time>$DevTime</time>
        </section>
        <section>
            <name>Contact</name>
            <time>$ContactTime</time>
        </section>
        </item>
XML;

if(session id exists){
    //Then update the same row using the UPDATE  query.
    $sql = "UPDATE user_time SET Sections = '$xmlObject' where = '$id'";
}else{
    $sql = "INSERT INTO user_time (ID, Sections) VALUES ('$id', '$xmlObject')";
}

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
} 
...