| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

13-07-2009, 23:00
|
|
sAks
Registrierter Benutzer
|
|
Registriert seit: Jul 2009
Beiträge: 3
|
|
typisches echo-Problem (Anführungszeichen)
Hallo,
habe ein kleines Problemchen:
PHP-Code:
echo '<tr><td align="right"><a href="edit.php?cmd=edit&Nr='.$row['Nr'].'" onClick="MyWindow=window.open("edit.php","MyWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=675,height=400"); return false;"><img src="images/stift.png" border="0" /></a></td></tr>';
Also in diesem Bereich gehören normal einfache Anführungszeichen, aber da ich sie als echo-Klammern nutze, geht das nicht. Abhilfe?
PHP-Code:
("edit.php","MyWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=675,height=400")
Danke im Voraus.
sAks
|

13-07-2009, 23:05
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.778
|
|
1. Code umbrechen
2. Entweder einen anderen Delimiter nehmen (einfache oder doppelte Anführungszeichen) oder escapen (idR mit einem Backslash).
|

13-07-2009, 23:14
|
|
sAks
Registrierter Benutzer
|
|
Registriert seit: Jul 2009
Beiträge: 3
|
|
Danke für die schnelle Antwort.
Gibt es eine Regel wie man Delimiter innen/aussen in echos benutzt?
zB. echo ' .... ".... ´...´....".....';
Würde so etwas gehen?
|

13-07-2009, 23:15
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Wozu das ganze Zeug mit echo ausgeben? Wirds dadurch schöner?
PHP-Code:
<tr>
<td align="right">
<a href="edit.php?cmd=edit&Nr=<?php echo $row['Nr']; ?>" onclick="MyWindow=window.open("edit.php","MyWindow","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=675,height=400"); return false;">
<img src="images/stift.png" border="0" />
</a>
</td>
</tr>
|

13-07-2009, 23:21
|
|
sAks
Registrierter Benutzer
|
|
Registriert seit: Jul 2009
Beiträge: 3
|
|
@h3ll
Man, darauf bin ich noch gar nicht gekommen. Wäre natürlich die einfachste Idee *g*
Das oben geschriebene echo ist nur ein Teilbereich von der TAbelle. Das eigentliche echo ist noch viel länger, aber unkomplizierter, was Anführungszeichen angeht. Habe das echo immer weiter ausgebaut und erst jetzt das vorprogrammierte Problem erkannt. Ich denke ich werde es so lösen.
Thx euch beiden :-)
|

15-07-2009, 16:47
|
|
media-authoring
Registrierter Benutzer
|
|
Registriert seit: Apr 2008
Beiträge: 14
|
|
Ist ansich Geschmacksache, aber
Ich mache gerne außen die doppelten Anführungszeichen und innen die Einfachen
also z.B. echo "<a href='example.php' class=$links1>example</a>";
Man spart sich so in der Regel Maskierungen wie \" und die Variablen werden auch in der Regel ohne Probleme ausgelesen. Bei komplexen Dingen kann man
allerdings manchmal auch hier nicht auf das Maskieren verzichten.
Vorteil:
Einfach und übersichtlich. Gute Lesbarkeit des Quellcodes.
Nachteile:
Ist umständlich wenn man schon viel HTML-Code mit doppelten " hat und
diesen nachträglich in PHP umwandeln will oder muss.
Wichtig, das ganze funktioniert mit geradem ' und nicht mit ` oder ´.
Ich habe schon viele Fehler in bestehenden Codes einfach dadurch beheben können, dass ich die Zeilen mit System " ' ' " anstatt mit System ' " " ' geschrieben habe.
Geändert von media-authoring (15-07-2009 um 16:48 Uhr)
Grund: Rechtschreibung
|

15-07-2009, 17:07
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von media-authoring
Ich mache gerne außen die doppelten Anführungszeichen und innen die Einfachen
also z.B. echo "<a href='example.php' class=$links1>example</a>";
Man spart sich so in der Regel Maskierungen wie \" und die Variablen werden auch in der Regel ohne Probleme ausgelesen. Bei komplexen Dingen kann man
allerdings manchmal auch hier nicht auf das Maskieren verzichten.
Vorteil:
Einfach und übersichtlich. Gute Lesbarkeit des Quellcodes.
Nachteile:
Ist umständlich wenn man schon viel HTML-Code mit doppelten " hat und
diesen nachträglich in PHP umwandeln will oder muss.
Wichtig, das ganze funktioniert mit geradem ' und nicht mit ` oder ´.
Ich habe schon viele Fehler in bestehenden Codes einfach dadurch beheben können, dass ich die Zeilen mit System " ' ' " anstatt mit System ' " " ' geschrieben habe.
|
Ich halte davon gar nix. Bei HTML sind " üblich. Wenn plötzlich ' vorkommen, sieht es erstens unübersichtlich aus, und zweitens kommt man sich so leicht mit Javascript-Code in die Quere, wo üblicherweise einfache Hochkomma verwendet werden.
HTML-Code kann man nicht in PHP "umwandeln". Das sind zwei vollkommen unterschiedliche Dinge. Außerdem macht es auch überhaupt keinen Sinn tonnenweise HTML-Code mit echo auszugeben.
|

15-07-2009, 17:28
|
|
jmc
PHP Junior
|
|
Registriert seit: Mar 2006
Beiträge: 868
|
|
Es ist Geschmackssache. Bei einigen Programmiersprachen bedeuten jedoch die ' eine Folge von Bytes 0 <= x <= 255 und die " eine Folge von Bytes 0 < x <= 255 mit einem abschliessenden 0 Byte. Diese zweite Variante nennt man vielerorts dann auch String (Zeichenkette mit abschliessendem 0 Byte).
|

15-07-2009, 18:56
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
PHP-Code:
echo "<a href='example.php' class=$links1>example</a>";
Um Gottes Willen Leute, arbeitet mit sauberer Zeichenkettenverknüpfung:
PHP-Code:
echo '<a href="example.php?id='.$id.'" class="'.$links1.'">example</a>';
Peter
PS: An alle Übeltäter. Code umbrechen, und zwar pronto!
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

15-07-2009, 19:09
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
|
arbeitet mit sauberer Zeichenkettenverknüpfung:
|
Das soll schön sein?
Neee...
Dann klopp ich das doch lieber per DOM zusammen.
 Das ist schön !!
|

15-07-2009, 19:21
|
|
media-authoring
Registrierter Benutzer
|
|
Registriert seit: Apr 2008
Beiträge: 14
|
|
Zitat:
Zitat von h3ll
Ich halte davon gar nix. Bei HTML sind " üblich. Wenn plötzlich ' vorkommen, sieht es erstens unübersichtlich aus, und zweitens kommt man sich so leicht mit Javascript-Code in die Quere, wo üblicherweise einfache Hochkomma verwendet werden.
HTML-Code kann man nicht in PHP "umwandeln". Das sind zwei vollkommen unterschiedliche Dinge. Außerdem macht es auch überhaupt keinen Sinn tonnenweise HTML-Code mit echo auszugeben.
|
Ok, umwandeln ist definitiv falsch ausgedrückt, doch ...
Was erzeugt man denn mit PHP letzlich?
Doch wohl html-Code für den Browser.
Natürlich mach es keinen Sinn tonnenweise (Wer sprach denn hiervon?) html-code mit echo auszugeben. Schließlich geht es ja darum, die Seite dynamisch
zu erstellen.
Konstrukte, wo ständig <? php-code...?> - Schnipsel und html-code abwechseln sind aber meiner Meinung hier das weitaus schlimmere übel, gerade wenn man sich in fremden Code einarbeiten muss.
Beim verwursteln von Javascript,PHP und html kann es Probleme durch die Schachtelung geben, egal welche Methode man benutzt.
Ich will aber keine Prinzipienfrage draus machen, ein Projekt, welches mit ' " " ' erstellt wurde, werde ich nicht auf " ' ' " ummodeln sondern meine Schreibweise an das Projekt anpassen.
|

15-07-2009, 19:36
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Afaik sollte das ganze ordentlich im View erledigt werden:
PHP-Code:
<a href="example.php?id=<?php echo $id ?>" class="<?php echo $links1 ?>">example</a>
Noch schicker natürlich mit short_open_tags bzw. mit Zend_View und aktiviertem Streamwrapper:
PHP-Code:
<a href="example.php?id=<?=$id ?>" class="<?=$links1 ?>">example</a>
Anders haben Ausgaben meiner Meinung nach nichts im Quellcode verloren, weder als Echo noch sonstwie.
|

15-07-2009, 19:53
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von media-authoring
Konstrukte, wo ständig <? php-code...?> - Schnipsel und html-code abwechseln sind aber meiner Meinung hier das weitaus schlimmere übel, gerade wenn man sich in fremden Code einarbeiten muss.
|
Dann hast du bis jetzt nur Schrott-Code gesehen. Sauber geschrieben ist ein Template mit php-Tags deutlich lesbarer als abwechselnd haufenweise echo dazwischen.
Und im eigentlichen Programmcode hat sowas wie echo eh nix verloren.
|

15-07-2009, 19:53
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.308
|
|
Zitat:
Zitat von PHP-Desaster
Afaik sollte das ganze ordentlich im View erledigt werden:
PHP-Code:
<a href="example.php?id=<?php echo $id ?>" class="<?php echo $links1 ?>">example</a>
|
Das wird aber spätestens bei solchen Dingen vor Allem für Anfänger schnell unübersichtlich und somit fehleranfällig:
PHP-Code:
<div class="inhalt">
<table>
<?php
$open = fopen ('blubb.txt');
while ($line = fgets ($open, "r"))
{
$trenn = explode (';', $line);
?>
<tr>
<td><?php echo $trenn[0]; ?></td>
<td><?php echo $trenn[1]; ?></td>
<td><?php echo $trenn[2]; ?></td>
</tr>
<?php
}
?>
</table>
</div>
Beispiele dazu gibt es hier im Forum zuhauf. Wobei ich persönlich xslt als Templatesprache bevorzuge. Aber das ist eine andere Geschichte.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

15-07-2009, 19:56
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von Kropff
Das wird aber spätestens bei solchen Dingen vor Allem für Anfänger schnell unübersichtlich und somit fehleranfällig:
PHP-Code:
<div class="inhalt"> <table> <?php $open = fopen ('blubb.txt'); while ($line = fgets ($open, "r")) { $trenn = explode (';', $line); ?> <tr> <td><?php echo $trenn[0]; ?></td> <td><?php echo $trenn[1]; ?></td> <td><?php echo $trenn[2]; ?></td> </tr> <?php } ?> </table> </div>
|
Ein fopen hat in einem View nix verloren! Das gehört zur Verarbeitung und nicht zur Ausgabe.
Und Anfänger verhaspeln sich ständig mit irgendwelchen gigantischen und unübersichtlichen echo-Kontruktionen, wie man hier und in anderen Foren sieht. Also würd ich gern wissen, wo der Mehrwert von echo für Anfänger liegen soll.
Außerdem, warum sollte man einem Anfänger den "falschen" Weg beibringen? Wär es nicht klüger, wenn er es gleich ordentlich lernt?
Geändert von h3ll (15-07-2009 um 19:59 Uhr)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|