scadere o zi la o variabila tip data

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
andras
Mesaje:430

scadere o zi la o variabila tip data

Salut,
Am o variabila tip data (vine ca POST din element type="date") si are valoarea (exemplu)

Cod: Selectaţi tot

$v2= '2016-04-02';
Cind vreau sa scad o zi cu intructiunea :

Cod: Selectaţi tot

$v3= date('Y-m-d', strtotime($v2. ' - 1 day'));
imi afiseaza 1970-01-01 si nu '2016-04-01' cum ar fi normal. Care sa fie cauza? Multumesc.

MarPlo Mesaje:4343
Salut,
La mine a functionat corect acest exemplu (poate problema e de la altceva legat de datele primite):

Cod: Selectaţi tot

$v2 ='2016-04-02';
$v3 = date('Y-m-d', strtotime ($v2 .'- 1 day'));
echo $v3; // 2016-04-01

andras Mesaje:430
Acum am reusit, eu preluam din POST cu instructiunea

Cod: Selectaţi tot

$v2 = "'".trim($_POST[$value])."'"; // afiseaza  '2016-04-02'
- deci puneam ghilimele la POST. Am sters ghilimelele si acum functioneaza. Totusi, n-ar fi trebuit ca variabila sa fie recunoscuta si cu ghilimele? Aici nu inteleg, daca PHP coverteste automat, de ce nu o face si aici? Am mai intilnit astfel de situatii si inca n-am o explicatie.

MarPlo Mesaje:4343
Nu inteleg de unde aceasta practica cu Extra ghilimele adaugate la capetele unui sir. Isi are rostul foarte rar, atunci cand vrei sa transformi un numar in sir.
Explicatia de ce nu functiona reiese din acest exemplu:

Cod: Selectaţi tot

$v1 ='2016-04-02';
echo $v1; // 2016-04-02 (output doar valoarea, fara ghilimele)

$v2 = "'". $v1 ."'";
echo $v2; // '2016-04-02' (output cu ghilimele, valoarea contine si ghilimele)

$v3 ="'2016-04-02'"; // '2016-04-02' (e la fel ca $v2) 

andras Mesaje:430
Am pus extraghilimele pentru ca nu-mi recunostea variabilele POST cind aveam INSERT sau UPDATE, unele erau recunoscute altele nu, dupa ce am pus extraghilimele le-a recunoscut pe toate. Nici acum nu-mi face INSERT decit daca pun extraghilimele la cimpul tip DATE:

Cod: Selectaţi tot

$re="INSERT INTO `user_sal` (`iduser`, `salar`, `datasal`, `datasalv`, `userid`) 
VALUES (".$id.", ".$v1.", ".$v2.",".$v3.",".$userid." )"; //nu face INSERT -$v2 si $v3 sint tip data
$re="INSERT INTO `user_sal` (`iduser`, `salar`, `datasal`, `datasalv`, `userid`) 
VALUES (".$id.", ".$v1.", '".$v2."','".$v3."',".$userid." )"; //functioneaza -$v2 si $v3 sint tip data

MarPlo Mesaje:4343
Ai dreptate, la adaugare valoare tip sir in baza de date se adauga sirul intre ghilimele, si e bine sa fie adaugate direct in instructiunea SQL.

Subiecte similare