# Valide Problem id="box" ist mir ein Rätsel?



## Shorty1968 (22. Juli 2012)

Hallo der Validator mekert bei mir:

```
Zeile
920
 
Spalte: 
17

Fehler: 
ID "box" bereits definiert

Fehlerstelle: 

<dt id="box" class="7"><a href="#" class="7"><img src="./images/open.png" al
```
und

```
Zeile
838
 
Spalte: 
17

Fehler: 
ID "box" zuerst hier definiert

Fehlerstelle: 

<dt id="box" class="4"><a href="#" class="4"><img src="./images/open.png" al
```
Der Code der id="box" beinhaltet ist aber nur einmal vorhanden und sieht so aus:

```
<dt id="box" class="{postrow.POST_ID}"><a href="#" class="{postrow.POST_ID}">
```
Wie kann ich das dem Validator nun klar machen?


----------



## Lime (22. Juli 2012)

Bist du dir da sicher? Hast du mal im kompilierten Quellcode nach id="box" gesucht?
Eventuell eine ungewollte Schleife/doppelte Ausgabe drin?


----------



## Shorty1968 (22. Juli 2012)

Ja bin ich mir eigentlich , ich vermute mal das er das so sieht weil durch das *{postrow.POST_ID}* eine Zahl und durch jeden Beitrag eine andere Neue Zahl gezeigt wird er es so sieht das es mehrer gibt.


----------



## Lime (22. Juli 2012)

id="box" ist mAn aber keine Zahl ?


----------



## Shorty1968 (22. Juli 2012)

Das weiss ich aber dadurch das die Zahl durch die Zahl der des beitrags am ende sich immer ändert , denkt der Validator das verstehst du was ich meine?

Drcuh das *{postrow.POST_ID}* wird die beitrags Zahl ausgegeben und bei jedem Neuen beitrag ist es eine andere,dadurch denkt der Validator das es das id="box" mehrfach gibt,also muss ich das ändern , auch so das es dann immer noch Funktioniert,aber ich weiss nicht wie und was?


----------



## Netzwerkidi (22. Juli 2012)

Wo kann man den gesamten Code sehen?
Welchen Validator verwendest du?


----------



## Shorty1968 (22. Juli 2012)

Der Code selber ist in einem Template,aber wozu er benötigt wird kannst du hier sehen:

http://www.phpbb-service.de/viewtopic.php?f=17&t=4

TestUser
1234567

Wenn du im Beitrags Profil auf *User Details* gehst öffnet sich ein Fenster und dafür beziehungsweisse ist der Code dafür da.


----------



## Netzwerkidi (22. Juli 2012)

Also in dem Code, den ich hier sehe - angezeigt über "Seitenquelltext anzeigen" bei Firefox -, kommt die id zweimal vor:

line 929 column 9 - Warning: <dt> anchor "box" already defined
line 1014 column 9 - Warning: <dt> anchor "box" already defined


----------



## Shorty1968 (22. Juli 2012)

Da hast du recht,aber schau dir die Zeilen mal genau an,es ist immer der Selbe Code:

```
<dt id="box" class="4"><a href="#" class="4"><img src="./images/open.png" alt="{ SHOWDETAILS }" title="{ SHOWDETAILS }" height="16" width="16" />
```
nur die Zahl in der *class="4"* ist immer anderst und das ist die Beitrags oder Thread Nummer keine ahnung,auf jedenfall wird diese von der besagten Variable erzeugt die ich oben schon mal gepostet hatte.

Ich hatte es auch schon mal mit *class="box"* versucht aber da wurde mir der Kasten in dem das User Details drinnen ist zerhauen.


----------



## Netzwerkidi (22. Juli 2012)

Eine Id darf nur einmal vorkommen.
Nenne sie doch box1 und box2, wenn sie unbedingt so heißen müssen.
Wenn die mit Class arbeitest, wird ggf. ein Array geliefert, so dass du die einzelnen Element bearbeiten müsstest.

Warum löst es nicht nur mit CSS, z. B. mit einer Class "userBox", die dann zündet, wenn die Maus drüber ist.

.userBox{
  display:none;
  weitere Regeln
  ..
  ..
}

