php.de

Zurück   php.de > Lösungen durch Skripte > Scriptbörse

Scriptbörse PHP Lösungen für nen schmalen Taler

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.01.2010, 02:39  
Rubio
Gast
 
Beiträge: n/a
Standard PHP und HTML - Ein paar Probleme

Hallo.

Ich bin hier ganz neu und hätte auch direkt eine Frage.

Und zwar folgendes:
Ich möchte gerne ein Skript erstellen wo man bis 10 verschiedene Felder ausfüllen kann in Form von Buchstaben (jeweils nur eins) und Zahlen (auch nur eins) und wenn man auf "Senden" klickt soll das Skript eine Grafik erstellen.

Ich habe nun von A-Z und von 0 - 9 Grafiken erstellt und auf meinem Server geladen. Also die Buchstaben und Zahlen sind bei mir Grafiken. Des weiteren habe ich noch "Zwischengrafiken" erstellt die nicht auswählbar sind sondern immer mit erstellt werden sollen.

Hier ein kleiner Blick in den PHP-Code:
PHP-Code:
$b1 $_POST['Grafik-A'];
...

$im1 imagecreatefrompng("Standardgrafik1.png");
// 1. Feld
$i 0
while (empty(
$im2) && $i<10) { 
    
$im2 = @imagecreatefrompng("Grafik-[b]$b1[/b].png");
    
$i++; 

if(empty(
$im2)) { 
    
$im2 imagecreatefrompng("Grafik-[b]$b1[/b].png"); 


// 2. Feld
$i 0
while (empty(
$im3) && $i<10) { 
    
$im3 = @imagecreatefrompng("Grafik-$b2.png"); 
    
$i++; 

if(empty(
$im3)) { 
    
$im3 imagecreatefrompng("Grafik-$b2.png"); 

Die Grafiken heissen Grafik-A.png, Grafik-B.png, Grafik-C.png usw. Im Formular kann man nun einen Buchstaben zwischen A-Z eingeben und die richtige Grafik wird geladen.

Hier noch ein Stück Code:
PHP-Code:
$im15 imagecreatetruecolor (16727);
 
imagecopy($im15$im10000imagesx($im1), imagesy($im1));
imagecopy($im15$im213000imagesx($im2), imagesy($im2));
imagecopy($im15$im327000imagesx($im3), imagesy($im3)); 
imagecopy($im15$im441000imagesx($im4), imagesy($im4)); 
imagecopy($im15$im553000imagesx($im5), imagesy($im5)); 
imagecopy($im15$im665000imagesx($im6), imagesy($im6)); 
imagecopy($im15$im779000imagesx($im7), imagesy($im7));
imagecopy($im15$im893000imagesx($im8), imagesy($im8));
imagecopy($im15$im995000imagesx($im9), imagesy($im9));
imagecopy($im15$im10109000imagesx($im10), imagesy($im10));
imagecopy($im15$im11123000imagesx($im11), imagesy($im11));
imagecopy($im15$im12137000imagesx($im12), imagesy($im12));
imagecopy($im15$im13151000imagesx($im13), imagesy($im13));
imagecopy($im15$im14165000imagesx($im14), imagesy($im14));
 
header ("Content-type: image/png"); 
imagepng ($im15); 
?> 
Das Problem ist jetzt:
Das Skript funktioniert jetzt eigentlich aber ich muss immer ALLES eingeben (Buchstabe A-Z) und kann nicht entscheiden ob ich nur eine Grafik mit z.B. 5 Zeichen erstelle. Kann ich das nicht so machen das "keine Eingabe" also wenn man nichts eingibt so gewertet wird dass das Skript automatisch weiss "Aha an dieser Stelle lade ich Grafik-5 nicht". Versteht ihr was ich meine? Wie, wo und was muss ich dazu einbauen?

Das nächste Problem ist folgender Code:
PHP-Code:
$im15 imagecreatetruecolor (16727);
 
imagecopy($im15$im10000imagesx($im1), imagesy($im1));
imagecopy($im15$im213000imagesx($im2), imagesy($im2));
imagecopy($im15$im327000imagesx($im3), imagesy($im3)); 
imagecopy($im15$im441000imagesx($im4), imagesy($im4)); 
imagecopy($im15$im553000imagesx($im5), imagesy($im5)); 
imagecopy($im15$im665000imagesx($im6), imagesy($im6)); 
imagecopy($im15$im779000imagesx($im7), imagesy($im7));
imagecopy($im15$im893000imagesx($im8), imagesy($im8));
imagecopy($im15$im995000imagesx($im9), imagesy($im9));
imagecopy($im15$im10109000imagesx($im10), imagesy($im10));
imagecopy($im15$im11123000imagesx($im11), imagesy($im11));
imagecopy($im15$im12137000imagesx($im12), imagesy($im12));
imagecopy($im15$im13151000imagesx($im13), imagesy($im13));
imagecopy($im15$im14165000imagesx($im14), imagesy($im14));
 
header ("Content-type: image/png"); 
imagepng ($im15); 
?> 
Nehmen wir an ich hätte das erste Problem gelöst... Dann hätte ich schon das nächste. Weil wenn "im2" und "im3" Aufgrund "keiner Eingabe" nicht erstellt werden, gehen doch meine Mühsamen Einstellungen kaputt oder? Ich habe ja die ganzen Zahlen eingetragen wie z.B. 109, 123, 137 usw. Die Zahlen heissen ja: im10 wird ab 109px angezeigt oder so ähnlich aber wenn es nicht "geladen" wird stimmt ja das Endergebniss nicht mehr.

Ich weiss ich konnte mein Problem nicht gut beschreiben aber ich hoffe es kann mir trotzdem jemand helfen.

Vielen Dank.

Geändert von Rubio (31.01.2010 um 13:26 Uhr).
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.01.2010, 08:38  
Erfahrener Benutzer
 
Registriert seit: 10.01.2010
Beiträge: 386
PHP-Kenntnisse:
Fortgeschritten
ChrisvA befindet sich auf einem aufstrebenden Ast
Standard

Mal eine Frage, hast du die Buchstaben irgendwie speziell formatiert in die Grafiken abgelegt?
Anderenfalls kannst du auch auf vorhandene Fähigkeit von PHP zurückgreifen, Text in eine Grafik einzufügen.
Des weiteren fällt mir bei dir auf, dass du für jedes Feld einen Eigenen Codeblock verwendest. Versuch doch einmal mir Schleifen zu arbeiten. Dann sollte dein Code wesentlich übersichtlicher und kürzer werden. Statt der Variablennamen mit Nummern würde ich dann ein Array benutzen.
Nun zu deinem Problem:
Wenn ich das richtig verstanden habe, möchtest du die Größe der Grafik von den eingegebenen Werten abhängig machen. Das ist nicht sonderlich schwer. Du zählst die ausgefüllten Felder. Anschließend multiplizierst du das Ergebnis mit 14 und hast dann die Breite.
ChrisvA ist offline   Mit Zitat antworten
Alt 30.01.2010, 12:28  
Rubio
Gast
 
Beiträge: n/a
Standard

Hallo ChrisvA.

Erst einmal vielen Dank für deine Antwort.

Die Methode Text auf eine Grafik zu bringen hat mir nicht so gut gefallen und deswegen habe ich einfach die ganzen Buchstaben und Zahlen selber erstellt. Du kannst dir das ungefähr so vorstellen wie das "B" Zeichen hier im Editor. Also das hier:

Ich kann leider nicht mit Schleifen arbeiten da ich davon einfach nichts verstehe.
Ich bin seit Tagen schon am machen und probieren aber ich finde PHP sehr schwierig.

Zitat:
Wenn ich das richtig verstanden habe, möchtest du die Größe der Grafik von den eingegebenen Werten abhängig machen. Das ist nicht sonderlich schwer. Du zählst die ausgefüllten Felder. Anschließend multiplizierst du das Ergebnis mit 14 und hast dann die Breite.
Und wie kann ich das machen? Kannst Du mir dabei helfen? Eine Frage noch. Es sind nicht alle Grafiken 14px Breit, wäre das ein Problem? Die Buchstaben und Zahlen sind 14px Breit aber die Linke, Mittlere und Rechts Grafik sind alle drei unterschiedlich breit (von 2px bis 12px).

Zitat:
Des weiteren fällt mir bei dir auf, dass du für jedes Feld einen Eigenen Codeblock verwendest. Versuch doch einmal mir Schleifen zu arbeiten. Dann sollte dein Code wesentlich übersichtlicher und kürzer werden. Statt der Variablennamen mit Nummern würde ich dann ein Array benutzen.
Und wie kann ich das machen? Hättest du ein Beispiel oder so für mich?

Ich freue mich schon sehr auf eine Antwort.

Edit: Ich könnte, wenn es weiterhilft auch den kompletten SourceCode hier im Forum posten.

Geändert von Rubio (30.01.2010 um 12:39 Uhr).
  Mit Zitat antworten
Alt 30.01.2010, 13:14  
Erfahrener Benutzer
 
Registriert seit: 10.01.2010
Beiträge: 386
PHP-Kenntnisse:
Fortgeschritten
ChrisvA befindet sich auf einem aufstrebenden Ast
Standard

Also der Komplette Code könnte schon helfen. Falls er zu lang zum posten ist, würde es auch reichen, falls du ihn auf deinem Webspace zum Download bereitstellst. (Einfach die Endung php durch txt ersetzen)
Die Breite berechnen sollte kein Problem sein. Auch wenn du ab und zu mal eine Extragrafik hast. (Was meinst du genau mit der Mittelgrafik?, Hast du mal ein fertiges Beispielbild)
Das Beispiel für die Schliefen kann ich dir leider erst dann geben, wenn ich den kompletten Code kenne.
Allerdings sollte für dich eine Schleife wie for($i=0; $i < $AnzahlDerBuchstaben; ++$i) passen.
ChrisvA ist offline   Mit Zitat antworten
Alt 30.01.2010, 16:16  
Rubio
Gast
 
Beiträge: n/a
Standard

Hallo ChrisvA.

Das mit den Bildern ist so. Hier ein Beispiel wenn alle Felder ausgefüllt werden.

0 1 1 1 0 1 1 0 1 1 1 1 0

0 = Feste Grafik
1 = Vom Benutzer auswählbar

Hier der PHP-Code (komplett)
PHP-Code:
$abc1 $_POST['ABC1']; 
Vielen Dank für deine Hilfe!

Geändert von Rubio (31.01.2010 um 12:32 Uhr).
  Mit Zitat antworten
Alt 30.01.2010, 19:09  
Erfahrener Benutzer
 
Registriert seit: 10.01.2010
Beiträge: 386
PHP-Kenntnisse:
Fortgeschritten
ChrisvA befindet sich auf einem aufstrebenden Ast
Standard

Ich habe jetzt hier mal den Code, so wie er funktionieren sollte(, zumindest vom Prinzip her). Allerdings muss man noch die Benutzereingaben prüfen. (z.B. sollte eine Eingabe Punkte oder Slashes enthalten)
Außerdem wusste ich die der einzelnen Grafiken nicht genau. Du musst sie gegebenenfalls noch anpassen.
Zudem kannst du noch als Training auch die Übernahme der Variablen in eine Schleife setzen.
Hatte es einen Grund, dass du immer 11mal versucht hast eine Grafik zu laden, falls diese nicht vorhanden war? (habe das ganze jetzt durch eine Prüfung, ob die Datei existiert ersetzt. )
Mit der Variablen $folder kannst du nun auch die Buchstabengrafiken in einen eigenen Ordner packen und musst sie nicht im Skript-Ordner haben.
PHP-Code:
<?php

$akz
[1] = trim($_POST['ABC1']);
$akz[2] = trim($_POST['ABC2']);
$akz[3] = trim($_POST['ABC3']);
$akz[4] = trim($_POST['ABC4']);
$akz[5] = trim($_POST['ABC5']);
$akn[1] = trim($_POST['Z1']);
$akn[2] = trim($_POST['Z2']);
$akn[3] = trim($_POST['Z3']);
$akn[4] = trim($_POST['Z4']);

// Gesamte Bildbreite
$total_size_x=0;

// ########## Feste Grafik ##########
$im[0]['img'] = imagecreatefrompng($folder.'BildS1.png');
// Größe der Grafik nach rechts
$im[0]['sizex']= 3;
$total_size_x +=3;

 

// Ordner in dem die einzelnen Grafiken liegen
$folder='';

// Die 3 ersten Bilder
for($j=1$j 4; ++$j){
    if(
file_exists($folder.$akz[$j].'.png')){
        
array_push($im, array(
        
'img' => @imagecreatefrompng($folder.$akz[$j].'.png'),
        
// Größe der Buchstaben nach rechts
        
'sizex' => 14    ) );
        
$total_size_x +=14;
    }




array_push($im, array(
        
'img' => @imagecreatefrompng($folder.'BildS2.png'),
        
// Größe der Zwischnzeichens nach rechts
        
'sizex' => 3    ) );
$total_size_x +=3;


// Die nächsten 2 Zeichen
for($j=4$j 6; ++$j){
    if(
file_exists($folder.$akz[$j].'.png')){
        
array_push($im, array(
        
'img' => @imagecreatefrompng($folder.$akz[$j].'.png'),
        
// Größe der Buchstaben nach rechts
        
'sizex' => 14    ) );
        
$total_size_x +=14;
    }


// Zwischengrafik
array_push($im, array(
        
'img' => @imagecreatefrompng($folder.'BildS3.png'),
        
// Größe der Zwischenraums nach rechts
        
'sizex' => 3    ) );
        
$total_size_x +=3;

// 4 Zahlen
for($j=1$j 5; ++$j){
    if(
file_exists($folder.$akz[$j].'.png')){
        
array_push($im, array(
        
'img' => @imagecreatefrompng($folder.$akn[$j].'.png'),
        
// Größe der Ziffer nach rechts
        
'sizex' => 14    ) );
        
$total_size_x +=14;
    }



// Endgrafik
array_push($im, array(
        
'img' => @imagecreatefrompng($folder.'BildS4.png'),
        
// Größe der Zwischenraums nach rechts
        
'sizex' => 3    ) );


// ########## Output ##########
$imend imagecreatetruecolor ($total_size_x27);
 
 
// Aktueller X-Wert
 
$ac_x=0;
 
// Jedes Bild durchgehen
foreach($im as $grafik){
    
//Grafik kopieren
    
imagecopy($imend$grafik['img'], $ac_x000imagesx($grafik['img']), imagesy($grafik['img']));
    
// x-Wert für die nächste Grafik erhöhen
    
$ac_x+= $grafik['sizex'];
}

 
header ("Content-type: image/png"); 
imagepng ($imend); 
?>

Geändert von ChrisvA (30.01.2010 um 19:14 Uhr).
ChrisvA ist offline   Mit Zitat antworten
Alt 30.01.2010, 19:33  
Rubio
Gast
 
Beiträge: n/a
Standard

Hallo. Erst einmal vielen Dank für deine ganzen Mühen.

Leider bekomme ich Fehlermeldungen.

Zitat:
Warning: imagesx(): supplied argument is not a valid Image resource in /www/htdocs/XXXXXX/KFZ/Kennzeichen.php on line 92
  Mit Zitat antworten
Alt 30.01.2010, 19:37  
Erfahrener Benutzer
 
Registriert seit: 10.01.2010
Beiträge: 386
PHP-Kenntnisse:
Fortgeschritten
ChrisvA befindet sich auf einem aufstrebenden Ast
Standard

Ist das die einzige Fehlermeldung, oder kommt die öfters?
ChrisvA ist offline   Mit Zitat antworten
Alt 30.01.2010, 19:40  
Rubio
Gast
 
Beiträge: n/a
Standard

Ich fülle im Formular alle Felder aus A A A A A A A A A (ein A in jedes Feld) und schicke es ab und danach kommt das hier.

Zitat:
Fehler
Ganz unten sind auch so komische Symbole.

Edit: Ich glaube das liegt am Pfad. In deinem Code steht:

PHP-Code:
'img' => @imagecreatefrompng($folder.$akz[$j].'.png'), 
wie muss das genau aussehen wenn ich ohne "folder" arbeite?

so?

PHP-Code:
'img' => @imagecreatefrompng("$akz[$j].png"), 

Geändert von Rubio (31.01.2010 um 12:32 Uhr).
  Mit Zitat antworten
Alt 30.01.2010, 19:49  
Erfahrener Benutzer
 
Registriert seit: 10.01.2010
Beiträge: 386
PHP-Kenntnisse:
Fortgeschritten
ChrisvA befindet sich auf einem aufstrebenden Ast
Standard

Das Problem liegt daran, dass er keine Bilder findet.
Die Buchstabengrafiken filtert er aus, da diese mit file_exists() geprüft werden. Die "Festen Grafiken" aber nicht.
Hast du das Skript im selben Ordner wie die Grafiken?

PS: Die Zeichen unten am Bild kommen von den gesendeten Bild. Da Der Browser aber zunächst noch ASCII-Code bekommt, interpretiert er dieses Bild auch als normalen Text.
ChrisvA ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Firefox / IE - Probleme HTML, Usability und Barrierefreiheit 5 20.07.2009 17:04
ein paar Fragen (wegen eines Loginhistory) Ninos PHP Tipps 2009 5 04.04.2009 14:59
Probleme mit dem UserSystem pixelprinzessin PHP Tipps 2008 42 04.08.2008 11:41
Paar Probleme bei Auktionsscript ghost120 PHP Tipps 2008 51 08.05.2008 16:00
Ein paar probleme Talinsei PHP Tipps 2008 3 17.04.2008 13:17
Probleme bei Speicherung von serialize() Strings Manni2k PHP Tipps 2006 13 15.10.2006 15:06
Kubuntu Probleme zwerg Server, Hosting und Workstations 1 28.07.2006 23:50
Ein paar Probleme mit einem Gästebuch PHP Tipps 2006 8 23.01.2006 21:05
Probleme bei der Installation von Turck MMCache tomx992 PHP-Fortgeschrittene 2 27.09.2005 20:31
suche ein paar Leute, die mir bei einem OGame helfen der.Chris Beitragsarchiv 24 08.08.2005 21:27
probleme mit mysql tabellen! fadass Datenbanken 6 13.07.2005 09:20
Zwei Rechner ins Netz - Router - Hub - Probleme... imported_Ben Off-Topic Diskussionen 37 13.01.2005 21:36
[Erledigt] Technische Probleme mit Sessions PHP-Fortgeschrittene 4 18.11.2004 14:45
Probleme Mit Variablen-Übergabe PHP-Fortgeschrittene 2 26.10.2004 13:40
paar probleme mit php bzw. apache <- help PHP Tipps 2004 3 14.06.2004 15:06


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:58 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum