funktion nur 40 mal wiederaufrufen lassen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • funktion nur 40 mal wiederaufrufen lassen

    Hallo nochmal,
    hier anderes Problem. Ich möchte, dass, wenn die function mehr als 40 mal durchlaufen wurde und immer noch keine Kundennummer passt, der Prozess beendet wird. Leider scheint es mit $count++; nicht zu funktionieren. Es wird immer 1 gezählt. Wie messe ich, wie oft die function aufgerufen wird?

    PHP-Code:

    $counttolimit 
    0;
    function 
    generate_crn() 
     { 
      
        
    $limit 40;
        
    $counttolimit++;
        
        
    $reference_number mt_rand (1,9);
        
    $sql "SELECT 
                    count(*) as crn
                  FROM
                    data
                  WHERE
                    kdn = '
    $reference_number';";
        
    $result mysql_query($sql) OR die (mysql_error());
        
    $checkifcrn mysql_fetch_assoc($result);
        if(
    $checkifcrn['crn'] > 0)
            {
            if(
    $counttolimit $limit
            return 
    generate_crn();
            else
            return 
    "an error has occured";
              
            } 
        else 
            { 
            
    $sql "INSERT INTO
                          data 
                          (kdn) VALUES ('
    $reference_number');";
            
    mysql_query($sql) OR die (mysql_error());
            return 
    $reference_number
            } 

      }
    echo  
    generate_crn();


    ?> 

  • #2
    PHP-Code:
    $counttolimit 0;
    function 
    generate_crn() 
     { 
        global 
    $counttolimit// <==
        
    $limit 40;
        
    $counttolimit++; 
    Das würde zwar am einfachsten gehen, aber ich rate von global ab.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Hi,

      den Unterschied zwischen lokalen und globalen Variablen solltest Du aber inzwischen kennen, Du bist doch lange genug dabei. Auch eine rekursive Funktion hat in jeder Rekursion natürlich ihren eigenen Geltungsbereich.

      Wieso machst Du das überhaupt rekursiv? Nimm eine simple Zählschleife bis 40 und beende sie vorzeitig, falls eine Nummer gefunden wurde.

      LG

      Kommentar


      • #4
        Code:
        <?php
        
        
        function generate_crn() 
         { 
            static $counttolimit; 
            $limit = 40;
            if ($counttolimit < $limit)
            {
             $counttolimit++;
             echo 'ACTION '.$counttolimit.'<br />';     
            }      
         }
        
        generate_crn();
        generate_crn();
        generate_crn();
        generate_crn();
        ?>
        Ausgabe:

        ACTION 1
        ACTION 2
        ACTION 3
        ACTION 4

        Kommentar

        Lädt...
        X