SELFPHP: Version 5.6.9 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



iOS DevCon 2013



Software Architecture Summit 2013


Deine Leidenschaft ist die Unterwasserfoto-grafie?


Dann ist Qozido genau das Richtige für Dich!

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!

www.qozido.de

 

CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 


Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 23.10.2008, 18:25:53
terra75 terra75 ist offline
Anfänger
 
Registriert seit: Oct 2008
Beiträge: 7
terra75 befindet sich auf einem aufstrebenden Ast
Objektiv Gebildet !

Servuz zusammen !

Ich hoffe, jetzt mal das die Spezialisten unter euch mir hier weiterhelfen können !?!?

Kurzbeschreibung:
In einer DB habe ich ein Bildernamen, den ich mir mit WHILE auslese! Eine Schleife ist in Anmarsch !!!

Dieses Bild ist etwa 180x380px groß und in 3 Spalten und 4 Zeilen Einzelbilder unterteilt. Sprich, es sind 12 kleine einzelne Bildchen auf dem großen Bild zu sehen ! Bis jetzt verstanden? OK.

Mittels einer Funktion lese ich die einzelnen Bildchen auf dem großen Bild aus und speicher diese in einer Variable. Die untere Funktion speichert nur ein Bild um es jetzt nicht zu kompliziert zu machen.

PHP-Code:
function rasterpic ($bild$ausgabebild) {

$sourcefile_id  imageCreatefrompng($bild);
$insertfile_id imageCreate2433 );

imageCopy ($insertfile_id$sourcefile_id00002433 );
header("Content-type: image/png");

imagecolortransparent $insertfile_idimagecolorat$insertfile_id1));
imagepng ($insertfile_id$ausgabebild);

imagedestroy($insertfile_id);
imagedestroy($sourcefile_id);


Sieht im ersten Augenblick komplizierter aus als es ist. Variable $bild ist das Originalbild, das von Platte gelesen wird. Variable $ausgabebild ist das Teilstück von $bild. Von dem 180x380px großem $bild habe ich von der obere linke Ecke einen 24x33px großen Bereich in die Variable $ausgabebild gespeichert !

OK, schön, das es geklappt hat. ... Funktionen sind ja bekannt dafür in einer anderen Datei wieder aufgerufen zu werden. machen wir das doch mal.
PHP-Code:
 rasterpic('../images/bots/'.$zeile['bot_pic'], ausgabebild); 
Na sowas? warum hat die Variable ausgabebild kein $ am anfang? ... Tja, es handelt sich hierbei um ein Objekt, das das Teil-Bild enthällt. Mache ich ein $ vor die Variable, wird mir der Quellcode des Bildes angezeigt! Als wenn ihr ein Bild mit nem Texteditor öffnen würdet. Nun gut ... und wie zeige ich jetzt das Bild an?

Gaaanz einfach !
PHP-Code:
<img src='.ausgabebild.'
Na wunderbar ! ... klappt alles so wie es soll ........... FALSCH !

Anscheinend doch nicht, da wie am Anfang beschrieben es sich um eine WHILE schleife handelt. Dem zu folge gibt es mehrere Bilder ! RICHTIG !

Und jetzt das kurriose ... es wird mir immer nur das letzte aufgerufende Bild in allen Tabellenspalten angezeigt. Der Rest der Datenbankabfrage funktioniert einwandfrei !

Habe bereits versucht das Objekt nach der Anzeige zu löschen ... bringt alles nix.
Also, wer kann mir jetzt helfen ? ... Denke mal, ich habe hier jetzt meine Problematik mehr als perfekt beschrieben !

LG Terra

Geändert von terra75 (23.10.2008 um 18:34:13 Uhr)
Mit Zitat antworten
  #2  
Alt 23.10.2008, 20:13:35
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Beiträge: 1.942
cortex befindet sich auf einem aufstrebenden Ast
un-gebilde

Zitat:
Zitat von terra75 Beitrag anzeigen
Denke mal, ich habe hier jetzt meine Problematik mehr als perfekt beschrieben
nein, du hast vielmehr eine theatralische kurzgeschichte hingelegt.

