Varibale Bild generieren

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

  • #16
    Es scheint ja relativ offensichtlich zu sein, dass banner.php kein Bild ist. Ich denke, die Meldung kommt auch nicht aus dem geposteten Code.
    Das ist aber mit Sicherheit nicht die einzige Fehlermeldung, die du erhälst. Wie willst du denn ein Bild aus Variablen erstellen, die du noch gar nicht definiert hast.

    Um das Ganze etwas abzukürzen (und das seitenweise posten von switch()-cases zu verhindern), schau dir das mal an:
    PHP-Code:
    <?php
    ini_set
    ('display_errors','1');
    error_reporting(E_ALL);

    mysql_connect('IP_Adresse''Login''PW') or die("Could not connect to server");
    mysql_select_db('ascent') or die("Could not find database.");

    if (!empty(
    $_GET['char'])){
        
    $sql "
            SELECT 
                c.guid, 
                c.name, 
                c.race, 
                c.class, 
                c.gender, 
                c.level, 
                c.skills, 
                c.online,
                gd.guildid, 
                gd.playerid,
                g.guildName
            FROM 
                characters c
            INNER JOIN
                guild_data gd ON gd.playerid = c.guid    
            INNER JOIN
                guilds g USING(guildId)
            WHERE 
                name = '" 
    htmlspecialchars($_GET['char']) . "'";
        
    $query mysql_query($sql) or die(mysql_error());
        
    $row mysql_fetch_assoc($query);
        
    $counter mysql_num_rows($query);

        if(
    $counter == 0){
            
    $guild "";
        }
        else{
            
    $name $row['name'];
            
    $race $row['race'];
            
    $classe $row['class'];
            
    $gender $row['gender'];
            
    $level "Level " $row['level'];
            
    $skillstring $row['skills'];
            
    $online $row['online'];

            
    $guild "Gilde: " $row['guildName'];

            if(
    $race >= && $race <= 11){
                
    $im_ar = array('''Mensch_''Orc_''Zwerg_''Nachtelf_''Untoter_'
                            
    'Taure_''Gnom_''Troll_''Blutelf_''Draenei_''Error_Rasse_');
                
    $img2 $im_ar[$race];
                
    $im_ar = array('''Krieger_''Paladin_''Jaeger_''Schurke_''Priester_''Schamane_'
                               
    'Magier_''Hexenmeister_''Druide_''Error_Klasse_');
                
    $img3 $im_ar[$classe];
                
    $im_ar = array('''m.png''w.png''Error_Geschlecht.png');
                
    $imag4 $im_ar[$gender];
            }
            
    Header("Content-Type: image/png");
            
    $img ImageCreateFromJPEG ('images/' $imag2 $imag3 $imag4);
            
    ImageJPEG($img);
        }
    }
    ?>
    Gruss
    H2O

    Kommentar


    • #17
      Danke für die Hilfe soweit

      Musste es zwar noch etwas ändern aber per array das zu machen darauf wäre ich net gekommen^^.

      hab aber noch ne Frage zu dem Code hier:
      PHP-Code:
                  c.guid
                  
      c.name
                  
      c.race
                  
      c.class, 
                  
      c.gender
                  
      c.level
                  
      c.skills
                  
      c.online,
                  
      gd.guildid
                  
      gd.playerid,
                  
      g.guildName
              FROM 
                  characters c
              INNER JOIN
                  guild_data gd ON gd
      .playerid c.guid    
              INNER JOIN
                  guilds g USING
      (guildId
      Was passiert da genau
      Hab das so in dieser Art noch nie gesehen.

      Kommentar


      • #18
        ZU den JOINS gibts hier im Datenbank-Forum ein paar Erklärungen.
        Zu dieser Abfrage, kurz zusammengefasst:
        Es werden die genannten Daten aus den drei genannten Tabellen (da ich schreibfaul bin, habe ich Aliases - c, g, gd - genommen). Dabei wird die Verbindung zwischen jeweils zwei Tabellen über die in den JOINS genannten Bedingungen gemacht; mit USING, wenn die Attribute in beiden Tabellen gleich heissen, sonst mi ON (ON geht aber auch im ersten Fall).
        Gruss
        H2O

        Kommentar


        • #19
          Ah ok danke

          Hab noch ne Frage ich bin jetzt bei der Schrift nur ich find nicht heraus wie ich den Text rechtsbündig hin bekomme. Kann mir einer sagen wie das geht?

          PHP-Code:
                  $yellow ImageColorAllocate($img25521888);
                  
          $black =  ImageColorAllocate($img000);
                  
          $font_1 "fonts/Van Helsing.ttf";
                  
          $font_2 "fonts/TektonPro-BoldCond.otf";
                  
          $size_1 10;
                  
          $size_2 19;
                  
                  
          //Charname
                  
          imagefttext($img$size_20424133$black$font_1$name);
                  
          imagefttext($img$size_20423132$yellow$font_1$name); 

          Kommentar


          • #20
            PHP-Code:
            if($classe == OR $classe == OR  $classe == OR $classe == OR $classe == OR $classe == OR  $classe == OR $classe == OR  $classe == 11
            meinst du nicht das

            PHP-Code:
             if($classe != || $classe != 10
            das script übersichtilicher macht?

            Kommentar


            • #21
              Original geschrieben von trainmen
              Ah ok danke

              Hab noch ne Frage ich bin jetzt bei der Schrift nur ich find nicht heraus wie ich den Text rechtsbündig hin bekomme. Kann mir einer sagen wie das geht?

              PHP-Code:
                      $yellow ImageColorAllocate($img25521888);
                      
              $black =  ImageColorAllocate($img000);
                      
              $font_1 "fonts/Van Helsing.ttf";
                      
              $font_2 "fonts/TektonPro-BoldCond.otf";
                      
              $size_1 10;
                      
              $size_2 19;
                      
                      
              //Charname
                      
              imagefttext($img$size_20424133$black$font_1$name);
                      
              imagefttext($img$size_20423132$yellow$font_1$name); 
              mithilfe der grösse des bildes und imagettfbbox
              Freedom is a state of mind. Not a state in which we live.

              troxdev.ch | animefieber

              Kommentar


              • #22
                Wenn ich das richtig versteht berrechnet imagettfbbox die 4 Positonen des Textes. Also die linke untere und obere Ecke und die rechts untere und obere Ecke, dann werden 8 Werte ausgegeben.

                Aber was mach ich den dann damit der Text rechtbündig oder miittig ausgegeben wird?
                Hätte einer vllt ein kleines Beispiel?

                Kommentar


                • #23
                  Okay das hab ich jetzt hinbekommen^^, aber jetzt bin ich beim nächsten Problem -.-. Und zwar wird nur ein neues Element im array erstellt. Ich versteh nur nicht warum. Die Varibale $skillid hat hier den Wert 171 und 182. Hier wird dann aber nur der erste Wert gespeichert.

                  Dies ist nur ein Teil des Code, wenn ihr mehr braucht sagt bescheid.

                  PHP-Code:
                  $beruf = array();
                     

                          foreach( 
                  $newskillstring as $key => $val )
                             {
                              if( 
                  $newskillstring[$key] != "0 0 0" or $newskillstring[$key] != "0;0;0" )
                              {
                                  if( 
                  $skillType == )
                                     {
                                      
                  $subparts explode" " $newskillstring[$key] );
                                      
                  $skillid $subparts[0];
                                  }
                                  else
                                  {
                                      
                  $subparts explode";" $newskillstring[$key] );
                                      
                  $skillid $subparts[0];
                                  }

                                  
                  //$skillid = $subparts[0] - 0x10000;

                                  
                  switch( $skillid )
                                  {
                                      case 
                  164:
                                      
                  $beruf[] = "professions/Schmiedekunst.png";
                                      break;
                                      case 
                  165:
                                      
                  $beruf[] = "professions/Lederverarbeitung.png";
                                      break;
                                      case 
                  171:
                                      
                  $beruf[] = "professions/Alchemie.png";
                                      break;
                                      case 
                  182:
                                      
                  $beruf[] = "professions/Kraeuterkunde.png";
                                      break;
                                      case 
                  186:
                                      
                  $beruf[] = "professions/Bergbau.png";
                                      break;
                                      case 
                  197:
                                      
                  $beruf[] = "professions/Schneiderei.png";
                                      break;
                                      case 
                  202:
                                      
                  $beruf[] = "professions/Ingenieurkunst.png";
                                      break;
                                      case 
                  333:
                                      
                  $beruf[] = "professions/Verzauberungskunst.png";
                                      break;
                                      case 
                  393:
                                      
                  $beruf[] = "professions/Kürschnnerei.png";
                                      break;
                                      case 
                  755:
                                      
                  $beruf[] = "professions/Juwelenschleifen.png";
                                      break;
                                      default:
                                      
                  $proficon "";
                          }
                    
                  $beruf_00 $beruf[0];
                    
                  $beruf_01 $beruf[1];
                          
                      
                  $beruf_0 imagecreatefrompng($beruf_00);
                       
                  imagecopy($img$beruf_0130130002222);
                           
                      
                  $beruf_1 imagecreatefrompng($beruf_01);
                       
                  imagecopy($img$beruf_1130130002222);

                           

                        }

                        }

                           
                  ImagePNG($img);

                  ?> 

                  Kommentar


                  • #24
                    Bitte brich mal deinen früher geschriebenen Code um, horizontal scrollen ist lästig!

                    Nun aber zu deinem Problem:
                    Entscheidend ist natürlich, was in $newskillstring steht, das entscheidet, wie oft die Schleife durchlaufen wird, und auch was in $skillid steht.
                    Gruss
                    H2O

                    Kommentar


                    • #25
                      Original geschrieben von H2O
                      Bitte brich mal deinen früher geschriebenen Code um, horizontal scrollen ist lästig!


                      Wenn ich das richtig seh kann ich da nicht viel machen weil "KickASS" einen langen PHP Code hier hat

                      Original geschrieben von H2O
                      Nun aber zu deinem Problem:
                      Entscheidend ist natürlich, was in $newskillstring steht, das entscheidet, wie oft die Schleife durchlaufen wird, und auch was in $skillid steht.
                      Hm okay, dann wird der teil woll auch wichtig seien:


                      $skillstring = 171;13;75;182;1;75;

                      PHP-Code:
                              
                            
                      if( stristr$skillstring ";" ) )
                              {
                                  
                      $skillType 1// new type
                                  
                      $allparts explode";" $skillstring );
                              }
                                 else
                              {
                                     
                      $skillType 0// old type
                                     
                      $allparts explode" " $skillstring );
                              }

                              
                      $professions = array( 164 165 171 182 186 197 202 333 393 755 );
                              
                      $badprofessions = array( 65700657016570765718657226573365738
                      658696592966291 );
                              
                      $parts = array();
                          
                      $newskillstring = array();
                          


                          
                              for( 
                      $i 0$i count$allparts ) ; $i += )
                              {
                                  
                      $parts[$i] = $allparts[$i];
                            
                                  if( !isset( 
                      $allparts[$i+1] ) )
                                      
                      $parts[$i+1] = 0;
                                  else
                                      
                      $parts[$i+1] = $allparts[$i+1];
                              
                              
                                  if( !isset( 
                      $allparts[$i+2] ) )
                                      
                      $parts[$i+2] = 0;
                                  else
                                      
                      $parts[$i+2] = $allparts[$i+2];
                              
                              

                                  if( 
                      $skillType == )
                                  {
                                      
                      $newskillstring[$i] = str_replace"\n" "" $parts[$i] . 
                      $parts[$i+1] . " " $parts[$i+2] );
                                  }
                                  else
                                  {
                                      
                      $newskillstring[$i] = str_replace"\n" "" $parts[$i] . ";
                      $parts[$i+1] . ";" $parts[$i+2] );
                                  }
                          }
                         
                         
                         
                      $beruf = array();
                         

                              foreach( 
                      $newskillstring as $key => $val )
                                 {
                                  if( 
                      $newskillstring[$key] != "0 0 0" or $newskillstring[$key] != "0;0;0" )
                                  {
                                      if( 
                      $skillType == )
                                         {
                                          
                      $subparts explode" " $newskillstring[$key] );
                                          
                      $skillid $subparts[0];
                                      }
                                      else
                                      {
                                          
                      $subparts explode";" $newskillstring[$key] );
                                          
                      $skillid $subparts[0];
                                      }

                                      
                      //$skillid = $subparts[0] - 0x10000;

                                      
                      switch( $skillid )
                                      {
                                          case 
                      164:
                                          
                      $beruf[] = "professions/Schmiedekunst.png";
                                          break;
                                          case 
                      165:
                                          
                      $beruf[] = "professions/Lederverarbeitung.png";
                                          break;
                                          case 
                      171:
                                          
                      $beruf[] = "professions/Alchemie.png";
                                          break;
                                          case 
                      182:
                                          
                      $beruf[] = "professions/Kraeuterkunde.png";
                                          break;
                                          case 
                      186:
                                          
                      $beruf[] = "professions/Bergbau.png";
                                          break;
                                          case 
                      197:
                                          
                      $beruf[] = "professions/Schneiderei.png";
                                          break;
                                          case 
                      202:
                                          
                      $beruf[] = "professions/Ingenieurkunst.png";
                                          break;
                                          case 
                      333:
                                          
                      $beruf[] = "professions/Verzauberungskunst.png";
                                          break;
                                          case 
                      393:
                                          
                      $beruf[] = "professions/Kürschnnerei.png";
                                          break;
                                          case 
                      755:
                                          
                      $beruf[] = "professions/Juwelenschleifen.png";
                                          break;
                                          default:
                                          
                      $proficon "";
                              }

                        
                      $beruf_00 $beruf[0];
                        
                      $beruf_01 $beruf[1];
                              
                          
                      $beruf_0 imagecreatefrompng($beruf_00);
                           
                      imagecopy($img$beruf_0130130002222);
                               
                          
                      $beruf_1 imagecreatefrompng($beruf_01);
                           
                      imagecopy($img$beruf_1130130002222);

                               

                            }

                            }

                               
                      ImagePNG($img); 

                      Irgendwie seh ich aber den Fehler nicht

                      Kommentar


                      • #26
                        Ich würde dir empfehlen, in einem ruhigen Agenblick dich einmal etwas mit dem Einrücken von Code zu beschäftigen.
                        Ich habs jetzt ausnahmsweise mal halbwegs gemacht, weil ich es sonst schlichtweg nicht lesen kann. Dabei habe ich die Anmerkungen direkt als Kommentar in den Code geschrieben.
                        PHP-Code:
                        <?php
                        if (stristr$skillstring ";" )){
                            
                        $skillType 1// new type
                            
                        $allparts explode";" $skillstring );
                        }
                        else{
                            
                        $skillType 0// old type
                            
                        $allparts explode" " $skillstring );
                        }

                        $professions = array( 164 165 171 182 186 197 202 333 393 755 );
                        $badprofessions = array( 65700657016570765718657226573365738658696592966291 );
                        $parts = array();
                        $newskillstring = array();

                        for (
                        $i 0$i count($allparts) ; $i += 3){
                            
                        $parts[$i] = $allparts[$i];
                              
                            if (!isset( 
                        $allparts[$i 1] ) ){
                                
                        $parts[$i 1] = 0;
                            }
                            else{
                                
                        $parts[$i 1] = $allparts[$i 1];
                            }
                            if (!isset( 
                        $allparts[$i+2] ) ){
                                
                        $parts[$i 2] = 0;
                            }
                            else{
                                
                        $parts[$i 2] = $allparts[$i 2];
                            }
                            if (
                        $skillType == ){
                                
                        $newskillstring[$i] = str_replace("\n" "" $parts[$i] . " " $parts[$i 1] . " " $parts[$i 2] );
                            }
                            else
                            {
                                
                        $newskillstring[$i] = str_replace"\n" "" $parts[$i] . ";" $parts[$i+1] . ";" $parts[$i+2] );
                            }
                        }

                        $beruf = array();
                        foreach (
                        $newskillstring as $key => $val ){
                            if (
                        $newskillstring[$key] != "0 0 0" and $newskillstring[$key] != "0;0;0" ){ // AND-Verknüpfung!, OR ist immer wahr
                                
                        if( $skillType == ){
                                    
                        $subparts explode" " $newskillstring[$key] );
                                    
                        $skillid $subparts[0];
                                }
                                else{
                                    
                        $subparts explode";" $newskillstring[$key] );
                                    
                        $skillid $subparts[0];
                                }
                                        
                        //$skillid = $subparts[0] - 0x10000;

                                
                        switch ($skillid ){
                                    case 
                        164:
                                        
                        $beruf[] = "professions/Schmiedekunst.png";
                                        break;
                                    case 
                        165:
                                        
                        $beruf[] = "professions/Lederverarbeitung.png";
                                        break;
                                    case 
                        171:
                                        
                        $beruf[] = "professions/Alchemie.png";
                                        break;
                                    case 
                        182:
                                        
                        $beruf[] = "professions/Kraeuterkunde.png";
                                        break;
                                    case 
                        186:
                                        
                        $beruf[] = "professions/Bergbau.png";
                                        break;
                                    case 
                        197:
                                        
                        $beruf[] = "professions/Schneiderei.png";
                                        break;
                                    case 
                        202:
                                        
                        $beruf[] = "professions/Ingenieurkunst.png";
                                        break;
                                    case 
                        333:
                                        
                        $beruf[] = "professions/Verzauberungskunst.png";
                                        break;
                                    case 
                        393:
                                        
                        $beruf[] = "professions/Kürschnnerei.png";
                                        break;
                                    case 
                        755:
                                        
                        $beruf[] = "professions/Juwelenschleifen.png";
                                         break;
                                    default:
                                        
                        $proficon "";
                                }
                                
                        /*     Entweder Bilder einzen hier ausgeben, benötigt dann eigentlich auch keinen Array:
                        **
                        **        $beruf_0 = imagecreatefrompng($beruf[0]);
                        **        imagecopy($img, $beruf_0, 130, 130, 0, 0, 22, 22);
                        **        ImagePNG($img);    
                        */
                        // BEGIN
                                
                        $beruf_00 $beruf[0];        // es wird pro Durchlauf natürlich nur ein Beruf ausgewählt
                                
                        $beruf_01 $beruf[1];        
                         
                                
                        $beruf_0 imagecreatefrompng($beruf_00);
                                
                        imagecopy($img$beruf_0130130002222);
                                 
                                
                        $beruf_1 imagecreatefrompng($beruf_01);            // siehe oben
                                
                        imagecopy($img$beruf_1130130002222);
                        // END
                            
                        }
                        }
                        /* Oder hier neue Schleife:
                        **
                        ** foreach($beruf as $bild)
                        ** $beruf_0 = imagecreatefrompng($bild);
                        ** imagecopy($img, $beruf_0, 130, 130, 0, 0, 22, 22);
                        ** ImagePNG($img);
                        */        
                        ?>
                        Allse zwischen BEGIN und END wird dann mit der einen oder andern Version ersetzt.
                        Und so nebenbei gesagt, das ganze Handling ist reichlich kompliziert. Dieses explode()/implode() der gleichen Daten würde sich bei einer vernüftigen Datenstruktur wahrscheinlich vermeiden lassen. Das müsste aber dort geschehen, wo $skillstring herkommt.
                        Aber beitte einmal zuerst selber überlegen und das dann nicht gleich wieder als neue Frage posten.
                        Gruss
                        H2O

                        Kommentar

                        Lädt...
                        X