Beiträge von Basi

    Sei froh das ich gerade nicht in deiner Nähe bin :mrgreen:

    Gucke dir bitte noch ein mal an wozu substr gedacht ist und wie es funktioniert, aber vor allem was es zurück gibt...

    Kleiner Tipp:

    PHP
    <span class="syntaxdefault"><br />  if</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'hallo'</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// trifft auf jeden Fall zu<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">// Code<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> </span>

    Noch ein Tipp:

    Was du brauchst ist strlen

    Jetzt komme ich vom Untermenü gar nicht mehr zum Punkt "Video" ohne die Maus komplett heraus zu bewegen, beim überfahren des Punktes "Special Work" ändert sich die Breite des Untermenüs, das wirkt auch nicht sehr schön.

    Ich weiß auch nicht warum du dich so an diesem Teil festbeißt, kurzer Ausflug in die Welt der Musiker:

    "Ein guter Musiker beißt sich nicht stundenlang an einem Teil eines Musikstückes fest, wenn etwas nicht sofort passt wird etwas anderes ausprobiert."

    Ich sehe bei deinem, in der Tat noch winzigen, Menü nicht mal wirklich den Sinn eines Pop Up Menüs, es erschwert die Bedienung, will dir nicht richtig gelingen und sieht nicht mal schön aus, lasse doch einfach unter dem Punkt Gallery ein Untermenü anzeigen, ein wenig Einrücken und fertig.

    Was soll eigentlich das da:

    Code
    <div id="steuerung"> 
            <ul id="navi"> 
                [...]       
            </ul> 
        </div>

    ul ist schon ein Block Element, und wenn nicht könntest du auch eines draus machen, also mach den div weg bevor jemand mit Ahnung schaut :mrgreen:

    Dein CCS Code.. es ist Ansichtssache, aber ich finde den furchtbar eingerückt ;)

    Wenn du übrigens mit der Seite kommerziell werden möchtest solltest du die deutschen Begriffe im Quellcode wie zum Beispiel "Steuerung" am Besten noch durch englische Begriffe ( "Menu" ) ersetzen, das wirkt professioneller.

    PHP
    <span class="syntaxhtml">  <form action="form.php" method="post"><br />    <p>Ihr Name*:</p><br />    <p><input type="text" name="name" /></p><br />    <p>Gew&uuml;nschte Anzahl Karten</p><br />    <p><input type="number" min="1" max="100" value="1" name="anzahl" /></p><br />    <p><input type="submit" name="submit" value="Bestellung abschicken" /></p><br />  </form><br /><br />  <hr /><br /><br /><span class="syntaxdefault"><?php<br /><br />  $name </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$anzahl    </span><span class="syntaxkeyword">= </span><span class="syntaxstring">""</span><span class="syntaxkeyword">; </span><span class="syntaxcomment">// name und anzahl initialisieren<br /><br />  </span><span class="syntaxkeyword">function </span><span class="syntaxdefault">checkName</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v </span><span class="syntaxkeyword">= </span><span class="syntaxstring">''</span><span class="syntaxkeyword">)<br />  {<br />    if(!</span><span class="syntaxdefault">ctype_alnum</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">))<br />      return </span><span class="syntaxdefault">false</span><span class="syntaxkeyword">;<br />    if(</span><span class="syntaxdefault">preg_match</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'#\d#is'</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">))<br />      return </span><span class="syntaxdefault">false</span><span class="syntaxkeyword">;<br />    return </span><span class="syntaxdefault">true</span><span class="syntaxkeyword">;<br />  }<br /><br />  if<br />  (<br />    !empty(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'submit'</span><span class="syntaxkeyword">]) AND<br />    !empty(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">])   AND<br />    !empty(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'anzahl'</span><span class="syntaxkeyword">])<br />  )<br />  {<br />    </span><span class="syntaxdefault">$name   </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">htmlentities</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">]));<br />    </span><span class="syntaxdefault">$anzahl </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">intval</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">trim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">htmlentities</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'anzahl'</span><span class="syntaxkeyword">])));<br /><br />    if(</span><span class="syntaxdefault">checkName</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$name</span><span class="syntaxkeyword">) AND </span><span class="syntaxdefault">is_int</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$anzahl</span><span class="syntaxkeyword">))<br />    {<br />      print </span><span class="syntaxstring">"<p>Absenden erfolgreich, $name hat $anzahl Karte/n bestellt.</p>"</span><span class="syntaxkeyword">;<br />    }<br /><br />    if(!</span><span class="syntaxdefault">checkName</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$name</span><span class="syntaxkeyword">))<br />      print </span><span class="syntaxstring">"<p><strong>Fehler:</strong> Der Name darf nur aus Buchstaben bestehen!</p>"</span><span class="syntaxkeyword">;<br />    if(!</span><span class="syntaxdefault">is_int</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$anzahl</span><span class="syntaxkeyword">))<br />      print </span><span class="syntaxstring">"<p><strong>Fehler:</strong> Anzahl der Karten ist keine g&uuml;ltige Zahl!</p>"</span><span class="syntaxkeyword">;<br />  }<br /></span><span class="syntaxdefault">?><br /></span></span>

    Sorry, gerade keine große Zeit zu erklären... Guck es dir mal an und bei Fragen stell sie.

    Ich muss mich entschuldigen, bei der Funktion habe ich echt Mist gebaut, na ja ich bin mit meinen Gedanken eh Momentan woanders..

    # sind die Begrenzungszeichen, die signalisieren das zwischen den Beiden das Suchmuster steht, möglich sind z.B. auch / oder $.

    \d ist das Suchmuster, ein d mit Escape \ bedeutet "Beliebige Ziffer".

    Die Funktion funktioniert wunderbar, man muss sie nur richtig anwenden, dein Regulärer Ausdruck:

    PHP
    <span class="syntaxdefault">  </span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">preg_match</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'#\d#'</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$var</span><span class="syntaxkeyword">))<br />  {<br />    </span><span class="syntaxcomment">// Im String befindet sich eine Zahl<br />  </span><span class="syntaxkeyword">}<br />  else<br />  {<br />    </span><span class="syntaxcomment">// Im String befindet sich keine Zahl<br />  </span><span class="syntaxkeyword">}<br /> </span><span class="syntaxdefault"></span>
    PHP
    <span class="syntaxdefault">function checkString</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">)<br />{<br /></span><span class="syntaxdefault">    for</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$i </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 1</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> $i </span><span class="syntaxkeyword"><=</span><span class="syntaxdefault"> strlen</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">++)<br /></span><span class="syntaxdefault">    if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_int</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">++)))<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        return false</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">        return true</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br />}<br /></span><span class="syntaxdefault"> </span>

    Er liest den 1. Buchstaben ein und gibt sofort irgendwas zurück, so wird nur ein Buchstabe geprüft, ich habe es noch mal geblockt:

    PHP
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br />  </span><span class="syntaxkeyword">function </span><span class="syntaxdefault">checkString</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">)<br />  {<br />    for(</span><span class="syntaxdefault">$i </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">1</span><span class="syntaxkeyword">; </span><span class="syntaxdefault">$i </span><span class="syntaxkeyword"><= </span><span class="syntaxdefault">strlen</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">); </span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">++)<br />    {<br />      if(!</span><span class="syntaxdefault">is_int</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">++)))<br />      {<br />        return </span><span class="syntaxdefault">false</span><span class="syntaxkeyword">;<br />      }<br />    }  <br />    return </span><span class="syntaxdefault">true</span><span class="syntaxkeyword">;<br />  }   <br /></span><span class="syntaxdefault">?><br /></span></span>

    Du kannst mit der Funktion is_int($var) herausfinden ob eine Variable eine Zahl enthält.

    Wenn du überprüfen möchtest ob in einer Variable vom Typ String eine Zahl vorkommt brauchst du einen Regulären Ausdruck, das ist für den Anfang allerdings zu viel, mit folgender Funktion geht es auch:

    PHP
    <span class="syntaxdefault"><?php<br />  function checkString</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    for</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$i </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 1</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> $i </span><span class="syntaxkeyword"><=</span><span class="syntaxdefault"> strlen</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">++)<br /></span><span class="syntaxdefault">      if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">is_int</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">++)))<br /></span><span class="syntaxdefault">        return false</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    return true</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">?><br /></span>

    Einfach so ausführen:

    PHP
    <span class="syntaxdefault"><?php<br />  if</span><span class="syntaxkeyword">(!</span><span class="syntaxdefault">checkString</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$var</span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">// in der Variable befindet sich eine Zahl<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">  else<br />  </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">// in der Variable befindet sich keine Zahl<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">?><br /></span>

    Ich sage auch nicht das es schlecht ist, ich habe auf meinem Rechner nichts zu verbergen ;)

    Dagegen kann doch fast nur sein wer auch was zu verbergen hat ;)

    Das hat ja mit meiner Einstellung gar nichts zu tun, interessant finde ich nur das die Regierung so etwas darf, schon seit Jahren, und niemanden darauf hinweist, keiner wusste es, das ist keine Demokratie, doch demokratisch will die Regierung doch eigentlich sein?

    Zitat von &quot;Sören&quot;

    Nur mal so als Hinweis:
    weder bei isset(), noch bei empty() wird eine Notiz generiert, wenn die Variable undefiniert ist.

    Merkwürdig, bei mir krieg ich da auch einen Fehler ;)

    Naja aber wenn das so sein soll ist es auch so xD

    Jeder kann sie manipulieren wenn er weiß wie, deswegen am Besten einfach so lösen:

    PHP
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br />  <br />  $variable </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">htmlentities</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">]); </span><span class="syntaxcomment">// die Funktion htmlentities maskiert Sonderzeichen und verhindert so die Anwendung von HTML oder PHP Code<br /><br />  // ab hier dann $variable verarbeiten (checken ob gesetzt, auslesen, etc.)<br /><br /></span><span class="syntaxdefault">?><br /></span></span>

    Es ist ja kein Fehler, deshalb hei-t es ja Notice (=Notiz), es soll dich nur darauf hinweisen das der Parser dort eine Variable nicht zuordnen konnte und so einen Standardwert gesetzt hat, ich versichere dir es ist nicht falsch.

    Code
    empty($_POST['nachname'])

    Da wird wohl die Notiz entstehen.

    Hey keine Angst wir haben alle klein angefangen ;)

    Vorher initialisieren geht deshalb nicht, weil $_POST eine vordefinierte Variable serverseitig ist an der du im Programm selbst eigentlich nichts ändern kannst.

    Ob das BKA die Daten verkauft ist sicherlich ein Thema über das man lange diskutieren kann, ich denke nicht.

    "Boots" ist übrigens Englisch und heißt Stiefel (oder hochfahren :P) :D

    Du wirst es leider nicht anders lösen können, und es ist wirklich nicht weiter schlimm, der Parser weist dich lediglich drauf hin, denn es kann ja sein das du selbst im Code etwas vergessen hast.

    mit isset($_POST['senden'] kriegst du die selbe Notiz, nur halt mit index: senden.

    Mache dir keinen Kopf, es ist nicht schlimm.

    "Perfekt programmieren" ist so oder so Ansichtssache :)

    Das ist ganz normal und nicht weiter schlimm, du kannst es verhindern indem du in deiner oberste Zeile PHP folgendes verwendest:

    PHP
    <span class="syntaxdefault"><?php<br />  error_reporting</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">?><br /></span>

    Das hat damit zu tun das der Parser die Variable nachname sucht und diese nicht gesetzt ist, was logischer weie vorkommt wenn man das erste mal auf die Seite geht.

    Auf deinem Webspace ist in der php.ini wohl 0 als Standard gesetzt, wenn du auf besagtem Webspace in die oberste Zeile folgendes einfügst, bekommst du die Notiz auch:

    PHP
    <span class="syntaxdefault"><?php<br />  error_reporting</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">E_ALL</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">?><br /></span>