Avatar billede Slettet bruger
13. august 2017 - 18:50 Der er 5 kommentarer

Opdatere database

Hej,

Jeg vil høre om der er nogen der kan hjælpe med at tilpasse nedenstående kode, således at funktionen også kan opdatere og ikke bare indsætte i databasen?

<?php
require('connection.php');
$json = array();

$params = array();
parse_str($_POST['data'], $params);
$json['params'] = $params;
$json['test'] = "test";

foreach($params as $key => $value){
  $member = str_replace("member_", "", $key);
  foreach($value as $workout){
    if ($stmt = $conn->prepare("INSERT INTO `tbl_map_medlem_traeninger`
      VALUES(null,?,?)")) {
      $stmt->bind_param("ii", $member, $workout);
      $stmt->execute();
    }
  }
}

$conn->close();
header("Content-type:application/json");
echo json_encode($json);
?>
Avatar billede olsensweb.dk Ekspert
13. august 2017 - 19:38 #1
hvad indeholder  $params eller $_POST['data'] ??
indeholder den en id på den række der skal opdateres ?? ($member eller $workout er vel ikke unik i tabellen eller er det en sammensat nøgle)

lav en print_r($params) og skriv resultatet her

er det nødvendigt med de 2 foreach ??
Avatar billede Slettet bruger
13. august 2017 - 20:00 #2
{"params":[],"test":"test"}
Avatar billede olsensweb.dk Ekspert
13. august 2017 - 20:46 #3
virker din nuværende code med insert ??
den passer ihvertfald ikke med dine $params
Avatar billede Slettet bruger
13. august 2017 - 20:48 #4
Ja den virker med insert.
Avatar billede olsensweb.dk Ekspert
14. august 2017 - 12:05 #5
du kan ikke indsætte noget uden parameter med over.

>{"params":[],"test":"test"}
må stamme fra næst sidste limje
echo json_encode($json);

den burde have udskrevet noget ala
{"params":{"member_2":[7,6,4],"member_5":[9,10]},"test":"test"}


jeg kan regne ud du må overfører et multidim array af brugere og deres træninger.


du kan hente en liste af brugerens nuværende træninger og ligge dem i et array, og sammenligtne med det array du sender over for brugeren.

kig på http://php.net/manual/en/function.array-diff.php
men det er noget klodset løsning, da du skal sende alle brugerens træninger over hver gang, for at kunne se hvilke der skal slettes og hvilke der skal indsættes

måske man kunne bruge IN i mysql
https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_in


en anden og måske hurtige løsning: slet alle brugerens nuværende træninger, og så indsætte dem igen, da du sender alle brugerens træninger med over, men igen det er noget rod.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester