Payday 2 =)
(scheiß Sucht!)
Beiträge von cottton
-
-
Was The Scout sagte plus: die Funktion "durchschnitt" muss den Wert zurückgeben (return $ergebnis)
plus:
Evtl hast Du da was beim Format verdattelt.
01.01.2014 und '01,08,2014 (punk und komma) wird so nicht funktionieren.Was hast Du beim Datum für ein Format verwendet?
Ich tippe auf DATE. Dann ist das Format: JAHR-MONAT-TAG - also 2014-06-24 zBDas hier sollte funktionieren:
PHPSELECT AVG(`Gehalt`) AS `durchschnitt` FROM `Lohnsteuer` WHERE `name` = ". mysql_real_escape_string($name) ." AND `Zeit` >= ". mysql_real_escape_string($anfang) ." AND `Zeit` <= ". mysql_real_escape_string($ende) ." ORDER BY `Zeit`
Du kanst auch BETWEEN verwenden, wobei das Wort an sich mMn falsch gewählt ist. Denn BETWEEN wählt "inklusive" aus.
Man könnte denken "... WHERE `zahl` BETWEEN '1' AND '5' " wählt alle Werte zwischen 1 und 5 aus.
Allerdings (siehe doku)ZitatWenn expr größer oder gleich min und expr kleiner oder gleich max ist, gibt BETWEEN 1 zurück, andernfalls 0.
-
type="number" daran hab ich garnich gedacht

-
Die 2te Frage ist mir zu allgemein.
Zu 1.:
sowas in etwaHTML
Alles anzeigen<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> </style> <script type="text/javascript"> </script> </head> <body> <form name="" method="post"> <input type="text" id="texfeld_x" name="texfeld_x" value="0" readonly /> <!-- readonly damit keiner was eintragen kann sondern die button nutzt --> <input type="button" value="-" onclick="anzahlAendern('texfeld_x',false,1);" /> <input type="button" value="-10" onclick="anzahlAendern('texfeld_x',false,10);" /> <input type="button" value="+10" onclick="anzahlAendern('texfeld_x',true,10);" /> <input type="button" value="+" onclick="anzahlAendern('texfeld_x',true,1);" /> <br> <input type="submit" value="absenden" name="absenden" /> <form> <script language="JavaScript"> <!-- function anzahlAendern(id,type,amount) { // id ist die id des text feldes // type (true oder false) gibt an in welche richtung (also plus oder minus) // amount gibt an, wie viel ... var textfeld = document.getElementById(id); var anzahl_momentan = parseInt(textfeld.value); var anzahl_neu; if(type === true){ anzahl_neu = anzahl_momentan+amount; }else{ anzahl_neu = anzahl_momentan-amount; } // damit wir keine negativen werte bekommen müssen wir prüfen, ob anzahl_neu < 0 if(anzahl_neu < 0){ anzahl_neu = 0; } textfeld.value = anzahl_neu; } // --> </script> </body> </html> -
... die man festhalten muss

(wer magine kennt/nutzt, weiß was gemeint ist =)
[Blockierte Grafik: https://scontent-a-ams.xx.fbcdn.net/hphotos-xap1/t1.0-9/q71/s720x720/10488029_652941148128312_5517451679782478704_n.jpg] -
Hör auf
bin lange nicht pro =)
Ich sehe mich selbst eher als fortgeschritten. Ich muss immer noch nachlesen wenns kompliziert wird
-
Du hast hier nen komischen Fall.
Wenn Du per self:: ansprichst, muss auch der "Rest" der Klasse damit klar kommen.
Bsp:PHP
Alles anzeigenclass auto{ public $AUTO; function __construct($name){ $this->AUTO['name'] = $name; } public function auto_infos(){ echo "<h2>self:: Infos zu ".self::auto_name()."</h2>"; echo "<h2>\$this-> Infos zu ".$this->auto_name()."</h2>"; echo "<pre>"; print_r($this->AUTO); echo "</pre>"; } function auto_name(){ return $this->AUTO['name']; } function change_name($val){ $this->AUTO['name'] = $val; // Fatal error: Using $this when not in object context in ... self::$AUTO['name'] = $val; // Fatal error: Access to undeclared static property: auto::$AUTO in ... } } $auto = new auto('volvo'); echo $auto->auto_infos(); auto::change_name('trabbi');
Das self mach also keinen Sinn, da Du nichts anderes in der Klasse als static definiert hast.
Ich empfehle auch immer die Typen/Sichtbarkeit zu definieren.Hier auch mal ein Bsp fürs Verhalten von static vars und nicht-static vars:
PHP
Alles anzeigenclass Auto { // static vars müssen immer deklariert werden public static $name = 'undefined'; function __construct() { // nicht-static vars können "zwischendurch" erstellt werden $this->name = 'volvo'; return; } public function changeName($val) { $this->name = $val; self::$name = $val; return; } } $auto = new Auto(); echo 'Auto::$name: '.Auto::$name.'<br>'; // undefined echo '$auto->name: '.$auto->name.'<br>'; // volvo echo '<hr>'; // wir ändern jetzt die vars der instanz $auto, die von der klasse Auto erstellt wurde: $auto->changeName('neues auto'); echo 'Auto::$name: '.Auto::$name.'<br>'; // neues auto echo '$auto->name: '.$auto->name.'<br>'; // neues auto echo '<hr>'; // wir erzeugen jetzt einen neue instanz der klasse Auto: $auto_2 = new Auto(); echo 'Auto::$name: '.Auto::$name.'<br>'; // neues auto echo '$auto_2->name: '.$auto_2->name.'<br>'; // volvo echo '<hr>';
Static vars sind also nicht immer ganz einfach nachzuvollziehen, wenn man nicht-static und static mischt.
Man kann aber (glaub ich) sagen, dass alle erzeugten Instanzen einer Klasse auf den gleichen Inhalt zeigen. -
raff ich net.
Ist ne Endlosschleife.
Und O existiert ja auch net in der 2ten Klasse. Also kommt kein echo "World".
$this->O ist ja nicht gesetzt. Also kann es auch keine Methode ->make_sth() haben.Btw:
Du nutzt var. Das ist veraltet.
Besser ist es
zu nutzen. -
ich bleib da lieber bei meiner toDo.txt

aber ist sicher gut wenn man mit mehreren an einem Projekt arbeitet -
undefined ist "das null" des Javascript, wenn ich es nicht auch falsch verstanden hab.
Bin mir da aber eigl sicher =)Guck Dir das mal an: http://saladwithsteve.com/2008/02/javasc…ed-vs-null.html
-
-
Für interessierte: Swift
Sieht ganz interessant aus. Einige Sachen machen wirklich Sinn.
Andere aber sind einfach albern (meine Meinung) wie zBCode# Functions are a first-class type. This means that a function can return another function as its value. func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { return 1 + number } return addOne } var increment = makeIncrementer() increment(7)
Sieht scheiße und "noobig" aus.
Was haben die nur gegen:Aber da hat ja jeder andere Vorstellungen.
EDIT: unintuitiv und in sich wiedersprechend:
Aber:Code# Subclasses include their superclass name after their class name, separated by a colon. class Square: NamedShape { ... }
Warum? was spricht gegen ein Schlüsselwort?
-.- -
Nutze mal Firebug o.ä. um bei Javascript evtl Fehler zu sehen/finden.
Denn das hier:
ist total "kaputt" =)ZitatUnhandled Error: 'msekunde <10) ? ":00" : ":"' is not a function
Lösung:
HTML
Alles anzeigen<div id="uhr"></div> <script language="JavaScript"> <!-- var interval = setInterval(function(){uhr_anzeigen()}, 1); /*wieder stoppen: clearInterval(interval);*/ function uhr_anzeigen() { var Datum = new Date(); var stunde = Datum.getHours(); var minute = Datum.getMinutes(); var sekunde = Datum.getSeconds(); var msekunde = Datum.getMilliseconds(); Zeit = ((stunde < 10) ? " 0" : " ") + stunde; Zeit += ((minute < 10) ? ":0" : ":") + minute; Zeit += ((sekunde < 10) ? ":0" : ":") + sekunde; Zeit += ((msekunde < 10) ? ":00" : (msekunde < 100) ? ":0" : ":") + msekunde; Zeit += " Uhr"; document.getElementById('uhr').innerHTML=Zeit; } // --> </script> -
Kann ich nur empfehlen.
Warum?
GET/POST vars kommen immer als String rein. Bei typen starken Vergleichen (x === y) kann das ungewollte Ergebnisse bringen.
Was macht das?
2 functions:
set_numeric_type() val rein, und wenn es numerisch ist, kommt ein int/bigint/... raus. (Achtung: 0010 zB wird zu 10 !)
arrayWalkRecursiveCallUserFunc() array rekursiv durchlaufen und call_user_func() auf jeden Wert anwenden (je länger der Name einer Funktion, desto besser muss sie sein =)Bsp und functions:
PHP
Alles anzeigenfunction set_numeric_type($val) { $types = array('integer','float'); // EDITED 10 06 2014 if(is_numeric($val)and (!is_int($val)or !is_float($val))){ if(is_numeric($val)and is_string($val)){ foreach($types as $type){ $temp = $val; if(settype($temp,$type)and $temp == $val){ return $temp; } } } return $val; } function arrayWalkRecursiveCallUserFunc($arr,$functions) { if(!function_exists('byref')){ function byref(&$val,&$key,$functions){ foreach($functions as $function_name){ $val = call_user_func($function_name,$val); } } } $functions = (!is_array($functions))?array($functions):$functions; array_walk_recursive($arr,"byref",$functions); return $arr; } # simulate get (or just add ?a=1 to your url): $_GET['a'] = '1'; // string(1) "1" $_GET = arrayWalkRecursiveCallUserFunc($_GET,array('trim','set_numeric_type')); $_POST = arrayWalkRecursiveCallUserFunc($_POST,array('trim','set_numeric_type')); var_dump($_GET['a']); // int(1)
Wie bereits erwähnt: Achtung: 0010 zB wird zu 10 ! -
Ich hätte das false weglassen können. Das gehört eigtl gar nicht zum Thema.
Hier gehts um '' und 0.Also:
PHP
Alles anzeigen$var = 0; echo ($var != '') ?'bedingung wahr' :'bedingung nicht wahr'; // bedingung nicht wahrEDIT:
ZitatWenn sowohl leer als auch false dann "bedingung wahr" sonst "bedingung nicht wahr"?
Nö.
Wenn NICHT leer und NICHT false, dann wahr, sonst nicht wahr.
=)EDIT2:
noch ein Bsp: user login
Angenommen $_POST['password'] geht durch irgendeine Funktion, welche durch einen Fehler 0 (int) zurückgibt. (Es gibt sicherlich ein besseres Bsp)
Dann wird ein "schwacher" vergleich mittels == ein Fatales Ergebnis bringen:PHP
Alles anzeigen$post_pw = 0; $db_hash = '***WHATEVA but a string***'; echo ($post_pw == $db_hash) ?'bedingung wahr' :'bedingung nicht wahr'; // bedingung wahr
PHP versucht beim Vergleich den String in eine Zahl umzuwandeln. Dabei kommt 0 (int) heraus, da der String nicht gewandelt werden kann.Für mich gilt ab jetzt (wenn ich hoffentlich daran denke): IMMER typen starke Vergleichsoperatoren nutzen.
Das bring einige Arbeit mehr, weil zB GET/POST/SQL immer Strings liefern,
aber in Sachen (Selbst-)Sicherheit bringt es viel.Btw: zum Thema GET/POST immer String: https://www.html-seminar.de/html-css-php-f…-int/#post32262
-
gewünschtes Resultat: Ausführen, wenn $var nicht leer ist
PHP
Alles anzeigen$var = 0; echo ($var != '' and $var !== false) ?'bedingung wahr' :'bedingung nicht wahr'; // bedingung nicht wahrWarum bekommt man als Ergebnis "bedingung nicht wahr"?
Weil != nicht auf den Typ prüft. Daher ist '' und 0 gleich leer.!== dagegen prüft auch den Typ. Und 0 ist nicht '' (int ist nicht str).
Kann man schon mal drauf rein fallen =)
-
-
Ja, da hab ich die " vergessen =)
PS: wenn Du schreibst, dass Du einen Fehler in Zeile xy bekommst, wäre es auch gut den Fehler zu posten =)
Dafür sind Fehlermeldungen ja da. Die sagen nicht nur "nö, hier gehts nicht weiter" =)
Wenn man sich an die Meldungen "gewöhnt", die also versteht, dann findet man meistens auf Anhieb die Lösung.EDIT:
ich finde noch wichtig zu erwähnen, dass Du nach
exit(0); nutzen solltest. Also:Denn die Funktion header() beendet das Script nicht.
Heißt: nachfolgender Code würde ausgeführt werden.Bsp:
PHP
Alles anzeigenif($eingeloggt){ // delete sql query ... header("location: deinSeitenName.php"); } // hier irgend ein code wenn user nicht eingeloggt war sql= "..."; // ... usw // das hier würde alles noch ausgeführt werdenexit() beendet das Script (exit eben =)
Die 0 (null) bewirkt, dass das Script "erfolgreich" beendet wird.
Siehe: http://www.php.net/manual/de/function.exit.php
Evtl Destructoren(?) ect werden also noch ausgeführt. (braucht man, wenn man eher in Sachen OOP (Objektorientierter Programmierung) ). -
... die erste <tr> wird nicht geschlossen - da fehlt ein slash.
So. Ist umfangreicher als Du denkst.
Erstmal den button mit nem <a></a> umschliessen und den link zum php script setzen.
Du brauchst natürlich eine id der Nachricht.HTML<td> <a href="SCRIPTNAME.php?delete=<?php echo $fetch['id']; ?>"> <center><button><img width="25" src="../images/button_cancel.png" alt="read_message" ></button></center> </a> </td>im php script musst Du nun prüfen:
- ist der Benutzer (also der das Script aufruft) berechtigt das Script aufzurufen? (eingeloggt? rechte?)
- ist der Benutzer dazu berechtigt die Nachricht zu sehen/lesen/löschen ... also soll er irgendwas mit der Nachricht machen dürfen?
- kommt über $_GET "was rein"? Also hier im Bsp $_GET['delete']
- ist der Wert in $_GET['delete'] valid? (also numerisch und nicht leer):
- sql Query zusamenstellen:PHP§query = " DELETE FROM `nachrichten` WHERE empfaenger = ".mysql_real_escape_string($username)." -- "extra" sicher stellen, dass der benutzer stimmt AND id = ".mysql_real_escape_string($_GET['delete'])." LIMIT 1 -- FALLS mal jemand eine SQL injection hinbekommen sollte, dann KANN man damit u.U. schlimmeres verhindern. Kann man aber auch umgehen. (Thema schweift zu sehr ab) "Wenn jetzt doch de id, also die Nachricht nicht existieren sollte, dann passiert "einfach nix".
Ein UPDATE oder DELETE gibt keinen Fehler zurück, wenn kein passender Datensatz gefunden wurde. -