Zitat:
Zitat von terra75 Beitrag anzeigen
es wird mir immer nur das letzte aufgerufende Bild in allen Tabellenspalten angezeigt. Der Rest der Datenbankabfrage funktioniert einwandfrei
dieser beschreibung nach vermute ich das problem in der while-schleife: das letzte ergebnis der schleife wird vom jeweils nachfolgenden ergebnis überschrieben. nun... den teil des quelltextes hast du ja leider nicht gepostet; an deiner stelle würde ich dort mit der fehlersuche beginnen.

cx
Mit Zitat antworten
  #3  
Alt 23.10.2008, 21:04:32
terra75 terra75 ist offline
Anfänger
 
Registriert seit: Oct 2008
Beiträge: 7
terra75 befindet sich auf einem aufstrebenden Ast
AW: Objektiv Gebildet !

ok ... hab ich wirklich vergessen .. hier mal ein kurzauszug der schleife ...
Und nicht gleich meckern weil da überall BOT steht ... das ist für ein eigenes Spiel und nicht für was anderes !

PHP-Code:
if ($_GET['option'] == 'showbots'){

$result mysql_query ("SELECT * FROM game_bots $search ORDER BY bot_id LIMIT $start, ".MAX_EINTRAEGE);
$resultGesamt = @mysql_query("SELECT COUNT(*) AS menge FROM game_bots");
$Eintraege = @mysql_result($resultGesamt,0,"menge");
if (
mysql_num_rows($result) > 0) {


echo 
'
<br>
<div align="center">
<table border="0" width="95%" cellspacing="1" id="text">
    <tr>
        <td align="center">ID</td>
        <td align="center">Bild</td>
        <td align="center">Name</td>
        <td align="center">Type</td>
        <td align="center">Edit</td>
        <td align="center">Delete</td>
    </tr>
'
;
        while (
$zeile mysql_fetch_array($result)){

        
$result2 mysql_query("SELECT * FROM game_bots_type WHERE bots_type_id=".$zeile['bot_type']."");
        
$row2 mysql_fetch_assoc($result2);
        
$bt_name $row2[bots_type_name];

        
rasterpic('../images/bots/'.$zeile['bot_pic'], ausgabebild);

            if (
$count++ % == 0)
                
$bgcolor '#353535';
            else
                
$bgcolor '#303030';

            echo
'    <tr bgcolor="' .$bgcolor .'" align="center" style="font-family: Verdana; font-size: 8pt;">
        <td width="50">' 
.$zeile['bot_id'] .'</td>
        <td width="30"><img src='
.ausgabebild.'></td>
        <td>' 
.$zeile['bot_name'] .'</td>

        <td>'
.$bt_name.'</td>
        <td width="40"><a href="bots.php?option=editbots&botid='
.$zeile['bot_id'].'"><img border="0" src="img/edit.png"></a>
        <td width="40"><a href="bots.php?option=deleteuser&botid='
.$zeile['bot_id'].'" onclick="return show_deleting();"><img border="0" src="img/delete.png"></a></td>
    </tr>'
;

        if (
is_object(ausgabebild)) {
         unset(
$this->ausgabebild);
        }    

    }
echo 
'</table>

<table border="0" width="95%" cellspacing="1" cellpadding="2">
<tr height="3" bgcolor="#151515"><td colspan="3"></td></tr>
<tr height="1" bgcolor="#333333"><td colspan="3"></td></tr>

<tr height="35" bgcolor="#333333" style="font-family: Verdana; font-size: 7pt; font-weight: bold; color:#ffffff">
<form method="POST" action="index.php?types=bots&option=showbots">
<input type="hidden" name="action" value="search" />
<td align="center" width="180">
<input type="text" name="searchword" size="20"><input type="submit" name="suche" value="suche">
</td></form>
        <td align="center">'
;

//der teil war unwichtig..

echo '  </td>
<td align="center" width="130"><a href="bots.php?option=editbots">Neuen Bot anlegen.</a></td>
</tr>
</table>
</center>
'
;
}} 
Mit Zitat antworten
  #4  
Alt 23.10.2008, 21:24:38
Curtains Curtains ist offline
Anfänger
 
Registriert seit: Sep 2008
Beiträge: 37
Curtains befindet sich auf einem aufstrebenden Ast
AW: Objektiv Gebildet !

Hallo terra75,

die Funktion 'rasterpic()' liefert wegen des Header-Befehls direkt ein Bild zurück.
Die Idee ist wahrscheinlich, das Bild als Inline-Grafik in HTML einzubetten:

