Anführungszeichen werden knapp
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
attribut
aufwand
ausgabe
befehl
code
ende
erscheinen
feedback
fehler
finger
hellseher
input
null
objekt
problem
umgehen
url
verarbeitung
vereinfachte art
zuviel
-
nabend,
ich hab da n kleines Problem zu später Stunde. Habe ne php Seite die mit Ajax Requests geladen wird. Wählt man nun einen Radiobutton aus soll ein Request ausgeführt werden. Und danach ein Textfeld erscheinen.
Ich hab in dem Code zuviel Ausgabe mit Verarbeitung gemischt. Und jetzt bekomm ich es mit den Anführungszeichen nicht mehr auf die Reihe. Glaube ich zumindest..
hier mal der Code:
<input type="checkbox" <?=$this->boolspezEn=="true"?"checked":"";?> id="bspez<?=$this->id?>" onchange="lkw_aendern('<?=$obj?>',<?=$this->id?>)"/>spezEn <?php if ($this->boolspezEn=="true") echo "<input id='spez$this->id' onchange='lkw_aendern('$obj',$this->id)'/>";?>
bei aktiviertem Radiobutton kommt folgendes Textfeld heraus:
<input id="spez0" a',0)'="" onchange="lkw_aendern(">
das Unterstrichene müsste eigentlich hinter lkw_aendern stehen, dann würde das Javascript auch funktionieren...
$obj = a
$this->id = 0
in dem Beispiel....
danach gib es natürlich Javascriptfehler beim ändern...
selbst der verzweifelte Versuch den echo Befehl zu umgehen funktioniert nicht weil dann fehler zur Klammersetzung erscheinen....
<input type="checkbox" <?=$this->boolspezEn=="true"?"checked":"";?> id="bspez<?=$this->id?>" onchange="lkw_aendern('<?=$obj?>',<?=$this->id?>)" /> spezEn <?php if ($this->boolspezEn=="true") {?><input id="spez<?=$this->id?>" onchange="lkw_aendern('<?=obj?>$',<?=$this->id?>)" /> <?php }
Wenn jemand von euch eine Idee hat wie man das lösen kann wäre ich sehr dankbar. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Sich durch dieses Codewirrwarr durchzuwühlen, kannst Du niemandem zumuten!
Kurz ist nicht immer gut!
Räume den Code auf, zerlege ihn in sinnvolle Teile und bastle daraus deine Ausgabe.
Dann wirst Du die Knappheit der Anführungszeichen überwinden und auch Monate später noch verstehen, was Du da geskriptet hast. ;)
FF -
Einfacher wäre sicherlich, die gewünschte Ausgabe zu posten :p
<?php echo '<input type="checkbox" '.$this->boolspezEn == "true" ? "checked" : "".' id="bspez'.$this->id.'" onchange="lkw_aendern(\''.$obj.'\', '.$this->id.')"/>'; echo 'spezEn '.$this->boolspezEn == "true" ? '<input id="spez'.$this->id.'"' : "".' onchange="lkw_aendern(\''.$obj.'\', '.$this->id.')"/>'; ?>
-
emissionsrechner schrieb:
ja und wie's so treffend gesagt wurde:
... wie man das lösen kann wäre ich sehr dankbar ...fatfreddy schrieb:
sollte man die finger davon wirklich lassen. aber auf die schnelle mal so:
Sich durch dieses Codewirrwarr durchzuwühlen, ...
wobei:<?php class CTest { public $id = null; public $boolspezEn = null; public $input = null; public function __construct($id, $boolspezEn = false) { $obj = '???'; $this->id = $id; $this->boolspezEn = $boolspezEn; $input2 = ($this->boolspezEn) ? "\nlkw_aendern:\n<input id=\"spez{$this->id}\" onchange=\"lkw_aendern('$obj',{$this->id})\" /><br />": ''; $checked = ($this->boolspezEn) ? "\n checked=\"checked\"": ''; // die 'aus'rückungen sind html-formatiereung (-> quelltext im browser) $this->input = <<< EOT spezEn:\n<input id="bspez{$this->id}" type="checkbox" onchange="lkw_aendern('$obj',{$this->id})" $checked /><br /> $input2 EOT; // vorige zeile bloß nicht einrücken sonst gibt's PHP Parse error: ...!! (-> de.php.net) } } // 2 tests mit unterschiedlichen werten: $test1 = new CTest(111, true); $test2 = new CTest(112); echo $test1->input, "<hr />\n\n"; echo $test2->input;
- variablen sind ad hoc (wir sind keine hellseher);
- in einer klasse ist eingebettet, weil du ja das selbst andeutest.
schlussbemerkung:
- lass die finger von wilden hin und herwechselt zwischen html und php! betreibe lieber logisches denken, sonst wirst lebenslang spaghetticode schreiben.
- verwende auf gar keinen fall sowas wie
(über kurze schreibweise -> de.php.net! sehr sehr schlimm! auf alle fälle nicht zukunftweisend.)<?=$... ; ?>
- auf einer seite reicht eine einzige ausgabe! am ende, wo die ganze seite mit einem einzigen echo ausgegeben wird. (-> vorigen punkt. auch das ist 'echo': <?=$... ; ?>) -
Danke erstmal für eure feedback,
Das Problem ist mittlerweile gelöst, anscheinend hat der / am Ende des echos einen Rücksprung bewirkt. Ohne diesen gibts den Fehler nicht...
Das der Programierstil nicht sonderlich gut ist weiß ich selbst.
Anfangs wollte ne vereinfachte Art von MVC reinbringen.
Ansichts Seiten, die keinen php Code enthalten. Eine php datei die lediglich Requests annimmt und ein paar objekte die dann von diesem "Controler" manipuliert werden.
Allerdings musste ich dann feststellen, dass jedes Objekt andere Felder für die Attribute braucht. Daraus ist dann für fast jedes Objekt eine Funktion anzeigen geworden. Diese sehen dann für jedes Attribut, muss ich zugeben, übertrieben wie im obigen Beisiel aus.
Ändern werd ich den programierstil aber warscheinlich nicht mehr. Zu Anfang hab ich mir überlegt welche Progrmmiersprache ich für das ganze denn haben will. ASP kann ich nicht also bleibt nur noch JSP bzw JSF und PHP übrig.
JSF war mir der Aufwand nicht wert also PhP. Da hat man nicht soviele beschränkungen...
sollte es jetzt noch mehr Probleme geben werde ich Dank eurer Ratschläge einen Variable mit einem großen Außgabe String bauen.
In dem Sinne,
Vielen Dank.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage