IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Jan Sedlačík:11.3.2018 17:48

Ahojte, potřebuji zkopírovat celý řádek v databází a uložit jej znovu s upraveným datem.
Bohužel po vložení do databáze se datum vynuluje. Dogooglil jsem funkci "CAST as DATE" ale její použítí akorát způsobilo, že se mi řádek nevložil vůbec.

 $img=mysqli_fetch_assoc(mysqli_query($link,'SELECT * FROM xxx WHERE xxx_id = '.$_POST['potvrdit'].''));
    echo $img["datum"];

$sql2 = "INSERT INTO xxx (perioda, datum) VALUES (".$img['perioda'].','. $img['datum'] .")";
    $link->query($sql2);

Máte typ jak zkopírovat datum tak aby zůstalo datem?

Druhou fází pak bude přepis data na: datum+perioda. Tzn. vytvoření stejného řádku ale s jiným datem.
Pozn.: Perioda = počet měsíců v INT.

 
Odpovědět
11.3.2018 17:48
Avatar
Odpovídá na Jan Sedlačík
Martin Konečný (pavelco1998):11.3.2018 18:48

Ahoj, jaký datový typ má sloupec "datum" a jakou hodnotu vypisuje

echo $img["datum"]

?

Případně to stejné můžeš udělat rovnou v jednom SQL dotazu

$id = (int) $_POST["potvrdit"];  // pozor na SQL injection

INSERT INTO xxx (perioda, datum)
SELECT perioda, datum FROM xxx WHERE xxx_id = $id
Nahoru Odpovědět
11.3.2018 18:48
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Jan Sedlačík:11.3.2018 19:06

Datový typ je: Date
Echo vypisuje datum správně, tak jak je v databázi: 2018-03-09
Po Insert Into se uloží jako 0000-00-00

Databázi mám Xampp v phpmyadmin.

Udělat z toho jeden dotaz je zajímavý nápad. To vyzkouším, ale nemyslím, že by to vyřešilo problém.

 
Nahoru Odpovědět
11.3.2018 19:06
Avatar
Jan Sedlačík:11.3.2018 19:37

Tak potvrzuji, že udělat kopírování v jednom SQL dotazu problém s datem vyřešilo. Díky.

Teď už jen vyřešit přičtení periody k datu a bude. Něco jako "DATEADD(month, perioda, datum)" mi nefunguje, to bych chtěl asi moc.

INSERT INTO xxx (perioda, datum)
SELECT perioda, DATEADD(month, perioda, datum) FROM xxx WHERE xxx_id = $id
 
Nahoru Odpovědět
11.3.2018 19:37
Avatar
Nahoru Odpovědět
11.3.2018 22:23
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Odpovídá na Jan Sedlačík
Martin Konečný (pavelco1998):12.3.2018 0:37

Možná se mi to jen zdá, ale přijde mi, že špatně v tom SQL dotazu používáš apostrofy pro uvození textu / data. Pokud vkládáš čísla, tak bez apostrofů, texty a data s. Tedy:

INSERT INTO tabulka (a, b) VALUES (10, 50);

INSERT INTO tabulka (a, b) VALUES ('text', 'text');  // v MySQL můžeš použít i apostrofy místo uvozovek
INSERT INTO tabulka (datum) VALUES ('2017-05-04')

Ohledně problému s přidáváním data - osobně znám a používám funkci DATE_ADD() v MySQL. Zapisuje se ve tvaru

DATE_ADD(datum, INTERVAL počet perioda)

tedy např. pokud chci k datu přidat 5 dní, napíšu

DATE_ADD(datum, INTERVAL 5 DAY)

viz https://www.w3schools.com/…date_add.asp

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
12.3.2018 0:37
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Jan Sedlačík:12.3.2018 20:04

Dominik: Díky za tip. Něco takového bych volil, ale opět to vyžaduje vytáhnout datum do PHP a pak jej nalít zpět - takže by vznikl problém s nulováním data, který se vyřešil použitím jednoho SQL dotazu. Použít DATE_ADD v SQL se ukázalo velmi elegantním.

Martin: Děkuji moc za všechny tipy. Trochu jsem s tím bojoval ale už to šlape. Po kliknutí na tlačítko se řádek zapíše do databáze znovu ale s datem posunutým o počet měsíců daných v periodě. Paráda.

$sql2 = "INSERT INTO xxx (perioda, datum) SELECT perioda, DATE_ADD(datum, INTERVAL perioda MONTH),  FROM xxx WHERE xxx_id = '$xid'";
 
Nahoru Odpovědět
12.3.2018 20:04
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.