 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
14.04.2005, 13:50
|
#1
|
|
TP-Moderator
Registriert seit: Jan 2005
Ort: Düsseldorf
|
Array Definition???????
Tach liebe gemeinde,
ich bin mal wieder ratlos. Ein für mich nicht reproduzierbarer Fehler, noch nicht, aber ich bin so langsam am Ende meines Lateins.
Also, ich habe da ein klenes Tool am Wickel, welches aus einem Formular die Daten entgegen nimmt, sie nach zwei schlüsslen sortiert, ein fdf draus bastelt und damit dann ein pdf-formular aufruft und befüllt. So hat der User den Vorteil, ein pdf Formular mit seinen versendeten Werten zum Ausdruck parat zu haben.
Das klappt soweit auch prima. Nur hab ich das Teil jetzt etwas freier gestalten wollen, die Formulare werden dynamisch zusammengebastelt und am Ende werden zwei Hiddens eingefügt. fields und options. Dort kommen kommagetrennt zum einen alle Feldnamen der Textfelder, hiddens und Textareas rein und zum anderen alle Feldnamen der Checkboxen und Radiobuttons. Anhand dieser Werte drösel ich die Datensätze auseinander, da diese im FDF Format eine andere Synthax erhalten.
Dazu werden 4 Arrays definiert und er lässt mich nicht ein leeres array() definieren, also etwas wie array = array() gibt einen Fehler, array=('start') geht (muss ja auch gehen), Warum?
Diese Arrays sind das Problem:
$values_fields = array();
$values_options = array();
$keys_fields = array();
$keys_options = array();
array('start') würde gehen aber das will ich ja gerne weglassen, aber kann es nicht?
Die Fehlermeldung:
Er mäkelt an, dass ein array mindestens ein Element haben müsste...........
Hier ein Beispiel Formular mit den Schlüsseln und Werten:
PHP-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>HTML to PDF via FDF</title>
</head>
<body bgcolor="#f2f2f2">
<form action="example_1_ea.php" method="post" name="fdf" id="fdf" target="_self">
Gib deinen Ersten Parameter ein: <input type="text" name="Feld_Text1">
<br>
<br>
Gib deinen zweiten Parameter ein: <input type="text" name="Feld_Text2">
<br>
<br>
Und auch ein Radiobutton kann befüllt werden, oder eine Checkbox:
<br>Ja: <input type="radio" name="Radio_Button" value="Ja">
<br>Nein <input type="radio" name="Radio_Button" value="Nein">
<br>
<br>
<input type="checkbox" name="Check_Box1" value="Ja"> Ich werde in Zukunft brav sein
<br>
<input type="checkbox" name="Check_Box2" value="Ja"> UND ich mache weiter wie bisher
<br>
<br>
Und werte für eine Textarea:<br>
<textarea cols="25" rows="5" name="TextArea1">Wo steht das?</textarea>
<br>
<input type="hidden" name="fields" value="Feld_Text1,Feld_Text2,TextArea1">
<input type="hidden" name="options"value="Radio_Button,Check_Box1,Check_Box2">
<input type="submit" name="submit" id="submit" value="submit">
</form>
</body>
</html>
Und die eigentliche verarbeitende Datei:
PHP-Code:
<?php
session_start();
//FDF erzeugen, Funktion ist global einsetzbar, Formular ist piepegal
function create_fdf ($pdffile, $strings, $keys){
$fdf = "%FDF-1.2\n%????\n";
$fdf .= "1 0 obj \n<< /FDF << /Fields [\n";
foreach ($strings as $key => $value){
$key = addcslashes($key, "\n\r\t\\()");
$value = addcslashes($value, "\n\r\t\\()");
$fdf .= "<< /T ($key) /V ($value) >> \n";
}
foreach ($keys as $key => $value){
$key = addcslashes($key, "\n\r\t\\()");
$fdf .= "<< /T ($key) /V /$value >> \n";
}
$fdf .= "]\n/F ($pdffile) >>";
$fdf .= ">>\nendobj\ntrailer\n<<\n";
$fdf .= "/Root 1 0 R \n\n>>\n";
$fdf .= "%%EOF";
return $fdf;
}
if($_POST['submit']){
$fields = explode(",",$_POST['fields']);
$options= explode(",",$_POST['options']);
$complete_form = $_POST;
$values_fields = array();
$values_options = array();
$keys_fields = array();
$keys_options = array();
//Formular Wertepaar für wertepaar durchgehen und dem korrekten Typ zuordnen
foreach($complete_form as $k => $v){
if(in_array($k,$fields)){
array_push($keys_fields,$k);
if(empty($v)) $v="keine Angabe";
array_push($values_fields,$v);
}
if(in_array($k,$options)){
array_push($keys_options,$k);
if(empty($v)) $v="keine Angabe";
array_push($values_options,$v);
}
}
// Textfelder
$strings = array_combine($keys_fields, $values_fields);
//Ceckboxen und Radio Buttons
$keys = array_combine($keys_options, $values_options);
//Pfad zum pdf Formular......................
$form = 'http://localhost/fdf_pdf/Test_Formular.pdf';
// Jetzt noch schnell den korrekten Header schicken und gut ist
header('Content-type: application/vnd.fdf');
//Und das fdf erzeugen ->
echo create_fdf($form, $strings, $keys);
}
else echo"Bitte erst zum Formular zurückkehren <a href='index.html' target='_self'>zurück --->></a>";
?>
Hat jemand eine Idee?
Thanx schonmal vorab,
skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!
Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
|
|
|
14.04.2005, 13:57
|
#2
|
|
TP-Supporter
Registriert seit: Jun 2004
|
und du brauchst 0,1,2,3... wirklich extra?
aso. mal nachdenken ^^
__________________
Ich bin bereit, meinem Schöpfer gegenüberzutreten.
Ob mein Schöpfer ebenso bereit ist, diese Begegnung über sich ergehen zu lassen, ist eine andere Sache.
|
|
|
14.04.2005, 13:59
|
#3
|
|
TP-Moderator
Registriert seit: Jan 2005
Ort: Düsseldorf
|
???????
Wie meinen?
Öh,
Zahlen sind immer gut, vor allem auf Gehaltsabrechnungen aber ich verstehe nicht was du meinst?
so long,
skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!
Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
|
|
|
14.04.2005, 14:01
|
#4
|
|
TP-Supporter
Registriert seit: Jun 2004
|
yo. war irgendwie auf falschem dampfer...
also als schnell-lösung würd ich vorschlagen, dass du beim ersten durchlauf der schleife, die werte dem array direkt zuweist, also ohne push. geht sicher schöner, nur komm ich grad nicht drauf ^^
oder den push wegläßt und es immer mit zuweisung machst.
dass der push ned geht, ist ja klar. hmm... wie macht man ein array auf "altmodische" weise in php? also mit der definition des typs vom inhalt? vllt geht es dann mit push
__________________
Ich bin bereit, meinem Schöpfer gegenüberzutreten.
Ob mein Schöpfer ebenso bereit ist, diese Begegnung über sich ergehen zu lassen, ist eine andere Sache.
Geändert von Weede (14.04.2005 um 14:05 Uhr).
|
|
|
14.04.2005, 14:03
|
#5
|
|
TP-Moderator
Registriert seit: Jan 2005
Ort: Düsseldorf
|
Ich Vollidiot!
Aber mal ehrlich,
man man man, na klar meckert er über ein leeres array wenn er damit array_combine() machen soll, nicht reproduzierbar war der Fehler, da ich mal mit und mal ohne angeklickte Checkboxen/ Radiobuttons getestet habe.
Mal gings mal nicht, lokal übrigens immer, da hab ich eine neuere php Version installiert. Des Rätsels Lösung:
PHP-Code:
if(!empty($keys_fields)){
$strings = array_combine($keys_fields, $values_fields);
}
//Ceckboxen und Radio Buttons
if(!empty($keys_options)){
$keys = array_combine($keys_options, $values_options);
}
Nur kombinieren wenn auch was da ist zum kombinieren, hmpf, wieder zwei Stunden verplemtpert.
Egal es klappt und ich bins zufrieden.
so long,
skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!
Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
|
|
|
14.04.2005, 14:06
|
#6
|
|
TP-Supporter
Registriert seit: Jun 2004
|
ach, er meckert bei combine?
dachte bei push...
MUH!
__________________
Ich bin bereit, meinem Schöpfer gegenüberzutreten.
Ob mein Schöpfer ebenso bereit ist, diese Begegnung über sich ergehen zu lassen, ist eine andere Sache.
|
|
|
14.04.2005, 14:10
|
#7
|
|
TP-Moderator
Registriert seit: Jan 2005
Ort: Düsseldorf
|
Ja ja,
wie gesagt, sehr dämlich von mir, ich spiele ewig mit den arrays rum und siehe da, es liegt an was anderem, in der Fehlemeldung hat er zwei sachen ausgeworfen, 1. Array leer, 2. array_combine mit leeren arrays nicht möglich.
Da hätte ich auch früher drauf kommen können!
Was solls, nur komisch das er lokal immer alles prima macht und der Online-Server da etwas zickiger ist. Immer wieder schön mit diesen Versionsunterschieden,
so long,
skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!
Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
|
|
|
14.04.2005, 14:15
|
#8
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
das er sich anders verhält, liegt an der ini-Einstellung fürs Error-Reporting.
Setze in der php.ini einfach error_reporting auf E_ALL und Du bekommst mehr Meldungen, als Dir lieb sind 
|
|
|
14.04.2005, 14:22
|
#9
|
|
TP-Moderator
Registriert seit: Jan 2005
Ort: Düsseldorf
|
Nee,
das mache ich eh immer. Du kannst mir Glauben, das nicht ein einziger Fehler angezeigt wurde, da ich beim debuggen schön mit error_reporting unterwegs war. Dann fluchs rausgenaommen und online gespielt und nix geht mehr.
Schien sauber zu sein, nur hatte ich beim lokalen testen halt immer zufällig mit angeklickter Checkbox oder Radiobutton probiert, tse tse tse,
EJAHL, ENTWEDER ET KLAPPT ODER ET KLAPPT ZUSAMMEN
wie man bei uns im Rheinland sagt.
so long,
skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!
Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| 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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 Uhr.
|
 |