.userBox :hover {
  display:inline;
  ggf. weitere Regeln
  ..
  ..
}


----------



## Lime (22. Juli 2012)

Du hast dein CSS genau falsch formatiert.
ID = einzigartig
Class = für mehrere Elemente

Wenn du z.B. Beiträge formatierst, dann hat jeder eine eigene ID aber die Class (nämlich "box") haben alle gemeinsam.


----------



## Shorty1968 (22. Juli 2012)

@Lime
Leider verstehe ich nicht genau wie und was du meinst?

Ich habe es im Template nun mal geändert in *class="userBox"* und in der css Datei .userBox a hover{ usw },aber da ist die Box dann nicht mehr da und der Hover efekt?

Schaut euch es nun mal an im Link oben wie es jetzt dann aussieht.


----------



## Netzwerkidi (23. Juli 2012)

Irgendwie reden wir aneinander vorbei.

Im Code von http://www.phpbb-service.de/viewtopic.php?f=17&t=4 sehe ich immer noch

<dt id="box" class="4">", 
<dt id="box" class="7"> und 
<dt id="box" class="8"> 

statt dreimal 

<dt class="box">

Wie gestern Abend wird die Box bei einem Hover angezeigt - aber die Validierungswarnung kommt halt wegen mehrfach vergebenen id.

Wenn du den HTML-Code wie beschrieben in "<dt class="box">" änderst und in den CSS "#box" durch ".box" ersetzt, dann sollte es doch klappen, würde ich sagen, wenn "#box" sonst nirgendwo verwendet wid (z. B. JS-Code). Bei mir klappt es jedenfalls, wenn ich den Code mit Firebug so ändere.


----------



## Lime (23. Juli 2012)

Wir Netzwerkidi schon sagte, du darfst eine ID nur einmalig verwenden.
ID steht für eine Identität. Ein Individuum hat eine Identität und die sollte man nicht klauen, das ist strafbar.
Bei Datenbanken und Programmen ist das nicht anders. Eine ID ist einzigartig, wird diese mehrfach verwendet, weiß dein Programm nicht mehr, welches Element er ansprechen soll.

Das Prinzip:
Eine ID ist einzigartig, z.B. eine Beitrags-/Kommentarsnummer. Die Class hingegen ist quasi die "Familie" der Beiträge/Kommentare, wenn du sie richtig einsetzt.


```
<div id="beitrag1">Text</div>
<div id="beitrag2">Text</div>

#beitrag1 { display:block; ... }
#beitrag2 { display:block; ... }
```
Eine Möglichkeit, ist aber total unpraktisch und unkonventionell.


```
<div class="beitrag">Text</div>
<div class="beitrag">Text</div>

.beitrag { display:block; ... }
```
Mit dieser Möglichkeit spricht die Klasse beitrag gleich mehrere Elemente an, wodurch du den CSS-Code nur ein einziges Mal schreiben musst. Zudem kannst du den Divs noch eigene IDs geben, z.B. um sie später mit Javascript ansprechen zu können.


Edit:
Mir fällt da noch ein Vorteil ein.
Wenn du z.B. mehrere DIVs hast, die vom Prinzip her gleich sind, sich aber nur in der Größe (zum Beispiel) unterscheiden, so kannst du allen dieselbe Class geben und über die einzelnen IDs noch die Größe nachstellen. So sparst du Traffic, weil du nicht alles redundant vorkommen hast.


----------



## Shorty1968 (23. Juli 2012)

Vielen dank nun hat er die änderung genommen das Problem ist behoben und gleich hat sich ein neues Gravierendes auf getahn.

Irgndwie stimmt da was mit dem Design nicht den das was er nun anzeigt einen MIX aus dem orginal phpbb prosilver Style un einem von mir erstellten ist nicht das was drauf war,aber ich kann den Orginal Style von mir einspielen so oft ich will er nimmt die Design änderung nicht an und ich habe keine ahnung warum.

Ich habe sämtliche Caches geleert die vom Forum und von meinen beiden Browsern Firefox13 und Internet Explorer 9.

Auch sind in der Hover Box nun die angaben Rot Unterstrichen aber in den dazugehörigen css eintrag gibt es nichts was den Farbcode #ff0000; hat.


