Avatar billede borgenviby Nybegynder
21. september 2006 - 18:42 Der er 13 kommentarer og
1 løsning

strtotime lægge tid til virker ikke

// Hvad er der galt med mine koder? $object_time skulle lægge tid til start_hour og give $booking_end

$object_time = ($_REQUEST["object_id"], param_extract("object_time") + $REQUEST["start_hour"]);


function param_extract($param_name)
{
global $database_name;
$sql = "SELECT param_value FROM rs_param WHERE param_name = '" . $param_name . "';";
$temp = db_query($database_name, $sql); $temp_ = fetch_array($temp);
$result = $temp_["param_value"]; return $result;
}

$booking_start = DateAndHour($_REQUEST["start_date"], $_REQUEST["start_hour"]);
$booking_end = ($_REQUEST["start_date"] + $object_time);


// constructs hours list
$activity_start = strtotime("1970-01-01" . " " . $start_hour);
$activity_end = strtotime("1970-01-01" . " " . $end_hour);
$hours_list = "";
for($h=$activity_start;$h<=$activity_end;$h+=$activity_step) {
$hours_list .= "<option value=\"" . $h . "\">" . date("H:i", $h) . "</option>" . chr(10);
}

//mine tabeller
CREATE TABLE `rs_data_objects` (
  `object_id` smallint(5) unsigned NOT NULL auto_increment,
  `rand_code` smallint(5) unsigned default NULL,
  `object_name` varchar(50) collate latin1_danish_ci NOT NULL default '',
  `family_id` tinyint(3) unsigned NOT NULL default '0',
  `manager_id` int(10) unsigned NOT NULL default '0',
  `misc_info` varchar(255) collate latin1_danish_ci default NULL,
  `object_time` time NOT NULL default '00:00:00',
  PRIMARY KEY  (`object_id`),
  KEY `rand_code` (`rand_code`),
  KEY `family_id` (`family_id`),
  KEY `manager_id` (`manager_id`),
  KEY `object_time` (`object_time`)
Avatar billede kinderaeg Nybegynder
22. september 2006 - 09:03 #1
Du skal i hvert fald i første omgang ha' din variabel $object_time med i din global, hvis du vil bruge den i din funktion.
Avatar billede borgenviby Nybegynder
22. september 2006 - 11:10 #2
OK kan godt se det ikke vil virke nu : )
Hvad gør jeg hvis jeg har min "start_hour" og gerne vil lægge værdien fra tabellen rs_data_objects / 'object_time' til? Har f.eks. en værdi på 45 min
Har prøvet dette, men det virker ikke.:


$booking_start = DateAndHour($_REQUEST["start_date"], $_REQUEST["start_hour"]);
$booking_end = DateAndHour($_REQUEST["start_date"], ($_REQUEST["start_hour"] + $GetObjectTime));

$GetObjectTime = "SELECT object_time FROM rs_objects WHERE object_time =  . $object_time .";
$object_time = $_REQUEST["object_id"];
Avatar billede kinderaeg Nybegynder
22. september 2006 - 11:55 #3
Min fejl, du bruger jo slet ikke $object_time i din funktion, sorry.

Har du tjekket hvad du får ud af dine globalvariabler ($_REQUEST["start_date"] og $_REQUEST["start_hour"])?
Avatar billede kinderaeg Nybegynder
22. september 2006 - 12:47 #4
$booking_end = DateAndHour($_REQUEST["start_date"], strtotime($_REQUEST["start_hour"]) + $object_time);

$object_time er tiden i sekunder, der skal lægges til.
Avatar billede borgenviby Nybegynder
22. september 2006 - 14:25 #5
Kan jeg ikke lave en forespørgelse i min database hvor jeg har defineret tiderne for de forskellige ting, hvor jeg laver en $_REQUEST på 'object_id' som derefter giver værdien for 'object_time'. Se evt. min tabel ovenover.

f.eks.
$GetObjectTime = "SELECT object_time FROM rs_objects WHERE object_time =  . $object_time .";
$object_time = $_REQUEST["object_id"];
Avatar billede borgenviby Nybegynder
22. september 2006 - 14:53 #6
Har selvfølgelig prøvet det ovenstående. Men det virker ikke... : (
Avatar billede kinderaeg Nybegynder
25. september 2006 - 09:10 #7
Jeg skal lige være helt sikker på, hvor det er problemet ligger. Du sætter jo $booking_start og $booking_end, hvorefter du anvender nogle variabler ($start_hour og $end_hour). Yderligere bliver $activity_step aldrig sat. Er det i adderingen af variablerne (tiderne) du har problemet eller først ved udskrivningen i dit for-loop?
Avatar billede borgenviby Nybegynder
26. september 2006 - 11:51 #8
Prøver at trække en værdi ud af min tabel som skal lægges til "start_hour"(er unix timestamp) :

// Gets the time to add for a new booking - see new booking
$GetObjectTime = mysql_query("SELECT object_time FROM rs_objects WHERE object_time =  . $object_time .");
$object_time = $_REQUEST["object_id"]; // Se min tabel længere nede : )

// New Booking
case "insert_new_booking":

$booking_start = DateAndHour($_REQUEST["start_date"], $_REQUEST["start_hour"]);
$booking_end = DateAndHour($_REQUEST["start_date"], ($_REQUEST["start_hour"] + $GetObjectTime));

//Min tabel
CREATE TABLE `rs_data_objects` (
  `object_id` smallint(5) unsigned NOT NULL auto_increment,
  `rand_code` smallint(5) unsigned default NULL,
  `object_name` varchar(50) collate latin1_danish_ci NOT NULL default '',
  `family_id` tinyint(3) unsigned NOT NULL default '0',
  `manager_id` int(10) unsigned NOT NULL default '0',
  `misc_info` varchar(255) collate latin1_danish_ci default NULL,
  `object_time` smallint(6) default '0',
  PRIMARY KEY  (`object_id`),
  KEY `rand_code` (`rand_code`),
  KEY `family_id` (`family_id`),
  KEY `manager_id` (`manager_id`),
  KEY `object_time` (`object_time`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci AUTO_INCREMENT=8 ;

Når jeg kører scriptet for jeg denne fejlmeddelse:

Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING
i $object_time = $_REQUEST["object_id"];

Hvordan kan jeg ellers trække en værdi ud af tabellen??? Værdien skal være afhængige af valget man gør i formen.

<form>
<table class="table3">
<tr>
<td style="font-weight:bold; text-align:left;"><?php echo "Vælg ansat"; ?> :</td>
<td><select id="familie_id" name="familie_id"><?php echo $families_list; ?></select></td>
</tr>
<tr>
<td style="font-weight:bold; text-align:left;"><?php echo "Vælg behandling"; ?> :</td>
<td><select id="object_id" name="object_id"><?php echo $objects_list; ?></select></td>
</tr>
</table>
<tr>
<td valign="bottom">
<table class="table3">
<tr>
<td style="font-weight:bold; text-align:right;"><?php echo Translate("Start"); ?> :</td>
<td><input type="text" id="start_date" name="start_date" style="width:80px" value="<?php echo $book_start_day; ?>"></td>
<td><select id="start_hour" name="start_hour"><?php echo $hours_list; ?></select></td>
</tr>
</table>
</form>
Avatar billede kinderaeg Nybegynder
26. september 2006 - 13:39 #9
Du skal kun bruge . til at samle flere elementer i en string, og ikke inde i en string. Så længe du bruger " frem for ' kan du inkludere variabler direkte i en hardkodet tekststreng, som her:
$GetObjectTime = mysql_query("SELECT object_time FROM rs_objects WHERE object_time = $object_time");
Eller du kan sætte den udenfor, som her:
$GetObjectTime = mysql_query('SELECT object_time FROM rs_objects WHERE object_time = '.$object_time);

Derefter, har du et sted du trækker object_id, som du bruger i din request? Jeg ville personligt ikke bruge request, men i stedet $_POST eller $_GET, alt efter metoden du bruger i din form (get er default, når du ikke har sat noget). Som det ser ud, så sender din form dog ikke noget videre, du mangler en del syntax i din form. Parameteren action er required:
http://www.w3.org/TR/html4/interact/forms.html#h-17.3
Avatar billede borgenviby Nybegynder
26. september 2006 - 14:37 #10
Har ændret det til:
// Gets the end_time for a new booking - see new booking

$GetObjectTime = "SELECT object_time FROM rs_objects WHERE object_time= '".$_GET "object_id"]."'";

//object_id kommer fra formen, se også tabellen : )
<select id="object_id" name="object_id"><?php echo $objects_list; ?></select>

Det har løst det ene problem, men givet mig et nyt : ( /arrgggg

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
$result = mysql_fetch_array($array);

// Min con til db
// Connects to database according the selected connection type
    function db_query($db_name, $sql) {

        global $db_connection_type, $db_server_address, $db_user, $db_password;   
   
        switch($db_connection_type) {
           
            case "odbc":
            $db_connection = odbc_connect($db_name, $db_user, $db_password);
            $result = odbc_exec($db_connection, $sql);
            break;

            case "mysql":
            $db_connection = mysql_connect($db_server_address, $db_user, $db_password);
            $result = mysql_db_query($db_name, $sql, $db_connection);
        }

        return $result;
    }

    function fetch_array($array) {
   
        global $db_connection_type;

        switch($db_connection_type) {

            case "odbc":
            $result = odbc_fetch_array($array);
            break;

            case "mysql":
            $result = mysql_fetch_array($array);
        }
       
        return $result;
    }
?>
Avatar billede kinderaeg Nybegynder
26. september 2006 - 15:52 #11
Umiddelbart ser det ud til at du har en fejl i din select (der mangler en "["), jeg vil tro det er derfor.
Avatar billede borgenviby Nybegynder
26. september 2006 - 16:55 #12
Ups. paste fejl. Der er "[" omkring $GetObjectTime = "SELECT object_time FROM rs_objects WHERE object_time= '".$_GET ["object_id"]."'";
Men fejlen er der stadig... HHHMMMM

Hvorfor vil den ikke bare trække værdien ud og lægge den til "star_hour"?????

Jeg fatter my efterhånden... :o(

Er der en fejl i min connection til db....
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
$result = mysql_fetch_array($array);
Avatar billede kinderaeg Nybegynder
27. september 2006 - 08:54 #13
Det kan jeg ikke tro, så burde det være tidligere, du gik galt i byen.
Hvis nedenstående er hele din linie, så mangler du jo selve databasekaldet (mysql_query()):

$GetObjectTime = "SELECT object_time FROM rs_objects WHERE object_time= '".$_GET ["object_id"]."'";

Og så er det jo meget naturligt, at den ikke kan finde noget ;)
Avatar billede borgenviby Nybegynder
28. oktober 2006 - 09:24 #14
Her er løsningen. Bedre sent end aldrig : )

// Gets the object_time from object_id
        $sql  = "SELECT rs_param_families.family_name, rs_data_objects.object_time ";
    $sql .= "FROM rs_data_objects INNER JOIN rs_param_families ON rs_data_objects.family_id = rs_param_families.family_id ";
    $sql .= "WHERE rs_data_objects.object_id = " . $_REQUEST["object_id"] . ";";
    $temp = db_query($database_name, $sql); $temp_ = fetch_array($temp);

    $object_time = $temp_["object_time"];

case "insert_new_booking":

$booking_start = DateAndHour($_REQUEST["start_date"], $_REQUEST["start_hour"]);
$booking_end = date("Y-m-d H:i:s", (strtotime($booking_start)+$object_time));
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester