Dzień dobry,
Mam taki testowy kod:
<?php // Create connection $conn = mysqli_connect("localhost", "", "", “"); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // prepare and bind $array = array( array("Ekranowanie kompletne", "Montaż przetwornika", "Złożenie gitary"), array("1", "2", "1"), array("60", "100", "400") ); $first = array_column($array,0); $second = array_column($array,1); $third = array_column($array,2); $uslugi = array($first, $second, $third); if(is_array($uslugi)) { foreach($uslugi as $row => $value) { $item_name = $value[0]; $qty = $value[1]; $price= $value[2]; $stmt = $conn->prepare("INSERT INTO orderList (item_name, qty, price) VALUES (?, ?, ?)"); $stmt->bind_param("sii", $item_name, $qty, $price); $stmt->execute(); } } if ($stmt) { echo "Wprowadzono dane do bazy"; } else { echo "Wprowadzenie danych nie udane"; } $stmt->close(); $conn->close(); ?>
stworzyłem ten kod i działa prawidłowo ale tu na sztywno do testowania jest $array z 3-ma usługami a ja nie wiem ile tych usług w zleceniu będzie, może tylko jedna, może dwie a może 5.
Chodzi o to jak to zrobić żeby jeżeli jest jedna usługa była tylko jedna zmienna $first do przetworzenia, a jak trzy usługi to żeby był: $first, $second i $third i tak oczywiście odpowiednio tyle zmiennych ile będzie usług.
Mnie nawet nie chodzi o gotowy kod tylko jakąś poradę jak do tego podejść bo już z trzy tygodnie nad tym siedzę a może i dłużej i stoję.
Dzięki!
2 Odpowiedzi
Hej Mariusz,
w przykładzie nie widzę, skąd przypisujesz nazwy usług do zmiennej $array, stąd pewnie da się to zrobić lepiej cofając się o krok wstecz. Jednak, mając przykładowo 5 usług:
<?php $array = array( array("Ekranowanie kompletne", "Montaż przetwornika", "Złożenie gitary", "Zmiana strun", "Regeneracja progów"), array("1", "2", "1", "6", "2"), array("60", "100", "400", "10", "30") ); $uslugi = array(); for ($i = 0; $i < count($array[0]); $i++) { $uslugi[] = array_column($array, $i); }
Na pierwszy rzut oka powinno zadziałać. Sprawdź proszę i daj znać.