PHP-Code:
<img src="<?php rasterpic($bild); ?>" />
Die Variable $ausgabebild macht in diesem Zusammenhang nicht viel Sinn. Schau dir mal die Funktionsbeschreibung von imagepng() an. Der zweite Parameter (in deinem Fall '$ausgabebild') ist ein optionaler Dateipfad, um das Bild in eine Datei abzuspeichern. Aber das Bild soll nicht abgespeichert, sondern direkt ausgegeben werden.

Nachtrag: Falsche Info von mir. Es hat nichts mit Inline-Grafiken zu tun. :) Du müsstest wohl dein php-Skript , welches 'rasterpic()' aufruft, im img-Tag verlinken:

PHP-Code:
<img src="blabla.php" /> 

Geändert von Curtains (23.10.2008 um 21:34:17 Uhr)
Mit Zitat antworten
  #5  
Alt 24.10.2008, 11:27:08
terra75 terra75 ist offline
Anfänger
 
Registriert seit: Oct 2008
Beiträge: 7
terra75 befindet sich auf einem aufstrebenden Ast
AW: Objektiv Gebildet !

Danke erstmal für die Antwort. Also Inline Grafik kommt allein schon wegen der fülle an Bildern nicht in Frage.

Leider verstehe ich dein 2. Vorschlag nicht so ganz. Soll ich jetzt auf die Funktion verzichten und die Raster Geschichte direkt als ausführbares Script in einer seperaten Datei schreiben?

Wo liegt da der Unterschied ?

Gibt es vielleicht eine clevere Lösung für mein Problem? Um es nochmal deutlich zu machen. Ich habe da eine große Grafik, die in kleinere Grafiken unterteilt ist. Diese sollen jetzt so in Variablen (meinetwegen ein Gruppen-Array) gespeichert werden, das ich mit einem einfachen Aufruf jedes beliebige Teilbild darstellen kann. Wichtig ist halt vorallem, das die transparenten Bereiche auch transparent bleiben. Musste ja oben bissel tricksen, damit es transparent bleibt.

Habe mal so eine Grafik angehengt, damit auch klar ist, was gemeint ist mit den Teilgrafiken.
Rufe ich die Funktion direkt im IMG Tag auf, bekomme ich einen Fehler. Siehe Error.jpg !

Terra
Miniaturansicht angehängter Grafiken
test.png   error.jpg  

Geändert von terra75 (24.10.2008 um 11:36:44 Uhr)
Mit Zitat antworten
  #6  
Alt 24.10.2008, 15:40:53
terra75 terra75 ist offline
Anfänger
 
Registriert seit: Oct 2008
Beiträge: 7
terra75 befindet sich auf einem aufstrebenden Ast
AW: Objektiv Gebildet !

Helf mir doch mal bitte einer ....

Die Funktion macht nicht das was se soll ....
PHP-Code:
function rasterpic ($bild) {
global 
$ausgabe;
$sourcefile_id  imageCreatefrompng($bild);
$insertfile_id imageCreate2433 );

$i 0;
for ( 
$x 0$x 2$x++ ) {
  for ( 
$y 0$y 3$y++ ) {
  
imageCopy ($insertfile_id$sourcefile_id00$x*24$y*3324+$x*2433+$y*33 );
header("Content-type: image/png");
imagecolortransparent $insertfile_idimagecolorat$insertfile_id1));
#imagepng ($insertfile_id);
$ausgabe[$i] = $insertfile_id;
$i++;
  }
}

imagedestroy($sourcefile_id);
#return ($insertfile_id);

Rufe ich mit rasterpic('../images/bots/'.$zeile['bot_pic']); auf.

zum Testen hab ich einfach mal echo $ausgabe[1]; gemacht ...
Als Antwort bekomme ich nur: Resource id #16
Natürlich zeigt <img src="'.ausgabe[1].'"> kein Bild an !

So langsam verzweifel ich an dem Kram. Muss doch irgendwie funktionieren.

Terra
Mit Zitat antworten
  #7  
Alt 26.10.2008, 16:24:50
terra75 terra75 ist offline
Anfänger
 
Registriert seit: Oct 2008
Beiträge: 7
terra75 befindet sich auf einem aufstrebenden Ast
AW: Objektiv Gebildet !

Hilfe ???
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:56:15 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.


© 2001-2013 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt