Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz
  • 0

Zapis danych z edycji strony do MySQL


Olekk

Pytanie

Opublikowano

Witam.

Mam stronę gdzie przy wejściu na nią z mysql odczytuje odpowiednie dane i je wyświetla odpowiednio sformatowane.

Następnie za pomocą js edytuję zawartość tej strony, cos na przykladzie;

Mam 10 buttonów: Paweł,Jarek,Andrzej,Krystian,Kamila,Paulina,Ewelina, Sławek,Bogdan,Olek.

3 osobne divy Kraków,Poznań i Warszawa gdzie wpisuje/usuwam te 10 osób za pomocą buttonów i combo(wybór Kraków,Poznań i Warszawa)

Na koniec, jak już sobie wszystko poukładam chciałbym to zapisać do bazy danych.

Jedyne co mi przychodzi do głowy to zbieranie poleceń dodania/usunięcia przy dobieraniu grup przez js, jednak wiąże się to z masą zapytań do bazy, oraz wydaje mi się to średnio bezpieczne aby zbierać zapytania do bazy w js.

 

Ma ktoś pomysł jak to rozwiązać w php?

 

3 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Opublikowano

A nie prościej byłoby po kliknięciu takiego przycisku zapisz, sprawdzić w którym divie jest jaki button, dalej zrobić to normalnie ajaxem, a po stronie PHP zwalidowac i zapisać do bazy.

Opublikowano
Dnia 7.11.2018 o 23:39, carbonx napisał:

A nie prościej byłoby po kliknięciu takiego przycisku zapisz, sprawdzić w którym divie jest jaki button, dalej zrobić to normalnie ajaxem, a po stronie PHP zwalidowac i zapisać do bazy.

Zrobiłem tak jak napisałeś, wyszło całkiem fajnie tylko ze czasami nie zapisuje mi wszystkich z jednego diva..

Może mam coś żle napisane, czy coś..

 Kod js do zapisu wygląda tak;

function save() {
	var place = [<?php $list = 0; 
	$len = count($incomleteItems);
	foreach ($incomleteItems as $key => $item) { 
$list++;
if ($list == $len) {
	echo "'".$item['place']."'";
} else {
	echo "'".$item['place']."',";
}
	}
	?>];
	
	for(var o = 0, element1; element1 = place[o]; o++){
	var people = [];
var nodesArray =  document.querySelectorAll("."+place[o]+" > div");
dataString = nodesArray ; 
for (var i = 0, element; element = dataString[i]; i++) {
  people.push(dataString[i].id);
}
var jsonString = JSON.stringify(people);
   $.ajax({
        type: "POST",
        url: "script.php",
        data: {data : jsonString,
		       misc : place[o]
		}, 
        cache: false,

    });
}
}

 

W czysty js bez php zeby było czytelniej ;

function save() {
	var place = ['Warszawa','Kraków','Świdnica'];
	
	for(var o = 0, element1; element1 = place[o]; o++){
	var people = [];
var nodesArray =  document.querySelectorAll("."+place[o]+" > div");
dataString = nodesArray ; 
for (var i = 0, element; element = dataString[i]; i++) {
  people.push(dataString[i].id);
}
var jsonString = JSON.stringify(people);
   $.ajax({
        type: "POST",
        url: "script.php",
        data: {data : jsonString,
		       misc : place[o]
		}, 
        cache: false,

    });
}
}

A tutaj php : script.php

 

<?php

require_once('dbconn.php');
$data = json_decode(stripslashes($_POST['data']));

$sqlIncomplete = "UPDATE listitems SET place = '' WHERE 1";
$result = mysqli_query($conn, $sqlIncomplete);

echo $_POST['misc']."<br>";
  foreach($data as $d){
     $sqlIncomplete = "UPDATE listitems SET place = '".$_POST['misc']."' WHERE name = '" .$d."'";
	 echo $d."<br>";
$result = mysqli_query($conn, $sqlIncomplete);
  
}
?>

Z tego co sprawdziłem do pliku php dochodzi bez problemu, błedu wtedy też żadnego nie zwraca..

 

@Editttttt

 

Dobra, po wstawieniu spojrzałem na to co wysłałem i sam widzę co tu jest żle XD

W php chciałem przy pierwszym wywołaniu wyczyścić wszystkie rekordy jeżeli chodzi o miejsce, no ale ktoś tu zapomniał wstawić warunek i przesłać dodatkową informację przez js ;/ 

4 godziny temu, Olekk napisał:

Zrobiłem tak jak napisałeś, wyszło całkiem fajnie tylko ze czasami nie zapisuje mi wszystkich z jednego diva..

Może mam coś żle napisane, czy coś..

 Kod js do zapisu wygląda tak;


function save() {
	var place = [<?php $list = 0; 
	$len = count($incomleteItems);
	foreach ($incomleteItems as $key => $item) { 
$list++;
if ($list == $len) {
	echo "'".$item['place']."'";
} else {
	echo "'".$item['place']."',";
}
	}
	?>];
	
	for(var o = 0, element1; element1 = place[o]; o++){
	var people = [];
var nodesArray =  document.querySelectorAll("."+place[o]+" > div");
dataString = nodesArray ; 
for (var i = 0, element; element = dataString[i]; i++) {
  people.push(dataString[i].id);
}
var jsonString = JSON.stringify(people);
   $.ajax({
        type: "POST",
        url: "script.php",
        data: {data : jsonString,
		       misc : place[o]
		}, 
        cache: false,

    });
}
}

 

W czysty js bez php zeby było czytelniej ;


function save() {
	var place = ['Warszawa','Kraków','Świdnica'];
	
	for(var o = 0, element1; element1 = place[o]; o++){
	var people = [];
var nodesArray =  document.querySelectorAll("."+place[o]+" > div");
dataString = nodesArray ; 
for (var i = 0, element; element = dataString[i]; i++) {
  people.push(dataString[i].id);
}
var jsonString = JSON.stringify(people);
   $.ajax({
        type: "POST",
        url: "script.php",
        data: {data : jsonString,
		       misc : place[o]
		}, 
        cache: false,

    });
}
}

A tutaj php : script.php

 


<?php

require_once('dbconn.php');
$data = json_decode(stripslashes($_POST['data']));

$sqlIncomplete = "UPDATE listitems SET place = '' WHERE 1";
$result = mysqli_query($conn, $sqlIncomplete);

echo $_POST['misc']."<br>";
  foreach($data as $d){
     $sqlIncomplete = "UPDATE listitems SET place = '".$_POST['misc']."' WHERE name = '" .$d."'";
	 echo $d."<br>";
$result = mysqli_query($conn, $sqlIncomplete);
  
}
?>

Z tego co sprawdziłem do pliku php dochodzi bez problemu, błedu wtedy też żadnego nie zwraca..

 

@Editttttt

 

Dobra, po wstawieniu spojrzałem na to co wysłałem i sam widzę co tu jest żle XD

W php chciałem przy pierwszym wywołaniu wyczyścić wszystkie rekordy jeżeli chodzi o miejsce, no ale ktoś tu zapomniał wstawić warunek i przesłać dodatkową informację przez js ;/ 

 

@Editttt

Kurde, jednak dalej czasami zdarza się że nie zapisze innych divów, wręcz jeszcze usuwa.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...