kostenloser Webspace werbefrei: lima-city


Bug in skript. Kann mir wer debuggen?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    k****8

    Also, (ich glaube) Heavyraptor (oder so) hat mri den Skript geschrieben (so ?hnlich).

    Er sollte buchstaben so anzeigen:

    A
    B
    C
    D
    E
    F
    G
    ..
    Z
    AA
    BB


    jetzt habe ich versucht ihn zu erweitern, aber leider funst er jetzt nichtmehr richtig, und ich finde den Bug einfach nicht.

    Er schreibt jetzt so:

    A
    b
    c
    d
    ..

    Kann wer ihm kurz anschauen und mir sagen was da nicht stimmt?


    <?php
    function intstr($int,$chrs = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890")
    {
    $chrslen = strlen($chrs);
    $str = "";
    while ($int > 0)
    {
    $str = $chrs[$int % $chrslen].$str;
    $int = floor($int / $chrslen);
    }
    return $str;
    }

    function strint($str,$chrs = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890")
    {
    $chrslen = strlen($chrs);
    $str = strtolower($str);
    $strlen = strlen($str);
    $int = 0;
    for ($i = 0; $i < $strlen; $i++)
    {
    $int += strpos($chrs,$str[$i]) * pow($chrslen,$strlen - $i - 1);
    }
    return $int;
    }
    ?>



    <?php
    include 'config.php';

    $str = "A";

    while(1)
    {
    echo $str."<br>";
    $int = strint($str);
    $int += 1;
    $str = intstr($int);
    if($str == "Z") { die(); }
    }
    ?>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. e*****c

    So wie ichs entnehmen konnte sollen nur Gro?buchstaben angezeigt werden, oder? Die Frage wof?r das Script ist lass ich mal weg ;)

    Es k?nnte doch evtl. so gehen, dass du einfach die klein-Buchstaben aus der Definition rausnimmst, also dann so in etwa:

    function intstr($int,$chrs = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890")

    und

    function strint($str,$chrs = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890")

    Das d?rfte doch eigentlich deine Frage beantworten, oder (denk ich mal, w?rd ich mal so sagen ^^)
  4. Autor dieses Themas

    k****8

    Aso, ne, er schreibt beim bearbeiten nur kleinbuchstaben ._."
    Klar, ich k?nnte es auch getrennt machen, aber dann k?nnte nicht so ne Kombo entstehen: Ad0 oder so. (K?nnte mit den die() nat?rlich so oder so nicht)

    ?: Grad nur mit Alpha und Numeric getestet, also alle loweralphas deletet, jetzt schreibt er nur noch

    A
    B
    B
    B
    B
    B
    B
    ..
    B
    B
    B
    B

    Beitrag ge?ndert am 20.06.2006 22:08 von kai008
  5. Hi,

    Naja, bei mir funktioniert die funktion richtig (ich hab sie ja auch geschrieben :biggrin:).
    Jedoch hab ich noch einen kleinen Fehler gefunden.
    So sollte die Funktion intstr() aussehen, damit sie ganz richtig l?uf:

    function intstr($int,$chrs = "abcdefghijklmnopqrstuvwxyz") {
      $chrslen = strlen($chrs);
      $str = "";
      if ($int === 0) return $chrs[0];
      while ($int > 0) {
       $str = $chrs[$int % $chrslen] . $str;
       $int = floor($int / $chrslen);
      }
      return $str;
    }


    Ich verstehe jedoch nicht folgendes:
    A
    B
    C
    D
    E
    F
    G
    ..
    Z
    AA
    BB

    Nach dem Z komm AA, das ist ok, aber danach kommt doch logischer weise AB und nicht BB, oder?

    mfg,
    hr
  6. c*****o

    Nach dem Z komm AA, das ist ok, aber danach kommt doch logischer weise AB und nicht BB, oder?

    sollte eigentlich schon ja...
    was daf?r falsch ist, wie? ich allerdings auch nicht...
  7. Autor dieses Themas

    k****8

    Nat?rlich sollte AB/AC/AD und so weiter danach kommen. War nur m?de :biggrin:
    Hab dass File jetzt ver?ndert, aber es bleibt trotzdem gleich ._."
  8. Hi,

    eigentlich k?nnte man das ganze ganz einfach erkl?ren, denn meine Funktion funktioniert schon richtig. Das Ganze ist einfach, dass Problem ist nur, dass die funktion intstr() die gegebene Zahl als Dezimalsystem umwandelt.
    Desegen kommt nach den einstelligen Ergebnissen b und nicht a, da a ja eigentlich 0 ist und b ist 1.
    Das gleiche ist ja z.B. beim Hexadezimalsystem:
    Es f?ngt mit 0 an bis 9, dann bis f und dann kommt 10 und nicht 00, denn 00 w?re logischerweise 0 beim umwandeln.

    Um die gewollte Reinfolge zu erstellen (a,b,c [...] aa,ab [...]), m?sste man eine andere Funktion erstellen, die auf einer anderen Weise basiert, denn mit intstr() bzw. strint() ist dieses Problem leider nicht zu l?sen.

    mfg,
    hr
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!