kostenloser Webspace werbefrei: lima-city


Anführungszeichen werden knapp

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    emissionsrechner

    Kostenloser Webspace von emissionsrechner, auf Homepage erstellen warten

    emissionsrechner hat kostenlosen Webspace.

    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.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. 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.')"/>';
    
    ?>
  5. emissionsrechner schrieb:
    ... wie man das lösen kann wäre ich sehr dankbar ...
    ja und wie's so treffend gesagt wurde:
    fatfreddy schrieb:
    Sich durch dieses Codewirrwarr durchzuwühlen, ...
    sollte man die finger davon wirklich lassen. aber auf die schnelle mal so:
    <?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;
    wobei:
    - 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': <?=$... ; ?>)
  6. Autor dieses Themas

    emissionsrechner

    Kostenloser Webspace von emissionsrechner, auf Homepage erstellen warten

    emissionsrechner hat kostenlosen Webspace.

    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... :biggrin:

    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.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!