----------



## Netzwerkidi (23. Juli 2012)

Nutzt du Firebug? Nein? Dann wird es aber Zeit, oder Opera, dafür gibt es DragonFly (Ctrl+Shft+i) oder die Tools der anderen Browseranbieter.

In allen Fällen würdest du erkennen, dass die underlined Elemente alle innerhalb eines a-Tags liegen. Und dessen Eigenschaften werden vererbt.

Vielleicht sollte man das a-Tag in etwas anderes ändern, da das href-Attribut ja eh nicht benötigt wird (= "#").
Aber Achtung: dann muss CSS natürlich wieder angepasst werden (a -> NeuesElement).


----------



## Shorty1968 (23. Juli 2012)

Danke euch für eure Hilfe,ich muss mir die css mal vornehmenleider bin ich darin nicht ganz so gut,aber es muss  ja geändert werden.

Wie meinst du das mit dem a tag genau,was muss ich beachten und warum wird das href-Attribut nicht benötigt?


----------



## Netzwerkidi (23. Juli 2012)

Ich habe eine Hardcopy für dich angefertigt.


----------



## Shorty1968 (23. Juli 2012)

Hallo das hatte ich gewusst das du das meinst,was ich meinte war wird das für den Hover efekt nicht benötigt?

Da habe ich noch eine Frage zu folgendem Javascript Code:

```
<script type="text/javascript">
// <![CDATA[
    function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }
// ]] >
</script>
```
Bei dem mekert er zum einen dem:

```
// <![CDATA[
// ]] >
```
und an dem:

```
function toggle_visibility(id) {
       var e = document.getElementById(id);
```
rum,im unteren wegen der *(ID)*,das kann ich wohl nicht in der css und mit class="" beheben?


----------



## Netzwerkidi (23. Juli 2012)

Ich würde dir empfehlen, dir eine geeignete Arbeitsumgebung einzurichten, sonst stocherst du nur im Nebel rum.  Firebug und Web Developer kosten nichts und können einem schnell helfen. 

Vielleicht haben andere noch andere Tipps.

toggle_visibility wird nur von an einer Stelle verwendet und hat mit dem zuerst von dir gemeldeten Problem nichts zu tun; es bezieht sich auf dies Code-Stelle:


```
" folgende User möchten sich bei TestUser bedanken:: [Show Me]
    admin..."
```


----------



## Shorty1968 (23. Juli 2012)

Nein das stimmt das Problem hat mit dem Ersten gemeldeten nichts zutun,denoch würde ich es gerne beheben aber ich weiss nicht wie?

Das erste Problem ist ja behoben worden von mir , mit eure Hilfe.



Netzwerkidi hat gesagt.:


> toggle_visibility wird nur von an einer Stelle verwendet und hat mit dem zuerst von dir gemeldeten Problem nichts zu tun:



Ich verstehe nicht genau was du mir damit sagen möchtest?

*EDIT*
Mir ist gerade aufgefallen das es an diesen eintrag liegen müsste:
*id="{postrow.S_POST_NUM}">*
das ID darin wird an den Javascript übergeben nehm ich mal an und wie könnte man das nun ändern , damit es funtioniert und Valide ist?


----------



## Netzwerkidi (24. Juli 2012)

id="{postrow.S_POST_NUM}">
Wo soll das sein?


----------



## djheke (24. Juli 2012)

Du musst die Cache Datei(en) im Backendbereich löschen.
Kannst ja mal als Hilfestellung hier unter Punkt 4 lesen:PHPBB3 Forum auf eigener Webseite einbinden

@Edit: Sorry, habe die 2. Seite nicht gesehen. Wollte auf dieser Frage antworten


> Irgndwie stimmt da was mit dem Design nicht den das was er nun anzeigt einen MIX aus dem orginal phpbb prosilver Style un einem von mir erstellten ist nicht das was drauf war,aber ich kann den Orginal Style von mir einspielen so oft ich will er nimmt die Design änderung nicht an und ich habe keine ahnung warum.



@Edit: Lesen müsste man können. Also vergiss diese Antwort.


----------

