[PHP] Funktion erneut durchlaufen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von furious1, 30. Dezember 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 30. Dezember 2009
    Funktion erneut durchlaufen

    Hallo PHP-Freunde ;P

    stehe hier auf dem Schlauch. Diese Funktion erzeugt nen Code. Dieser soll einzigartig in der Tabelle sein. Deswegen prüfe ich, ob dieser bereits in der DB vorhanden ist.

    Code:
    function create_pID($length) {
    
     $dummy = array_merge(range('0', '9'), range('a', 'z'), range('A', 'Z'));
    
     // shuffle array
     mt_srand((double)microtime()*1000000);
    
     for ($i = 1; $i <= (count($dummy)*2); $i++) {
     $swap = mt_rand(0,count($dummy)-1);
     $tmp = $dummy[$swap];
     $dummy[$swap] = $dummy[0];
     $dummy[0] = $tmp;
     }
    
     $export_pID = substr(implode('',$dummy),0,$length);
    
    # $CheckDuplicate = mysql_query("SELECT pID FROM tabelle WHERE pID = '".$export_pID."'");
    # if(mysql_num_rows($CheckDuplicate)) {
    # [B]#funktion nochmal durchlaufen.[/B]
    # } else {
    # // get password
    # return $export_pID;
    # }
     return $export_pID;
    }
    Wie mache ich das am besten, dass er die Funktion, wenn mysql_num_rows zutrifft, nochmal durchläuft?

    Hoffe es ist verständlich erklärt.

    Gruß
     

  2. Anzeige
    Heute: Deals & Sale mit stark reduzierten Angeboten finden.
  3. #2 30. Dezember 2009
    AW: Funktion erneut durchlaufen

    Hast du es schonmal versucht, an der von dir vorgesehenen Stelle einfach die Funktion neu aufzurufen?

    Gib an die Stelle einfach mal "create_pID();" ein und dann sollte das eigentlich funktionieren.

    Achtung: Is nur ne Quick & Dirty Lösung aber es klappt!
     
  4. #3 30. Dezember 2009
    AW: Funktion erneut durchlaufen

    Wie sieht es denn aus, wenn du das ganze nicht mit einer if Abfrage löst, sondern mit einer while schleife? Schleife läuft so lange und erstellt ne neue export_pID bis num_rows 0 ausgibt.


    Ist aber bestimmt auch eher dirty die Methode. Würde mir so aber einfallen als Variante 2.
    Eigentlich das gleiche nur, dass du die funktion nicht immer wieder neu aufrufst, sondern innerhalb ihr arbeitest.
     
  5. #4 30. Dezember 2009
    AW: Funktion erneut durchlaufen

    okay danke, werd das mal so stehen lassen wie #2 es gesagt hat.

    Danke euch beiden ;)

    Noch eine andere Frage:

    Wieso bekomme ich bei einer Domain (bsp. .tk) keine $_GET Variable?

    Bsp: meinedomain.tk

    Dann ist $_GET['test'] aber leer. Woran kann das liegen?

    Gruß
     
  6. #5 30. Dezember 2009
    AW: Funktion erneut durchlaufen

    1. do-while - siehe code
    2. bsp.: "tk" => da bist in nem frame, vielleicht übergeben die den querystring einfach ned.

    PHP:
    <? php
    function  create_pID ( $length ) {
        do {
            
    $dummy  array_merge ( range ( '0' '9' ),  range ( 'a' 'z' ),  range ( 'A' 'Z' ));

            
    // shuffle array
            
    mt_srand ((double) microtime ()* 1000000 );

            for (
    $i  1 $i  <= ( count ( $dummy )* 2 );  $i ++) {
                
    $swap  mt_rand ( 0 , count ( $dummy )- 1 );
                
    $tmp  $dummy [ $swap ];
                
    $dummy [ $swap ] =  $dummy [ 0 ];
                
    $dummy [ 0 ] =  $tmp ;
            }

            
    $export_pID  substr ( implode ( '' , $dummy ), 0 , $length );
            
            
    //check
            
    $check   mysql_query ( '
                SELECT pID 
                FROM tabelle
                WHERE pid = "' 
    $export_pID  '"
            '
    );
        } while(
    mysql_num_rows ( $check ) >  0 );
        
        return 
    $export_pID ;
    }
     
  7. #6 30. Dezember 2009
    AW: Funktion erneut durchlaufen

    Danke für die schnelle Antwort!

    Funktioniert das dann so oder hab ich was falsch?

    Code:
    function create_pID($length) {
    
     $CheckDuplicate = mysql_query("SELECT pID FROM tabelle WHERE pID = '".$export_pID."'");
    
     do {
     $dummy = array_merge(range('0', '9'), range('a', 'z'), range('A', 'Z'));
    
     // shuffle array
     mt_srand((double)microtime()*1000000);
    
     for ($i = 1; $i <= (count($dummy)*2); $i++) {
     $swap = mt_rand(0,count($dummy)-1);
     $tmp = $dummy[$swap];
     $dummy[$swap] = $dummy[0];
     $dummy[0] = $tmp;
     }
    
     $export_pID = substr(implode('',$dummy),0,$length);
     return $export_pID;
     } while (!mysql_num_rows($CheckDuplicate));
    }
    Und das mit dem Frame.. Kann man das irgendwie umgehen oder hilft da nur ne andere Domain?

    Danke
     
  8. #7 30. Dezember 2009
    AW: Funktion erneut durchlaufen

    siehe edit von mir,

    das mit der domain kannst ned umgehen, da hilft nur ne echte domain oder du fragst beim tx-support nach.
     
  9. #8 30. Dezember 2009
    AW: Funktion erneut durchlaufen

    Danke vielmals :)

    edit: Um ?test= auszulesen hab ich nun folgendes benutzt:

    Code:
    # .TK Domain abfragen und nach ID filtern
    $url = $_SERVER['HTTP_REFERER'];
    $geturlID = str_replace('?ID=', '', strstr($url, '?ID='));
    if($geturlID) $refID = $geturlID; else $refID = NULL;
     

  10. Videos zum Thema
Die Seite wird geladen...
Similar Threads - PHP Funktion erneut
  1. Antworten:
    4
    Aufrufe:
    1.153
  2. Antworten:
    3
    Aufrufe:
    714
  3. Antworten:
    4
    Aufrufe:
    1.154
  4. Antworten:
    5
    Aufrufe:
    1.749
  5. [PHP] Suchfunktion Datenbank

    erz , 1. September 2012 , im Forum: Webentwicklung
    Antworten:
    12
    Aufrufe:
    1.154
  • Annonce

  • Annonce