Per gebruiker gegevens tabel crontroleren

Status
Niet open voor verdere reacties.

klaaspeter

Gebruiker
Lid geworden
20 nov 2010
Berichten
377
Hallo allemaal

Ik ben bezig met een urenprogramma aan te passen. Alleen is er 1 stukje waar ik niet uit kom, en dit is wel een belangrijk stukje.

Mijn probleem is. Dat als ik tijd toevoeg, met begin en eindtijd dat ik of slecht maar 1 maal kan toevoegen voor 1 gebruiker of als ik de controleer code weg haal steeds kan herhalen dus betekend dat er dubble records in mijn tabel kunnen komen. dat wil ik niet.

nou dacht ik de code zo te hebben aangepast dat dit zou werken maar helemaal werkt het niet misschien dat jullie mij kunnen helpen dit is mijn code.



PHP:
       /**
  * Does checks on a record with a starttime and endtime in it
  * before it is converted and goes into the database
  */
  function performTimeChecks(&$record)
  {
    $RECstartH = $record["starttime"]["hours"]*1;
    $RECstartM = $record["starttime"]["minutes"]*1;
    $RECstartS = $record["starttime"]["seconds"]*1;

    $RECendH = $record["endtime"]["hours"]*1;
    $RECendM = $record["endtime"]["minutes"]*1;
    $RECendS = $record["endtime"]["seconds"]*1;

    // Check if the endtime isn't before the starttime
    if ($RECstartH>$RECendH ||
         ($RECstartH==$RECendH && $RECstartM>$RECendM) || ($RECstartH==$RECendH && $RECstartM==$RECendM && $RECstartS>$RECendS))
    {
      triggerError($record, "starttime", "error_begintime_before_endtime");
      return;
    }

    if (($RECstartH==$RECendH)&&($RECstartM==$RECendM)&&($RECstartS==$RECendS))
    {
      triggerError($record, "starttime", "error_begintime_equals_endtime");
      return;
    }

    // Check if that period is still available

//Datum werd al zo opgeroept, heb alleen userid toegevoegd.
    $select = $this->selectDb("tabel.activitydate = '".$record['activitydate']['year']."-".$record['activitydate']["month"]."-".$record['activitydate']["day"]."'", "tabel.userid = '".$record["userid"]."'");
    
    foreach ($select as $dbrecord)
    {
      convertDurationToHours($dbrecord,true);
//nu dacht ik als userid voor starttime wegzet dat die dan kijkt van userid en daarna pas naar de starttime maar dit gebeurd niet.
      $DBstartH = $dbrecord["userid"]["starttime"]["hours"];
      $DBstartM = $dbrecord["userid"]["starttime"]["minutes"];
      $DBstartS = $dbrecord["userid"]["starttime"]["seconds"];

      $DBendH = $dbrecord["userid"]["endtime"]["hours"];
      $DBendM = $dbrecord["userid"]["endtime"]["minutes"];
      $DBendS = $dbrecord["userid"]["endtime"]["seconds"];
	  

      if (
      // Check if endtime of this record is earlier or the same as the starttime of this entry

      !($DBstartH>$RECendH || ($DBstartH==$RECendH && $DBstartM>$RECendM) ||
          ($DBstartH==$RECendH && $DBstartM>$RECendM ||
            ($DBstartM==$RECendM && $DBstartS>=$RECendS))
      ||
      // Check if starttime of the record is later or the same as the endtime of this entry
      ($RECstartH>$DBendH || ($RECstartH==$DBendH && $RECstartM>$DBendM) ||
          ($RECstartH==$DBendH && $RECstartM<$DBendM ||
            ($DBstartM== $RECendM && $RECstartS>=$DBendS)))))
      {
        triggerError($record, "starttime", "error_time_already_registered");
        return false;
      }
    }
    return true;
  }

op het moment kan dus zoveel keer als ik wil de zelfde tijden opslaan. haal ik userid weg dan kan dit niet meer en kan ik maar 1 keer per dag dus bijvoorbeeld begintijd 10:00 en als eindtijd 12:00 opslaan.

Wie o Wie kan mijn helpen! :)
 
zie lijn 55
wat mogelijks een fout is dat je db met rec gaag vergelijken het lijkt me anders een rare naamgeving beginnen appels en eindigen peren te vergelijken.

($RECstartH>$DBendH || ($RECstartH==$DBendH && $RECstartM>$DBendM) ||
 
Bedankt voor je reactie. Die functie vergelijkt het verstuurde record met wat er in de database staat dat klopt helemaal die code daar is niks fouts aan :)

Het probleem zit hem in het controleren speciafiek op userid dat krijg ik niet voor elkaar.

Hij zou alleen de data moeten controleren van de juiste userid die ook als verstuurde record is opgegeven. maar dat lukt me dus niet.
 
Met de code hierboven alleen, kan ik je helaas niet helpen...
Je hebt aan regel 32 hetgeen achter de komma toegevoegd, correct? in de hoop dat ie dan "iets" per user doet. Wat is het resultaat van select dat daar uitkomt? en wat doet $this->selectDb?

resultaat kun je afdrukken met
PHP:
echo '<pre>';
print_r($select);
echo '</pre>';

Gegroet,
Jeffrey
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan