Są to dość teoretyczne rozwarzania, a kod jest napisany przez mnie z czystej ciekawości czy coś takiego da się zrobić, taki system poprawiania "hurtowo"danych z DB.
I. pobiera dane z DB
II. wyświetlam je w formularzu
III pola formularza mają nazwę: ++i
IV. poprawiam co potrzebóje
V. przy pomocy pętli for updejtuje DB
teraz kod:
try { $pdo = new PDO('mysql:host=localhost;dbname=niop', 'niop, 'niop'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); #echo 'ok'; $arg1nr=0; //pobieram dane z DB i wyświetlam w inpucie $sql = $pdo->query("SELECT arg1, arg2, addinf FROM ang_in_on_at"); while($row = $sql->fetch()) { $arg1=$row['arg1']; $arg2=$row["arg2"]; $addinf=$row["addinf"]; echo ' <form action="delete1.php" method="post"> <input type="text" name="'. ++$arg1nr .'" value="'.$arg1 .'">'; //nazwa inputa przyrasta o 1 } echo ' <input type="submit" name="button" value="send"> </form>'; $sql = $pdo -> prepare("SELECT COUNT(arg1) FROM `ang_in_on_at`"); //sprawdzam ile wierszu ma DB, aby ograniczyć ilość obrotów pętli $sql -> execute(); $countrow = $sql -> fetch(); echo 'points: ' .$countrow[0] .'<br />'; if ($_POST["button"]=='send') { for ($arg1nr=0;$arg1nr<=$countrow[0];++$arg1nr) //chcę by przy każdym ruchu pętli dodawał się kolejny rekord DB, z danymi wpisanymi do formularza, z których te które trzeba będa poprawione { print $_POST[$arg1nr]; #$sql = $pdo->query("UPDATE ang_in_on_at SET `arg1`='$_POST[$arg1nr]'"); #echo $arg1nr; #var_dump($_POST); } } } catch(PDOException $e) { echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); } ?>
Wszystko działa pięknie do momentu update. Skrypt czyści wszystkie pola kolumny tabeli, zamiast dodawać poprawione dane.
Dlatego moje pytanie brzmi, czy to w ogóle da się zrobić? A jeżeli tak, to gdzie mam zacząć szukać błędu? Sprawdziłam, tablica POST na pewno poprawnie przejmuje dane z formularza. Czyli problem jest gdzieś w miejscu wkładania ich do DB. Tylko gdzie?