Archief - PHP: loops

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

tikketim

Legacy Member
PHP:
var $uren = Array(0 => "08:00 - 08:15",1 => "08:15 - 08:30",2 => "08:30 - 08:45",3 => "08:45 - 09:00",4 => "09:00 - 09:15",5 => "09:15 - 09:30",6 => "09:30 - 09:45",7 => "09:45 - 10:00",........
 
foreach($this->uren as $uren2 => $uur){
   
    $result = mysql_query("SELECT * FROM afspraken");
    while($row = mysql_fetch_array($result)){
     $uurvan = $row["uurvan"];
     if($uurvan == $uren2){
      $table .="<tr><td bgcolor=\"yellow\">" . $uur . "</td><td>test zaal 1</td><td>test zaal 2</td></tr>";
     }else{
      $table .="<tr><td>" . $uur . "</td><td>test zaal 1</td><td>test zaal 2</td></tr>";
     }
    }
             
   }

Het probleem is dat die array met uren in meer dan 1 keer word weergegeven. namelijk het aantal keer dat ik iets uit de database haal.

Is er een manier om data vanin een loop , ook buiten die loop te gebruiken zodat het niet meerdere keren herhaald ?

Smokyke

Legacy Member
PHP:
var $uren = Array(0 => "08:00 - 08:15",1 => "08:15 - 08:30",2 => "08:30 - 08:45",3 => "08:45 - 09:00",4 => "09:00 - 09:15",5 => "09:15 - 09:30",6 => "09:30 - 09:45",7 => "09:45 - 10:00",........

foreach($this->uren as $uren2 => $uur){
   $i=1;
    $result = mysql_query("SELECT * FROM afspraken");
    while($row = mysql_fetch_array($result)){
     if($i==1){
     $uurvan = $row["uurvan"];
     if($uurvan == $uren2){
      $table .="<tr><td bgcolor=\"yellow\">" . $uur . "</td><td>test zaal 1</td><td>test zaal 2</td></tr>";
     }else{
      $table .="<tr><td>" . $uur . "</td><td>test zaal 1</td><td>test zaal 2</td></tr>";
     }
$i++;
}else{}
    }
           $i=1;  
   }
Ben er niet helemaal zeker van:s

Radiance

Legacy Member
Ik vind de code bouw nogal onlogisch. Doe liever zoiets :
PHP:
$afspraken = array();
$result = mysql_query("SELECT * FROM afspraken");
while($row = mysql_fetch_array($result))
{
  $afspraken[$row["uurvan"]] = true;
}

foreach($this->uren as $uren2 => $uur)
{
  if(array_key_exists($afspraken, $uren2))
  {
    $table .="<tr><td bgcolor=\"yellow\">" . $uur . "</td><td>test zaal 1</td><td>test zaal 2</td></tr>";
  } 
  else
  {
    $table .="<tr><td>" . $uur . "</td><td>test zaal 1</td><td>test zaal 2</td></tr>";
  }
}

Lijkt mij een stuk logischer (array_key_exists() kan ook met isset, cfr. andere thread ;) ).
Die uur notatie zou ik overigens ook in de database opslaan, dan kan je tevens een relatie leggen tussen beiden of nog beter afpraken een date/timestamp value geven ipv een vaste waarde.

Smokyke

Legacy Member
had geen tijd om alles deftig uit te schrijven, normaal moet mijn manier ook werken:P Maar de jouwe is beter

tikketim

Legacy Member
Radiance zei:
Ik vind de code bouw nogal onlogisch. Doe liever zoiets :
PHP:
$afspraken = array();
$result = mysql_query("SELECT * FROM afspraken");
while($row = mysql_fetch_array($result))
{
  $afspraken[$row["uurvan"]] = true;
}
 
foreach($this->uren as $uren2 => $uur)
{
  if(array_key_exists($afspraken, $uren2))
  {
    $table .="<tr><td bgcolor=\"yellow\">" . $uur . "</td><td>test zaal 1</td><td>test zaal 2</td></tr>";
  } 
  else
  {
    $table .="<tr><td>" . $uur . "</td><td>test zaal 1</td><td>test zaal 2</td></tr>";
  }
}

Lijkt mij een stuk logischer (array_key_exists() kan ook met isset, cfr. andere thread ;) ).
Die uur notatie zou ik overigens ook in de database opslaan, dan kan je tevens een relatie leggen tussen beiden of nog beter afpraken een date/timestamp value geven ipv een vaste waarde.


Ik kreeg eerst een error dat het twede argument een array of een object moest zijn dus heb ik er dit van gemaakt :
PHP:
if(array_key_exists($afspraken, $this->uren))

Nu krijg ik een error over het eerste argument :
Warning: array_key_exists() [function.array-key-exists]: The first argument should be either a string or an integer in

Mag dat eerste argument dan geen array zijn ?

killgore

Legacy Member
eerste arg = key, 2e = array.

PHP functieparamaters zijn zeer inconsistent :(.

tikketim

Legacy Member
Wat bedoel je juist ?:s

edit :

PHP:
foreach($this->uren as $uren2 => $uur){ 

    $result = mysql_query("SELECT * FROM afspraken"); 
    while($row = mysql_fetch_array($result)){   
     $uurvan = $row["uurvan"]; 
	 $uurtot = $row["uurtot"];
	 $table .="$uurtot";
	 for ($i=$uurvan; $i <= $uurtot;) {
     if($i == $uren2){ 
      $table .="<tr><td bgcolor=\"yellow\">" . $uur . "</td><td>test zaal 1</td><td>test zaal 2</td></tr>"; 
     }else{ 
      $table .="<tr><td>" . $uur . "</td><td>test zaal 1</td><td>test zaal 2</td></tr>"; 
     } 
	 $i++;
	 }


    } 
           
   }

Als ik het op deze manier doe , zet hij idd elk blok dat geel moet , in het geel maar herhaald hij elk blok meerdere keren terwijl het de bedoeling is dat hij maar 1 keer word getoond.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan