Aus Text-Werten ein Bild machen und wieder zurück zu Text

Sprite

Mitglied
Hallihallo,

mit eurer Hilfe war es mir damals möglich, bei einem Script, das eine Datenbank nach Werten ausliest, diese ausgelesenen Werte je nach Inhalt per switch in Bilder umzuwandeln.
Das wollte ich jetzt bei einem ähnlichen vorgefertigten Script des Tools benutzen, das nach dem selben Prinzip arbeitet. Leider nutzt das Script am Ende für eine Lösch- und Edit-Funktion diese Werte nochmal. Darum werden die Funktionen zerstört, weil in dem Quellcode statt dem Wert nun das verlinkte Bild erscheint.

Aber genug geredet, ich zeigs mal. Der Übersichtlichkeit halber habe ich nur eine Klasse und Rasse benutzt.


PHP:
	while($data = $db_raid->sql_fetchrow($result))
	{
	
	
		switch($data['race'])
		{
			case $phprlang['human']:
				if($data['gender'] == 'male')
					$data['race'] = '<img src="pics/' . $config['template'] . '/faces/hu_male.gif">';
				else
					$data['race'] = '<img src="pics/' . $config['template'] . '/faces/hu_female.gif">';
				break;
		}	
		
		switch($data['class'])
		{
			case $phprlang['shaman']:
				$data['class'] = ' <img src="pics/' . config['template'] . '/classes/shaman_icon_huge.png"';
				break;

		}
	
	
		array_push($chars, 
			array(
				'ID'=>$data['char_id'],
				'Name'=>$data['name'],
				'Guild'=>$data['guild'],
				'Level'=>$data['lvl'],
				'Race'=>$data['race'],
				'Class'=>$data['class'],
				''=>'<a href="charakter.php?mode=remove&n='.$data['name'].'&id='.$data['char_id'].'"><img src="pics/' . $config['template'] . '/icons/icon_delete.gif"></a>
				
				     <a href="charakter.php?mode=edit&race='.$data['race'].'&id='.$data['char_id'].'"><img src="pics/' . $config['template'] . '/icons/icon_edit.gif"></a>'));
	}


Mein Problem sind also die beiden Links ganz am Ende. In dem fertigen Link, wo dann stehen müsste charakter.php?mode=edit&race=human steht nun quasi charakter.php?mode=edit&race=<img src="pics/temp/faces/hu_male.gif"> und zerstört damit den Edit-Button. Löschen geht noch, weil der Werte benutzt, die nicht in Bilder umgewandelt werden.


Ist es möglich, diese Sachen zu trennen? Also dass er einmal Bilder aus den Werten macht und beim Edit-Button wieder Texte?

MfG
Sprite
 
Zuletzt bearbeitet:
Hmm.

Gehe ich recht in der Annahme, dass es völlig unmöglich ist, in dieser while-Schleife die Daten bei der Ausgabe zu trennen und auch in der gesamten php-Datei, solange $data['race'] zweimal für unterschiedlich Sachen benutzt werden soll?
 
Moin,

wenn du die Daten in 2 unterschiedlichen Formen benötigst, dann belasse sie doch beim kleinsten gemeinsamen Nenner und erstelle für die Buttons eine andere Variable. :)
 
Die Idee hatte ich schon und habe die Links rausgenommen und dann unten drunter alleine durch die gleiche Variable geschickt.
Das Problem daran ist nur, dass das Tool so aufgebaut ist, dass es die beiden Links auf der fertigen Seite dann eine Tabelle weiter unten einrückt, statt auf der selben Zeile wie die Bilder.
Das ist dann doch zu verwirrend, wenn Name, Bilder, Level auf einer Zeile stehen und das Editieren und Löschen weiter unten :(.
 
Ich meinte das ca. so:
Code:
while($data = $db_raid->sql_fetchrow($result))
    {
    
    
        switch($data['race'])
        {
            case $phprlang['human']:
                if($data['gender'] == 'male')
                    $data['race'] = 'hu_male';
                else
                    $data['race'] = 'hu_female';
                break;
        }    
        
        switch($data['class'])
        {
            case $phprlang['shaman']:
                $data['class'] = ' <img src="pics/' . config['template'] . '/classes/shaman_icon_huge.png"';
                break;

        }
    
    
        array_push($chars, 
            array(
                'ID'=>$data['char_id'],
                'Name'=>$data['name'],
                'Guild'=>$data['guild'],
                'Level'=>$data['lvl'],
                'Race'=> '<img src="pics/' . $config['template'] . '/faces/'.$data['race'].'.gif">',
                'Class'=>$data['class'],
                ''=>'<a href="charakter.php?mode=remove&n='.$data['name'].'&id='.$data['char_id'].'"><img src="pics/' . $config['template'] . '/icons/icon_delete.gif"></a>
                
                     <a href="charakter.php?mode=edit&race='.$data['race'].'&id='.$data['char_id'].'"><img src="pics/' . $config['template'] . '/icons/icon_edit.gif"></a>'));
    }

Im Ergebnisarray bleibt data['race'] unangetastet, und die Bilder/LInks sollten genauso herauskommen, wie du sie bisher hast.
 
Oha, so meintest Du das, ok.

Das ist schon zu 90% die Lösung, die ich suche :). Das letzte Hindernis ist jedoch, dass die Bilder im Namen schon nach Geschlecht unterscheiden, also hu_male und hu_female. Der race-Wert aus der DB ist jedoch geschlechtslos, also nur "Human" und mit Großschreibung am Anfang und genau so brauchts der Edit-Button.
 
Auch da sehe ich keine Probleme....
Code:
while($data = $db_raid->sql_fetchrow($result))
    {
      
    
        switch($data['race'])
        {
            case $phprlang['human']:
                if($data['gender'] == 'male')
                    $Race = 'hu_male';
                else
                    $Race= 'hu_female';
                break;
            default: $Race='';
        }    
        
        switch($data['class'])
        {
            case $phprlang['shaman']:
                $data['class'] = ' <img src="pics/' . config['template'] . '/classes/shaman_icon_huge.png"';
                break;

        }
    
    
        array_push($chars, 
            array(
                'ID'=>$data['char_id'],
                'Name'=>$data['name'],
                'Guild'=>$data['guild'],
                'Level'=>$data['lvl'],
                'Race'=> '<img src="pics/' . $config['template'] . '/faces/'.$Race.'.gif">',
                'Class'=>$data['class'],
                ''=>'<a href="charakter.php?mode=remove&n='.$data['name'].'&id='.$data['char_id'].'"><img src="pics/' . $config['template'] . '/icons/icon_delete.gif"></a>
                
                     <a href="charakter.php?mode=edit&race='.$data['race'].'&id='.$data['char_id'].'"><img src="pics/' . $config['template'] . '/icons/icon_edit.gif"></a>'));
    }
...wobei ich es persönlich wohl eher so machen würde, dass die Bilder für Race ihren Namen aus $data['race'] und $data['gender'] zusammengesetzt bekommen...das erfordert überhaupt keine weiteren Prüfungen.
 
Vielen lieben Dank. Kleine Änderung, große Wirkung(!)

...wobei ich es persönlich wohl eher so machen würde, dass die Bilder für Race ihren Namen aus $data['race'] und $data['gender'] zusammengesetzt bekommen...das erfordert überhaupt keine weiteren Prüfungen.

Naja, äh... sehr gerne. Allerdings übersteigt das mein Know-how extreeeem :). Ich wüsste nicht mit welchem Befehl anfangen, womit aufhören, weil ich nur einfach Grund-Kentnisse habe. Ich kann zwar fertige Scripte etwas umschreiben mit vorhandenen Sachen oder was einpflegen und in der DB manuell Tabellen oder Werte anlegen/kopieren/etc., aber neu programmieren kann ich leider gar nicht. Dazu nutze ich php zu selten und grübel dann 5 Tage über solchen "lächerlichen" Problemen bis ich Hilfe suche und dann ein Programmierer wie du es nach zwei Mal durchlesen löst.

Das ist wie als ob man 5 Jahre in Ägypten lebt und sich dann ordentlich unterhalten kann, aber sobald man was schreiben soll, steht man im Regen und kriegt keine 5 Worte hin ;).

Ich hatte ja schon diese oben genannte 2-Zeilen-Sache akzeptiert, dass oben die Daten und unten die Buttons sind. Zwar nicht schön oder komfortabel und sicher auch Serverlastiger, aber hätte immerhin ohne Hilfe funktioniert.
 
Naja, jeder Datensatz hat ja $race und $gender.

Angenommen, du würdest jetzt deine Bilder bspw. human_male oder human_female benennen, dann bräuchtest du nur
Code:
'Race'=> '<img src="pics/' . $config['template'] . '/faces/'.$data['race'].'_'.$data['gender'].'.gif">',
...schreiben, und jegliche vorherige Verarbeitung wäre eingespart :)
 
Zurück