Ergebnis 1 bis 20 von 288

Thema: Allgemeiner Fragenthread II

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Hallo

    Da ich vorzugsweise mit Ajax arbeite, möchte ich den Usern selbstverständlich auch eine javascriptfreie Möglichkeit der Datenübermittlung anbieten.

    HTML-Code:
    <a href="linkziel" onClick="jsfunktion(); return false;">Link</a>
    So wäre es eigentlich gut gelöst. Ist JS aktiviert wird das linkziel per "return false" außer Kraft gesetzt und die JS Instruktionen werden befolgt.
    Ist JS deaktiviert wird der User zum Linkziel geleitet.

    Das Problem an der Sache ist nur, dass die Javascript Eventhandler, soweit ich weiß, nicht mehr mit dem aktuellen HTML konform sind.
    Welche andere Lösungsmöglichket gibt es denn hier?

    Btw. Wie lassen sich den generell die recht nützlichen Eventhandler ersetzen? (OnFocus, OnBlur z.B.) ?

  2. #2
    Zitat Zitat von Antares Beitrag anzeigen
    Hallo

    Da ich vorzugsweise mit Ajax arbeite, möchte ich den Usern selbstverständlich auch eine javascriptfreie Möglichkeit der Datenübermittlung anbieten.

    HTML-Code:
    <a href="linkziel" onClick="jsfunktion(); return false;">Link</a>
    So wäre es eigentlich gut gelöst. Ist JS aktiviert wird das linkziel per "return false" außer Kraft gesetzt und die JS Instruktionen werden befolgt.
    Ist JS deaktiviert wird der User zum Linkziel geleitet.

    Das Problem an der Sache ist nur, dass die Javascript Eventhandler, soweit ich weiß, nicht mehr mit dem aktuellen HTML konform sind.
    Welche andere Lösungsmöglichket gibt es denn hier?

    Btw. Wie lassen sich den generell die recht nützlichen Eventhandler ersetzen? (OnFocus, OnBlur z.B.) ?
    Da liegst du falsch. Die Event-Handler sind sogar in XHTML 1.1 noch konform, wenn man sie komplett klein schreibt. Wenn der Validator also bei onClick meckert, nenn ihn onclick und alle sind glücklich.
    Außerdem könnte man sie notfalls durch reines Javascript ersetzen:
    document.getElementById('link').onclick = handler_function;

  3. #3
    Zitat Zitat von dead_orc Beitrag anzeigen
    Da liegst du falsch. Die Event-Handler sind sogar in XHTML 1.1 noch konform, wenn man sie komplett klein schreibt. Wenn der Validator also bei onClick meckert, nenn ihn onclick und alle sind glücklich.
    Außerdem könnte man sie notfalls durch reines Javascript ersetzen:
    document.getElementById('link').onclick = handler_function;
    Nagut, hab ich mich wohl getäuscht
    Danke jedenfalls =)

  4. #4
    Wieso sollte man in PHP array() verwenden? Sollte man es der Lesbarkeit zu liebe tun oder kann ich mir die Linien sparen? (mal ausgenommen man gibt die Variable in einer Funktion zurück und die Array könnte leer bleiben)

    Geändert von Drakes (12.07.2008 um 21:33 Uhr)

  5. #5
    Ganz simpel, in erster Regel ist die "Funktion" (ist eig. keine richtige Funktion, sondern ein festes Element) dafür da um einer Variable einen Anfangswert zu geben, bzw. ein Array einer Funktion zu übergeben:
    PHP-Code:
    tuWas(Array('wert''wer2''wert3')); 
    Auch wenn in PHP Variablen nicht direkt deklariert werden müssen, brauchen gerade wenn man einem Array in einer Schleife Werte hinzufügen möchte diese ein Anfangswert der PHP mitteilt das die Variable auch existiert und das es sich um ein Array handelt.
    PHP-Code:
    $tmp = Array();
    while(
    $row mysql_fetch_assoc($result)) {
          
    $tmp[] = $row;


  6. #6
    Zitat Zitat von Xardas der Dunkle Beitrag anzeigen
    Ganz simpel, in erster Regel ist die "Funktion" (ist eig. keine richtige Funktion, sondern ein festes Element) dafür da um einer Variable einen Anfangswert zu geben, bzw. ein Array einer Funktion zu übergeben:
    PHP-Code:
    tuWas(Array('wert''wer2''wert3')); 
    Auch wenn in PHP Variablen nicht direkt deklariert werden müssen, brauchen gerade wenn man einem Array in einer Schleife Werte hinzufügen möchte diese ein Anfangswert der PHP mitteilt das die Variable auch existiert und das es sich um ein Array handelt.
    PHP-Code:
    $tmp = Array();
    while(
    $row mysql_fetch_assoc($result)) {
          
    $tmp[] = $row;

    Ich weiss nicht, aber dein Beispiel hat bei mir auch ohne $tmp = array(); funktioniert. (bzw. ein konvergentes Beispiel)

  7. #7
    Tut es nur augenscheinlich.
    Schreib mal ein error_reporting(E_ALL); an den vor die Schleife, du wirst eine "Notice"-Fehlermeldung bekommen.

    Desweiteren bei dem Beispiel oben werden ja Daten aus der db eingelesen, wenn nun, aber keine gefunden werden, würde das Array $tmp gar nicht erst angelegt werden und wenn du es später dann später z.B. in einer foreach schleife abarbeiten willst, würdest du nicht nur eine E_NOTICE bekommen sondern eine E_WARNING, die besagt das foreach eben ein Array erwartet und nicht eine Variable vom Typ null.

  8. #8
    Huhu.
    Nun, ich habe eine einfache Frage zu einem Query, es geht um folgenden :

    PHP-Code:
    $sql "INSERT INTO `spieler` SET `y` = '".$_SESSION['y']."' WHERE `id` = '".$_SESSION['spieler_id']."'"
    Beim Ausführen sagt der Browser mir folgendes :
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `id` = '6'' at line 1

    Ich frage mich, warum er das sagt.
    Vielleicht bin ich gerade blind und sehe den einfachen Fehler nicht, aber meine Augen zeigen mir, dass ich nach dem Einbinden der ID in den Query ein ' stehen habe und die anderen " als Abgrenzungen zum String gebraucht werden.
    Wieso kriege ich diesen Fehler?

    EDIT : Jaaa. INSERT mit UPDATE vertauscht xD

    Geändert von Tessio (17.09.2008 um 12:09 Uhr)

  9. #9
    Zudem niemals Variablen (Vorallem Request-Variablen) ungeparsed an n' Query anhängen.
    Desweiteren sind die ' bei numerischen Werten unnötig .

  10. #10
    Zitat Zitat von Xardas der Dunkle Beitrag anzeigen
    Zudem niemals Variablen (Vorallem Request-Variablen) ungeparsed an n' Query anhängen.
    Desweiteren sind die ' bei numerischen Werten unnötig .
    Request-Variablen sind (neben $_REQUEST natürlich) $_POST, $_GET, $_COOKIE und $_FILES (sowie deren $HTTP_*_VARS Pendants). $_SESSION besteht nicht aus Daten, die der User übermittelt hat, daher sollte es kein zu großes Problem sein, sie direkt zu benutzen. Natürlich wäre folgendes sauberer:
    PHP-Code:
    $sql sprintf("UPDATE `spieler` SET `y` = '%s' WHERE `id` = %d"mysql_real_escape_string($_SESSION['y']), $_SESSION['spieler_id']); 
    Hier wird sichergestellt, dass $_SESSION['spieler_id'] eine Zahl ist und $_SESSION['y'] wird vorher mit mysql_real_escape_string() behandelt, um ' zu escapen. Aber wenn man davon ausgeht, dass die Variablen bereits beim Setzen verifiziert wurden, ist das unnötig. Denn wenn jemand die Session-Variablen, die aufm Server gespeichert werden, verändern kann, hat man noch ganz andere Probleme.

  11. #11
    Da man die MySQL-Api mit neueren MySQL-Versionen eh nicht mehr benutzen sollte, sondern die MySQLi API oder PDO, kann man ggf. auch auf Statemants zurück greifen und somit auf escaping verzichten:
    http://de3.php.net/manual/de/mysqli.prepare.php
    http://de3.php.net/manual/de/pdo.prepare.php

  12. #12
    Zitat Zitat von dead_orc Beitrag anzeigen
    Request-Variablen sind (neben $_REQUEST natürlich) $_POST, $_GET, $_COOKIE und $_FILES (sowie deren $HTTP_*_VARS Pendants). $_SESSION besteht nicht aus Daten, die der User übermittelt hat, daher sollte es kein zu großes Problem sein, sie direkt zu benutzen.
    Da sollte man sich nicht vertun. Ich hatte schon mal Probleme, weil ich die Request URI in der Datenbank speichern wollte, und die halt ein ' enthielt. Lieber absichern, als nachher Lücken offen haben

  13. #13
    Wie definiere ich in meiner .css Link-Farben (Hover, Active, Visited...) für einzelne DIVs? Die in #navi sollen andere Farben als die in #main haben.
    Hab mal ein bisschen rumprobiert, bin aber nicht wirklich zu einem Ergebnis gekommen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •