Autor Zpráva
Andrew19
Profil
mám takový problém nevím jestli jde zápis do tabulky řešit takto :

$vysledek = mysql_query( "insert into masaze values(0, '$prijmeni','$jmeno', '$datum', '$misto', '$cas_od', '$cas_do' , '$pocet_hodin=SUBTIME('$do','$od')', '$zapsal', '$heslo')", $spojeni);


jde mi o tom jak udělat z cas_od a cas_do rozdíl a zapsat to do databáze.... děkuji za radu
Andrew19
Profil
$vysledek = mysql_query( "insert into masaze values(0, '$prijmeni','$jmeno', '$datum', '$misto', '$cas_od', '$cas_do' , 

'$pocet_hodin=SUBTIME('$do','$od')', '$zapsal', '$heslo')", $spojeni);


nějak se nezobrazil celý kód tak doufám že teď už ano:_))
Andrew19
Profil
jinak vše se zapíše ale do kolonky pocet_hodin se vyplní nulová hodnota
Měsíček
Profil
1.) Kde bereš $do a $od.
2.) Co to tak zkusit bez toho přiřazení tedy jen SUBTIME ...
kletely
Profil
'$pocet_hodin=SUBTIME('".$do."','".$od."')'

Skús :)
Andrew19
Profil
nene ani s tím druhým zápisem to nejde!!!No a $od a $do beru z formuláře který předchází této stránce a odesélá se to z něj, ale teď mi asi došlo že to nemůže vykonat tuto funkci když to ještě není zapsáno v db takže to asi budu muset odečítat asi až po vypisování co? a nebo by to šlo nějak odečít v php?
Měsíček
Profil
Mně se tam zkrátka nelíbí, že to přiřazuješ .. i když možná je to dobře http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#fu nction_subtime .. v každém případě nechceš si ošetřit ty proměnné, $do => $_POST["do"] nebo to už děláš před tímto řádkem?
bohyn
Profil
1) Měsíček ma IMO pravdu to = tam dela bordel. Jestli chces dale v PHP pracovat s poctem hodin musis to udelat na urovni PHP ne MySQL (to se provadi mimo PHP).

2) Me se zda lepsi na cas pouzivat timestamp - UNIX_TIMESTAMP() - a cas mit v databazi jako INT.
Andrew19
Profil
proměné jsou ošetřené již před tímto řádkem takhle vypadá celý kód

<?

$heslo = $_POST['heslo'];
$heslo2 = $_POST['heslo2']; 
$cas_od = $_POST['cas_od']; 
$cas_do = $_POST['cas_do']; 

if ($heslo==$heslo2) {
$spojeni = mysql_connect ("localhost", "", "");
mysql_select_db('', $spojeni);
mysql_query("SET NAMES 'cp1250';");
 
  $vysledek = mysql_query( "insert into masaze values(0, '$prijmeni','$jmeno', '$datum', '$misto', '$cas_od', '$cas_do' , '$pocet_hodin=SUBTIME('".$do."','".$od."')', '$zapsal', '$heslo')", $spojeni);
   Header('Location: masaz_pridano.php');}
   
       else { Header('Location: spatne_heslo.php');}

?> 
Andrew19
Profil
jenže když budu používat funkci TIMESTAMP tak mi to příjde trošku zbytečné když potřebuji pouze čas ne?
bohyn
Profil
Andrew19
jenže když budu používat funkci TIMESTAMP tak mi to příjde trošku zbytečné když potřebuji pouze čas ne?“ Jestli mas jinak osetreny cas pres pulnoc tak je to mozna zbytecny.

V jakym datovym typu mas $od a $do a v jakym je dany sloupecek?
vysledkem tohoto je urcite retezec '$pocet_hodin=SUBTIME('".$do."','".$od."')' kvuli tomu rovnitku. Ty pravdepodobne pouzivas INT nebo DATE
Andrew19
Profil
no takže sloupce od do a pocet_hodin jsou ve formátu TIME!!!!
Andrew19
Profil
no klidně bych bral jiné řešení jak docílit toho aby když uživatel zadá v políču od a v políčku do tak se nakonec při výpisu udělal jejich rozdíl a vypsal se!!!
bohyn
Profil
Andrew19
Se nerozciluj a nediv se ze tam mas 0 kdyz vkladas string ;)
Andrew19
Profil
já se nerozčiluji jen už mě to otravuje pěkně dlouho a nemůžu na to přijít tak jsem z toho trošku nervní:-( a když dám sloupec pocet_hodin jako textový a pak když budu vypisovat tak text převedu na TIME tak by to mohlo jít?,nebo jak to mám udělat?
bohyn
Profil
pouzit jen
SUBTIME('".$do."','".$od."')
bez uvozovek, toho rovnitka a te promene pred tim.
Andrew19
Profil
$vysledek = mysql_query( "insert into masaze values(0, '$prijmeni','$jmeno', '$datum', '$misto', '$cas_od', '$cas_do' , SUBTIME('".$do."','".$od."')', '$zapsal', '$heslo')", $spojeni);


když to tedy napíšu takto bez uvozovek rovnítka a té proměné tak mi to vloží hodnotu NULL
Andrew19
Profil
$vysledek = mysql_query( "insert into masaze values(0, '$prijmeni','$jmeno', '$datum', '$misto', '$cas_od', '$cas_do' , 

SUBTIME('".$do."','".$od."')', '$zapsal', '$heslo')", $spojeni);


zase není vidět celý kód tak snad zase teď:_¨))
bohyn
Profil
Nehodilo ti to nahodou chybu? za SUBTIME() mas jeste jednu '
Andrew19
Profil
no nehodí mi to chybu i když jsem tu uvozovku smazal:-(((
Andrew19
Profil
takže chybové hlášení tam je kód tedy vypadá takto
<?

$heslo = $_POST['heslo'];
$heslo2 = $_POST['heslo2']; 

if ($heslo==$heslo2) {
$spojeni = mysql_connect ("localhost", "", "");
mysql_select_db('', $spojeni);
mysql_query("SET NAMES 'cp1250';");
 
  $vysledek = mysql_query( "insert into masaze values(0, '$prijmeni','$jmeno', '$datum', '$misto', '$cas_od', '$cas_do' , SUBTIME('".$do."','".$od."'), '$zapsal', '$heslo')", $spojeni) ;
  echo mysql_errno() . ": " . mysql_error() . "\n";
    Header('Location: masaz_pridano.php');}
   
       else { Header('Location: spatne_heslo.php');}

?> 



chybové hlášení : Warning: Cannot modify header information - headers already sent by (output started at C:\Program

Files\VertrigoServ\www\trial_administration_local\_massage\masaz_prida t.php:12) a cesta k souboru a on line 13
bohyn
Profil
Asi chyba nekde ve vkladanych promenych
Zkus jeste vypsat toto:
$result = mysql_query("SELECT SUBTIME('".$do."','".$od."')", $spojeni);
$row = mysql_fetch_row($result);
echo $row[0]." = '".$do."' - '".$od."'";
bohyn
Profil
A jakou chybu SQL vypsalo?
Andrew19
Profil
když to napíšu takhle jak si napsal tak mi to vypíše pouze = '' - '' :-(
bohyn
Profil
V hodnotach $od a $do tedy nic nemas. Oprav si to podle toho jak mas ten formular.
A
// trocha bezpecnosti kterou bys mel zavest i u jinych promenych pouzivanych v dotazech
$od = mysql_escape_string($_POST['cas_od']);
$do = mysql_escape_string($_POST['cas_do']); 

$result = mysql_query("SELECT SUBTIME('".$do."','".$od."')", $spojeni);
$row = mysql_fetch_row($result);
echo $row[0]." = '".$do."' - '".$od."'";
?
Andrew19
Profil
Já se strašně omlouvám takže konečné řešení co snad už jde a nebude dělat problémy je :
$vysledek = mysql_query( "insert into masaze2 values(0, '$prijmeni','$jmeno', '$datum', '$misto', '$cas_od', '$cas_do' , 

SUBTIME('".$cas_do."','".$cas_od."'), '$zapsal', '$heslo')", $spojeni);


takže to bylo jak říkal bohyn což znamená bez proměné a uvozovek akorát jsem měl proměné $od a $do místo toho abych je měl $cas_od a $cas_do hrozně se omlouvám za svojí chybu prostě už jsem byl dnes nějaký přepracovaný:-(
Toto téma je uzamčeno. Odpověď nelze zaslat.

0