Jak mogę powiedzieć w/z funkcją follow (patrz poniżej), że możesz zrobić maksymalnie 3 przedmioty? A jeśli zrobisz więcej niż trzy przedmioty, funkcja zatrzyma się i otrzymasz ostrzeżenie?

function addSection() {
global $compid;
    $sectionOb = new Item();
    $sectionOb->i_id_pk = $sectionOb->newId();
    $sectionOb->i_mod_comp_id_fk = $compid;
    $sectionOb->c_titel = '';
    $sectionOb->c_content = '';
    $sectionOb->i_sort = $sectionOb->newSort($compid);
    $sectionOb->insert();
}

if($action == 'add') {  
    addSection();
}


<a href="<?php echo $_SERVER['REQUEST_URI'] ?>&amp;action=add" />new section</a>
0
Raymond van Os 16 luty 2012, 17:49

3 odpowiedzi

Najlepsza odpowiedź

Jeśli nie przejmujesz się zbytnio fałszowaniem adresów URL, dodałbym zmienną licznika w adresie URL, która jest przekazywana do metody addSection() w następujący sposób:

function addSection($count) {
    if ($count >= 3) { return $count; }
    global $compid;
    $sectionOb = new Item();
    $sectionOb->i_id_pk = $sectionOb->newId();
    $sectionOb->i_mod_comp_id_fk = $compid;
    $sectionOb->c_titel = '';
    $sectionOb->c_content = '';
    $sectionOb->i_sort = $sectionOb->newSort($compid);
    $sectionOb->insert();

    // Return incremented count
    return $count + 1;
}

// Retrieve the last count from the URL
$count = isset($_GET['count']) ? intval($_GET['count']) : 0;

// Increment the count if the action is add and the addSection method suceedes
if($action == 'add') {  
    $count = addSection($count); 
}

// Add count to the URL so we know what it is
<a href="<?php echo $_SERVER['REQUEST_URI'] ?>&action=add&count=<?php echo $count; ?>" />new section</a>
2
abelito 16 luty 2012, 18:00

Użyj statycznej zmiennej licznika:

function limited() {
    static $invocationcount = 0;
    ++$invocationcount;

    if($invocationcount <= 3) {
        echo "You have called this function $invocationcount times.";
    }
    else {
        echo "Stop doing that!";
    }
}

Zobacz to w akcji.

3
Jon 16 luty 2012, 17:51

Bardzo dziękuję za pomoc!! Zrobiłem to w następujący sposób:

function limit() {
global $compid;
$i = 0;
++$i;
$a_all = page1::page2Id($compid);
$i = sizeof($a_all);

if($i <= 2) { 
    $sectionOb = section();
    $sectionOb->i_id_pk = $sectionOb->newId();
    $sectionOb->i_mod_comp_id_fk = $compid;
    $sectionOb->c_titel = '';
    $sectionOb->c_content = '';
    $sectionOb->i_sort = $sectionOb->newSort($compid);
    $sectionOb->insert();
    return true;
} 
else { 
return false;
} 

}

0
Raymond van Os 17 luty 2012, 13:40