If-Anweisung wird verschluckt (ignoriert)

Alles, was PHP betrifft, kann hier besprochen werden.

Re: If-Anweisung wird verschluckt (ignoriert)

Postby Poison of the Cursed » 23. January 2011 13:55

Hallo Nobbie,

vielen lieben Dank, dass du so geduldig mit mir bist.

Nochmal wegen den Links LogIn/LogOut.

Ich verwende keine Frames, weil man ja barrierefrei programieren sollte. Das Layout ist mit Hilfe einer CSS-Datei in folgende Bereiche aufgeteilt:

div-id Seite:
dient dazu die Seite zu zentrieren und die feste Breite von ca. 1024px zu geben

div-id Navigation:
hier ist eine php-Datei includiert, in der sich alle Links zur Seite befinden (also eigentlich eine reine html-Datei).
Sie wird mit "float: left" in der CSS-Datei links neben dem Inhalt platziert.

Allerdings habe ich in dieser Datei versucht, die Links LogIn/Logout wechseln zu lassen.
Code: Select all
<body>

<a href="http://www.potterverse.de/index.php">Startseite Potterverse</a>

<br>

<p><img src="http://www.potterverse.de/club.gif" alt=""><br>
<br>
<a href="http://www.potterverse.de/club/mitgliedschaft.php">Mitgliedschaft</a>
<a href="http://www.potterverse.de/club/anmeldung.php">Anmeldung</a>
<a href="http://www.potterverse.de/club/benutzerdaten.php">Benutzerdaten ändern</a>
<a href="http://www.potterverse.de/club/steckbrief.php">Steckbrief</a>
<a href="http://www.potterverse.de/club/nachrichten.php">Nachrichten</a>
<a href="http://www.potterverse.de/club/mitgliedersuche.php">Mitgliedersuche</a>

<?php
if(!isset($_SESSION["username"]) OR !$_SESSION["username"])
{
echo '<a href="http://www.potterverse.de/club/login.php">Einloggen</a>';
}
else
{
echo '<a href="http://www.potterverse.de/club/logout.php">Ausloggen</a>';
}
?>
</p>

<p><img src="http://www.potterverse.de/sammelkarten.gif" alt=""><br>
<br>
<a href="http://www.potterverse.de/club/sets.php">Kartensets
<span style="font-size: 9px;">(gesamt)</span></a>
<a href="http://www.potterverse.de/potter/potterstart.php" target="_blank">Harry Potter</a></p>

</body>


div-id Inhalt:
zeigt rechts neben der "Navigation" den Inhalt der Seite

Nun durchläuft das PHP-Script beim LogIn die einzelnen Abfragen und setzt ja erst ziemlich zum Schluss die $_SESSION["username"]. Im Inhalt rechts wird nun der Besucher begrüßt, er sieht also, dass er eingeloggt ist. Links vom Inhalt im Bereich mit den Links, sollte sich nun der Link LogIn, in den Link LogOut verwandeln. Leider tut er das nicht. Es bleibt "Einloggen" so lange stehen, bis ich zum Beispiel den Link zu meinem Steckbrief angeklickt habe. Der Inhalt zeigt nun meinen Steckbrief und jetzt erst sehe ich den Link "Ausloggen".
Aus lauter Verzweiflung hatte ich deshalb diesen "header" mitten in die Seite gepflanzt. Dadurch wurde meine Seite mehr oder weniger aufgefrischt und in der menu.php wurde nun endlich erkannt, dass die $_SESSION["username"] gesetzt ist. Mehr wollte ich mit dem "header" gar nicht.

Vielleicht sollte ich die menu.php/menu.html einfach weiter unten im Script einbauen. Habe ich noch nicht probiert. Wird aber als nächstes getestet.

Nochmal danke, auch dass du dir was wegen meinen Ausgaben zu den Karten überlegen möchtest. Ich bin froh, um jede Hilfe. Möglicherweise schaffe ich es ja doch noch meine Seiten in einem guten Stil ins Netz zu kriegen. Werde jetzt auch den Provider wechseln. Bei T-online kann ich keine .htaccess installieren und ich möchte nicht auch noch gehackt werden.

Wünsche Dir noch einen schönen Tag

Liebe Grüße
Poison
Poison of the Cursed
 
Posts: 31
Joined: 27. April 2010 17:56

Re: If-Anweisung wird verschluckt (ignoriert)

Postby Nobbie » 23. January 2011 14:05

Altrea wrote:
Nobbie wrote:Dein PHP Script fängt mit <?php and endet am Schluss mit ?>. Das ist der Ideallfall.

Da möchte ich leise widersprechen. Das schließende ?> ist bei reinen PHP Dateien nicht notwendig und es hat keine Nachteile es wegzulassen.
Es wegzulassen hat allerdings den Vorteil, dass man damit unter Umständen das versehendliche senden von Leerzeichen verhindern kann, was dazu geführt hat, dass diese Empfehlung auch in diversen Coding Standards einzug erhalten und als best practice gilt.


Das halte ich definitiv für totalen Quatsch. Mag sein, dass man es "nicht braucht", aber es wegzulassen aus "Schiss vor ungewollten Leerzeilen" ist Käse. Mindestens das Toplevel-Script (und das meinte ich hier) verträgt zudem beliebig viele Leerzeilen am Ende, sowieso wenn man konsequent die HTML Ausgabe mit exit() beendet.

Wer denkt sich so etwas aus?

Stattdessen sollen die Leute mal lernen, "richtig" zu programmieren. Wenn ich mir selbst so Produkte Joomla & Co. anschaue, dann rollen sich mir die Fussnägel auf, wie da programmiert wird. Und dann wird darüber sinniert, ob es vielleicht doch keinen Syntaxfehler vom PHP Prozessor gibt (obwohl das die angemessene Reaktion wäre), wenn man das schließende ?> wegläßt....
Nobbie
 
Posts: 6918
Joined: 09. March 2008 13:04

Re: If-Anweisung wird verschluckt (ignoriert)

Postby Nobbie » 23. January 2011 14:17

Poison of the Cursed wrote:Nun durchläuft das PHP-Script beim LogIn die einzelnen Abfragen und setzt ja erst ziemlich zum Schluss die $_SESSION["username"].


Ein wunderbares Beispiel.

Weil Du nämlich den HTML Code ausgibst (durch include oder sonstwie), bevor die komplette Programmlogik durchlaufen ist, führt das nun bei Deinem Script dazu, dass dieser Link ggf. falsch ausgegeben wird, weil zu diesem Zeitpunkt, wo Du ihn ausgibst (include?), die Sessionvariable noch nicht bestückt ist (oder einen falschen Wert hat).

Würdest Du die Ausgabe des HTML ganz am Ende machen, wäre das Problem schon gelöst. Dann dort ist die Programmlogik abgeschlossen, die Session ist gesetzt, der Link wird entsprechend ausgegeben.
Nobbie
 
Posts: 6918
Joined: 09. March 2008 13:04

Re: If-Anweisung wird verschluckt (ignoriert)

Postby Altrea » 23. January 2011 14:18

Nobbie wrote:Das halte ich definitiv für totalen Quatsch. Mag sein, dass man es "nicht braucht", aber es wegzulassen aus "Schiss vor ungewollten Leerzeilen" ist Käse. Mindestens das Toplevel-Script (und das meinte ich hier) verträgt zudem beliebig viele Leerzeilen am Ende, sowieso wenn man konsequent die HTML Ausgabe mit exit() beendet.

Es mag sein, dass es in diesem Fall Jacke wie Hose ist. Da es aber keine Nachteile bringt es wegzulassen, sehe ich keinen Grund zu empfehlen es zu setzen.

Nobbie wrote:Wer denkt sich so etwas aus?
Stattdessen sollen die Leute mal lernen, "richtig" zu programmieren.
Wenn ich mir selbst so Produkte Joomla & Co. anschaue, dann rollen sich mir die Fussnägel auf, wie da programmiert wird.

Diese Empfehlung hat es unter anderem sogar in den coding Standard des Zend Framework geschafft, denen man nun wirklich nicht unterstellen kann, sie hätten einen schlechten Programmierstil.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 6758
Joined: 17. August 2009 13:05
XAMPP Version: 5.5.19
Operating System: W7Ux64

Re: If-Anweisung wird verschluckt (ignoriert)

Postby Nobbie » 23. January 2011 14:35

Altrea wrote:Diese Empfehlung hat es unter anderem sogar in den coding Standard des Zend Framework geschafft, denen man nun wirklich nicht unterstellen kann, sie hätten einen schlechten Programmierstil.


Über deren Programmierstil kann ich nichts sagen, aber ich halte es dennoch für falsch. Das ist nun einmal die Syntax von PHP und bei anderen Compilern/Interpretern käme an dieser Stelle mit absoluter Sicherheit die Fehlermeldung "unexpected End of File".

Was passiert, wenn man sich an diese Richtlinie hält (weil man einen schlechten Editor benutzt und Angst vor Trailing Blanks hat) und im PHP Release 8 (oder sonst eines) kommen die PHP Entwickler auf die Idee, diesen Check doch einzubauen (egal aus welchem Grund)? So wie man heute die short_tags verbannen will, die auch mal Bestandteil von Programmierrichtlinien waren, oder wie man register_globals auch rauswerfen will, auch das was jahrelang der Programmierstandard?

Wenn die Zend Programmierer so schreckliche Angst vor ungewollten Leerzeilen haben, dann sollen es sie so programmieren. Aber als Standard würde ich es NIE verkaufen. Es ist de fakto gegen den Syntax, zeig mir die Stelle im PHP Manual, wo geschrieben steht, dass EOF implizit "?>" bedeutet. Wenn es diese Stelle nicht gibt, wird sich auf ein "Feature" verlassen, das NICHT dokumentiert ist.

Ich persönlich finde das ganz furchtbar - jetzt debugge mal ein Script, was Du nicht selbst geschrieben hast (von einem Vorgänger übernommen) und das tut nicht, was es soll. Das hört einfach irgendwo auf und Du kannst definitiv nicht sagen, ist das jetzt verstümmelt worden, ist hier wirklich Schluss, oder fehlen da Zeilen? Wie willst Du das dem Script ansehen?
Nobbie
 
Posts: 6918
Joined: 09. March 2008 13:04

Re: If-Anweisung wird verschluckt (ignoriert)

Postby Altrea » 23. January 2011 15:03

Ich möchte dir deine Meinung auch garnicht madig machen. Jeder Entwickler entwickelt mit der Zeit auch seinen ganz eigenen Programmierstil, der sich aus den Grundlagen der Programmiersprache, Coding Empfehlungen und eigenen Gewohnheiten und Geschmäckern zusammenstellt.

Nobbie wrote:Über deren Programmierstil kann ich nichts sagen, aber ich halte es dennoch für falsch. Das ist nun einmal die Syntax von PHP und bei anderen Compilern/Interpretern käme an dieser Stelle mit absoluter Sicherheit die Fehlermeldung "unexpected End of File".

Definitiv sogar. Ich halte aber nicht viel von Vergleichen zu anderen Programmiersprachen. Da könnte man viele Gegenbeispiele finden, wo sich PHP eben anders als andere Programmiersprachen verhält.

Nobbie wrote:Was passiert, wenn man sich an diese Richtlinie hält (weil man einen schlechten Editor benutzt und Angst vor Trailing Blanks hat) und im PHP Release 8 (oder sonst eines) kommen die PHP Entwickler auf die Idee, diesen Check doch einzubauen (egal aus welchem Grund)? So wie man heute die short_tags verbannen will, die auch mal Bestandteil von Programmierrichtlinien waren, oder wie man register_globals auch rauswerfen will, auch das was jahrelang der Programmierstandard?

Da Zend maßgeblich an der Weiterentwicklung von PHP beteiligt ist, sehe ich die Gefahr nicht so akut. Aber es ist vollkommen normal, dass sich eine Programmiersprache entwickelt und verändert und man hier und dort mal auf Abwärtskompatibilität verzichten muss.
Wenn es also mal dazu kommt, dass das schließende PHP Endtag pflicht wird, werde ich (und andere Entwickler) wie bei anderen Versionsveränderungen zusehen müssen, dass unser Code wieder zeitgemäß ist.

Nobbie wrote:Es ist de fakto gegen den Syntax, zeig mir die Stelle im PHP Manual, wo geschrieben steht, dass EOF implizit "?>" bedeutet. Wenn es diese Stelle nicht gibt, wird sich auf ein "Feature" verlassen, das NICHT dokumentiert ist.

Wortwörtlich gibt es eine solche Passage im PHP Manual nicht. Aber hier im PHP Manual wird zumindest erwähnt, dass das letzte schließende PHP Tag in einer Datei optional ist.

Nobbie wrote:jetzt debugge mal ein Script, was Du nicht selbst geschrieben hast (von einem Vorgänger übernommen) und das tut nicht, was es soll. Das hört einfach irgendwo auf und Du kannst definitiv nicht sagen, ist das jetzt verstümmelt worden, ist hier wirklich Schluss, oder fehlen da Zeilen? Wie willst Du das dem Script ansehen?

Ich debugge beruflich häufiger mal Scripte von anderen Entwicklern und muss gestehen, dass mich da andere Programmierstile deutlich mehr stören, als das fehlen des abschließenden PHP-Tags. Aber wie schon gesagt, hat jeder so seinen eigenen Programmierstil der mehr oder weniger kompatibel zu anderen Programmierstilen ist.

Du hast ja auch eine sehr umfangreiche Programmiererfahrung weit vor PHP. Da werden sicher auch Einflüsse aus anderen programmiersprachen deinen Stil maßgeblich mitbeeinflusst haben. Ich maße mir nicht an zu sagen, dass der eine besser ist als der andere. Ich sage nur, dass ich es etwas anders sehe.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 6758
Joined: 17. August 2009 13:05
XAMPP Version: 5.5.19
Operating System: W7Ux64

Re: If-Anweisung wird verschluckt (ignoriert)

Postby Nobbie » 23. January 2011 16:05

Altrea wrote:Du hast ja auch eine sehr umfangreiche Programmiererfahrung weit vor PHP.


Wahrscheinlich ist es nicht einmal die Programmiererfahrung, sondern das Umfeld. Ich habe mein halbes Leben lang (und benutze ihn immer noch) mit "vi" editiert. Da kennt man den Begriff "aus Versehen Leerzeile am Ende" o.ä. nicht, weil vi das genau anzeigt, ob da noch eine Zeile kommt oder nicht. Deswegen arbeite auch ungerne mit Editoren a la Notepad (wobei der sowieso Krampf ist, der kann ja gar nichts), weil man da nicht sieht, wo die Datei aufhört.

Ich weiß, dass es viele vi-Hasser gibt, aber wie mit allen Editoren: wenn man ihn beherrscht, ist es ein toller Editor. Und ich kenne ihn seit über 25 Jahren und kann auch mit keinem Editor so schnell und effektiv arbeiten. Deswegen finde ich es immer komisch, wenn ich solche Ängste lese "ungewollte Leerzeilen am Ende". Das macht man als vi-Anwender erst gar nicht.

Zugebenerweise hat PHP auch eine Besonderheit, die nur wenige andere Sprachen besitzen: es ist eingebettet in HTML. Alles, was außerhalb von <?php ?> steht, ist HTML und wird ausgewertet resp. ausgegeben. Leerzeilen haben eine Funktion, sie sind Bestandteil des generierten Textes. Nimmt man beispielsweise C, da sind Leerzeilen nichts, werden einfach überlesen. Egal ob sie innerhalb von Funktionen stehen oder auf globaler Ebene. Egal ob am Anfang, in der Mitte oder am Ende: sie sind funkionslos. Bei PHP "zählt" jede Zeile - im Zweifel ist es HTML Coding und dort im Zweifel eine Leerzeile.

Andererseits bin ich Mathematiker und finde es allein aus Präzisionsgründen POTTENHÄSSLICH, wenn man Ende das Abschlusstag ?> fehlt. Das tut mir echt weh, kann ich nicht, sieht grauenhaft aus. Ich wäre nie auf die Idee gekommen, so etwas überhaupt auszuprobieren...

P.S.: Auf der PHP Seite, die Du angegeben hast, steht eine sehr interessant Anmerkung eines Users von 2008:

If you are embedding this in XML, you had better place the ending '?>' there or the XML parser will puke on you. XML parsers do not like processing instructions without end tags, regardless of what PHP does.


Das ist ja dann doch ein halbes K.O.-Kriterium. Zum einen wird der PHP-Shorttag "geopfert" für die XML Kompatibiltät - und dann wird das Weglassen des End-Tags progagiert, was aber erneut nicht kompatibel zu XML ist. Lustig!
Nobbie
 
Posts: 6918
Joined: 09. March 2008 13:04

Re: If-Anweisung wird verschluckt (ignoriert)

Postby Poison of the Cursed » 23. January 2011 16:18

Hallo Nobbie,

oh weh, da hab ich mich ja total selbst ausgeknockt. Ich habe das Script nun umgestellt und alles, was html ist ganz ans Ende gestellt und... es funktioniert, auch ohne "header".
Super, danke. Dafür habe ich jetzt das Gefühl, die letzten 5 Monate in denen ich mich durch PHP wurstle, gar nichts oder nur falsches gelernt zu haben.

...ein anderes Mal includierst Du aber ein PHP-Script "start.php". Wieso das?


Es sollen mal mehrere Themenbereich mit Sammelkarten werden (Harry Potter, Herr der Ringe, Vampire...) und die Scripte dazu werden, wie auch die Tabellen der Datenbank, vom Aufbau her immer gleich aussehen. Darum habe ich das php-Script ebenfalls in eine separate Datei gepackt. In der Ausgabeseite kann ich nun die Variable, die z.B. für den Namen der Datenbanktabelle steht, in jedem Bereich neu definieren und dann auf ein und dasselbe Script zugreifen. Im Bereich Potter hat dann die Variable $karten_neu den Wert "potter_neu" und im Bereich Herr der Ringe den Wert "ring_neu". Oder war das wieder ein denkfehler? Ist es besser die Scripte in jeden Bereich zu kopieren und dann nur die Wert, die anders sind abzuändern? Ich dachte, ich könnte mir Arbeit sparen. War wohl nicht so gut.
Falls es für die Logik des Scripts besser ist, füge ich den Teil aus der start.php wieder in das Ausgabescript ein. Ich will es diesmal richtig lernen und zukünftig nicht mehr so viele Fehler machen.

...Du schreibst "if($_SESSION['pottermitglied'] == 0) //diese Variable wird im Login-Script gesetzt" - ist das hier nicht das Login-Script?


Nein, das war nicht das Login-Script vom Anfang. Sorry, hätte ich besser dazuschreiben sollen. Ich habe beim Umstellen mit einem Script angefangen, bei dem ich das Gefühl hatte, die Änderungen leichter umsetzen zu können. Das LogIn-Script werde ich demnächst in Angriff nehmen. Da hätte ich auf jeden Fall den PHP-Teil in der Ausgabeseite belassen, denn das Script brauche ich ja nur einmal .

Vielen Dank nochmal für Deine Hilfe.

Auch an Altrea vielen Dank. Ich werde mir das mit den foreach-Schleifen nochmal genauer ansehen und ich werde mich auch nochmal mit dem Thema Sicherheit befassen.

Ich wünsche Euch beiden noch einen schönen Sonntag.

Liebe Grüße
Poison
Poison of the Cursed
 
Posts: 31
Joined: 27. April 2010 17:56

Re: If-Anweisung wird verschluckt (ignoriert)

Postby Poison of the Cursed » 24. January 2011 18:12

Hallo Nobbie,

ich brauche nochmal Hilfe. Im Zuge der Umstellung meiner Seiten bin ich auf ein weiters Problem mit der Ausgabe einer Schleife gestoßen. Ich bastle schon seit zwei Stunden hin und her, konnte aber in Google keine geeignete Lösung finden.

Also, ich möchte Kartensets, die neu dazugekommen sind, so ausgeben, dass sich jedes Mitglied eine Karte aus einem Set nehmen kann. Dazu gebe ich die Karten mit einem Link aus, in dem sich in zwei GET-Variablen der Name des Kartensets und der Name der Karte befindet. Anhand des Kartensetnamens wird später geprüft, ob sich ein Mitglied bereits eine Karte aus dem Set geholt hat oder nicht.
Bis jetzt habe ich das direkt aus der Datenbank in einer While-Schleife ausgegeben, das ist das ja nicht ganz so schwer. Da ich das HTML ja aber nun auf separate Seiten verteile, muss ich die Daten im PHP-Script auslesen und in der HTML-Datei als foreach (so dachte ich mir das) ausgeben. Nun finde ich einfach nicht die passende Verschachtelung, dass er mir die Karten korrekt mit einem Link versehen ausgibt.

Entwerde gibt er die gleichen Kartensets mehrmals hintereinander aus, dazwischen HTML-Code oder aber ich schaffe es, dass er wirklich nur die zwei Kartensets ausgibt, dann sind sie aber etwas durcheinander und er gibt das letzte Stück des Links immer noch dazu aus. Ich finde einfach nicht den richtigen dreh. Das ist der letzte Stand:

Code: Select all
<p><table border="0" cellspacing="0" cellpadding="2"><tr>

<td align="center">
<?php
$z=0;
$s=0;
foreach($kartenset_neu as $ausgabe_set)
{
echo '<a href="../potter/pottersets.php?kartenset='.htmlspecialchars($ausgabe_set).'&karte=';
}
  foreach ($karten_neu as $ausgabe_kartenneu)
  {
  echo ''.$ausgabe_kartenneu.'"><img src="../potter/karten/'.htmlspecialchars($ausgabe_kartenneu).'.gif" alt=""></a></td>';
  $z=$z+1;

  if($z == 3)
  {
  echo '</tr><tr>';
  $z=0;
  $s=$s+1;
  }

  if($s == 3)
  {
  echo '</tr><td colspan="3"><br><br></td><tr>';
  $s=0;
  }

  }
?>
</tr></table></p>


Wie mache ich das richtig?

Liebe Grüße
Poison
Poison of the Cursed
 
Posts: 31
Joined: 27. April 2010 17:56

Re: If-Anweisung wird verschluckt (ignoriert)

Postby Altrea » 24. January 2011 19:04

Hallo Poison,
leider werde ich nicht ganz schlau aus deiner Erklärung, sonst hätte ich mich gerne mal an deinem Problem versucht.

Ist die Anzahl an Karten die ausgegeben werden immer gleich / bestimmbar? Dann bist du mit einer for-Schleife statt foreach vielleicht besser bedient.
Ich sehe auch, dass du zwei Zählvariablen verwendest. Ist natürlich fraglich, ob die beide notwendig ist. Vielleicht kann man sich mit einem Modulo oder floated Images eine oder gleich beide sparen.
Leider ist mir auchnochnicht so ganz klar, wie deine Karten benannt sind, also wie man diese unter Umständen programmiertechnisch ansprechen und darstellen soll.
Ich meine erkennen zu können, dass du versuchst ein 3x3 Tabellengrid aufzubauen, ist das richtig?

P.S.: Wenn die Karten durchnummeriert sind und sich lediglich der Namensteil davor ändert, würde auch nichts dagegen sprechen, das Template schon starr vorzudefinieren und lediglich anhand des variablen Namenteils die einzelnen Tabellenfelder zu füllen, sofern du Tabellenfelder verwenden möchtest.
Das wäre wahrscheinlich deutlich angenehmer weil übersichtlicher zu händeln als programmiertechnisch das Grid zusätzlich zu erstellen (was aber auch möglich wäre).
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 6758
Joined: 17. August 2009 13:05
XAMPP Version: 5.5.19
Operating System: W7Ux64

Re: If-Anweisung wird verschluckt (ignoriert)

Postby Nobbie » 24. January 2011 20:35

Also ganz offensichtlich ist ja schon mal, dass der erste "echo" an einer falschen Stelle steht, der gehört natürlich in die innere foreach Schleife:

Statt

Code: Select all
foreach($kartenset_neu as $ausgabe_set)
{
echo '<a href="../potter/pottersets.php?kartenset='.htmlspecialchars($ausgabe_set).'&karte=';
}
  foreach ($karten_neu as $ausgabe_kartenneu)
  {
  echo ''.$ausgabe_kartenneu.'"><img src="../potter/karten/'.htmlspecialchars($ausgabe_kartenneu).'.gif" alt=""></a></td>';
  $z=$z+1;


sieht mir

Code: Select all
foreach($kartenset_neu as $ausgabe_set)
{
  foreach ($karten_neu as $ausgabe_kartenneu)
  {
  echo '<a href="../potter/pottersets.php?kartenset='.htmlspecialchars($ausgabe_set).'&karte=';
  echo ''.$ausgabe_kartenneu.'"><img src="../potter/karten/'.htmlspecialchars($ausgabe_kartenneu).'.gif" alt=""></a></td>';
  $z=$z+1;


erheblich logischer aus.

Ob das insgesamt der Anforderung entspricht, kann ich noch nicht sagen, weil ich nicht alles verstanden habe, was Du da vorhast. Falls Du auf einer Seite mehrere Kartensets anzeigen willst und die wiederum jeweils in einer einzelnen Tabelle stehen sollen, reicht das so nicht. Aber das kann ich Deiner Beschreibung nicht entnehmen.

Dir ist sicher klar, dass wir hier Lichtjahre von "PHP Problemen" entfernt sind. Du suchst hier konkret Programmierhilfe, wie man Algorithmen programmiert. Sei also nicht enttäuscht, wenn die Antworten ggf. ausbleiben, denn es ist nicht Aufgabe des Forums, Programmierung und Algorithmen zu erläutern.
Nobbie
 
Posts: 6918
Joined: 09. March 2008 13:04

Re: If-Anweisung wird verschluckt (ignoriert)

Postby Poison of the Cursed » 26. January 2011 18:24

Hallo Altrea, hallo Nobbie,

danke für die Hilfe.
Ich weiß, es ist nicht gerade die feine Art, von anderen zu erwarten, sie würden einem die Seite programmieren. Ich muss das schon selber machen. Aber manchmal brüte ich ewig an einer Sache herum und da hilft es schon Denkanstöße zu bekommen. Ich bin auch diesmal wieder froh gefragt zu haben.

@Altrea:
Ja, die Anzahl der Karten im Set ist immer gleich.
Ich habe das Problem jetzt gelöst, indem ich die Seite "starr" gemacht habe, wie du angeregt hast. Ich lese jetzt die Daten aus der Datenbank aus und gebe sie einzeln (z.B. "$karte[0]") aus.
Klappt super. Ich muss ab jetzt halt immer 3 neue Kartensets anbieten, damit nicht Variablen leerbleiben. Da ich aber sowie vorhatte immer 2 oder 3 Sets neu einzustellen, ist das nicht schlimm.

Nun habe ich noch eine Frage wegen dem einbinden der HTML-Dateien. Normalerweise muss ja jede Datei folgende Tags enthalten: <html></html> / <head></head> / <body></body>
Da ich ja nun immer 3 Dateien includiere

1. Kopf mit öffnenden Tags <html> / <head> / <body> und <div-id Inhalt> (hier natürlich auch </head>
2. eigentlicher Inhalt (Ausgabe von Text und Bildern)
3. Fuß mit abschließender Tags </div> / </body> und </html>

bin ich mir nicht sicher, ob bei den Dateien mit dem Inhalt ebenfalls nochmal die öffnenden und schließenden Tags rein müssen. Bei Inhalts-Dateien, die ich ohne Kopf- und Fuß-Datei ausgebe ist es ja klar. Aber bei den anderen ist es doch doppelt gemoppelt, oder? Tue mir gerade schwer. Blöd ich weiß. Aber wie ich schon sagte, wenn ich jetzt alles ändere, möchte ich es einmal richtig machen.

Wäre super, auf meine etwas beschränkte Frage, trotzdem eine Antwort zu kriegen. :-)

Liebe Grüße
Poison
Poison of the Cursed
 
Posts: 31
Joined: 27. April 2010 17:56

Re: If-Anweisung wird verschluckt (ignoriert)

Postby Nobbie » 26. January 2011 21:26

Poison of the Cursed wrote:bin ich mir nicht sicher, ob bei den Dateien mit dem Inhalt ebenfalls nochmal die öffnenden und schließenden Tags rein müssen. Bei Inhalts-Dateien, die ich ohne Kopf- und Fuß-Datei ausgebe ist es ja klar. Aber bei den anderen ist es doch doppelt gemoppelt, oder? Tue mir gerade schwer. Blöd ich weiß. Aber wie ich schon sagte, wenn ich jetzt alles ändere, möchte ich es einmal richtig machen.


So ganz verstehe ich diese Frage nicht, aber eine Antwort gibt es dennoch: Du mußt schlicht und ergreifend in der Summe der Dinge ein VOLLSTÄNDIGES und syntaktisch RICHTIGES HTML Dokument ausgeben. Keine doppelten <html> Tags o.ä. und auch keine fehlenden Tags. Wie Du das zusammenbaust, ist Dir freigestellt, aber beim Anwender muss einfach ein vollständiges HTML Dokument ankommen. Und zwar immer und ausnahmslos.
Nobbie
 
Posts: 6918
Joined: 09. March 2008 13:04

Previous

Return to PHP

Who is online

Users browsing this forum: No registered users and 1 guest