Ja. Du gibst der Date Funktion einfach den Zeitstempel mit.
Beiträge von cottton
-
-
-
value=<?php echo $z; ?>"
fehlendes "
2 maltype=text name=arbeitszeit size=20
...
ich suche nicht Deinen code nach Syntaxfehlern ab.
Wenn was nicht geht, dann gibts Fehlermeldungen. Anhand davon kann man herraus finden, was das Problem ist. -
Du musst echt erstmal alles "Aufräumen".
Du nutzt immer noch
$db->error()
was es nicht gibt.
Es muss
$db->error
heißen, denn es ist eine Variable.Und sowas hier
$erg1 = $db->query ($sql1)
was machen die 1en dort?type=text name=id_projekt size=10
wo sind die "und und und
-
-
yap, hatte nur keine Lust mehr

Wie man dort mehrere Sql-Anweisungen mitgibt ect kommt evtl später oder Morgen. -
Das war schon fast richtig. (obwohl es kein "richtig" gibt, denn viele Wege ...)
So würde ich es machen: (ein while ist mMn "schöner" als ein do while)PHP
Alles anzeigen$MeinArray = array(); while ($row_podidate = mysql_fetch_assoc($podidate)) { if ($row_podidate['podizei_datum'] != "" ) { /*$MeinArray[] = array( 'datum' => $row_podidate['podizei_datum'], );*/ $MeinArray[] = $row_podidate['podizei_datum']; } } $mein_string = implode(", ", $MeinArray); $pdf->Cell (30, 0, "Text mit " . $mein_string , 0, 0, 'L'); -
Kommt daraus an, wie Du sie ausgeben willst.
In der gleichen Zelle? Oder alle in einer eigenen Zelle?Ich denke mal Du hast ein Array aus der DB wie zB
Codearray( 0 => array( 'datum' => ..., 'dies' => ..., 'das' => ...), 1 => array( 'datum' => ..., 'dies' => ..., 'das' => ...), ... )
dann machst Du für jedes (foreach()) zB -
-
Wieso vorbei?
Du versuchst PHP code, der in der Datenbank in Tabellenfeldern steht, zu laden und auszuführen.
Das geht (ohne eval()) nicht.Teste das mal:
erstelle mal eine neue Datei (zB test.php)
und kopiere das hier rein:
Wenn Du die Datei ausführst, dann wird nicht 10 ausgegeben, sondern der String "echo 5+5;" -
Werte:
PHP
Alles anzeigen$nav_zusatz = (in_array($bereich,$__php_self) ? 'class="active"' : NULL; $sql = " INSERT INTO `web_navigation` (`nav_id`, `nav_titel`, `nav_url`, `nav_zusatz`, `nav_wo`, `nav_status`) VALUES ... (3, 'Leistungen', 'leistung/wachdienst', '" . $nav_zusatz . "', 'kopf', '1'), ... ";Wenn Du einen String erstellst wie zB:
"echo $a;"
Dann ist das ein String (Zeichenkette), aber kein PHP code. -
Ach, na jetz sehe ich erst was Du da machst

Du kannst keinen PHP code aus einem String (db gibts Strings (Daten) zurück) ausführen.
Genau genommen geht das (eval()) ist aber nicht zu raten, weil man evtl ein Scheunentor öffnet.Du solltest besser Werte in die Tabelle schreiben.
PHP// anstatt: if($_SERVER[''PHP_SELF''] == 'index.php') echo 'class="active"' // in die tabelle zu schreiben, schreibst Du den Wert, der dabei raus kommt in die Tabelle if($_SERVER[''PHP_SELF''] == 'index.php') $wert = 'class="active"';
also $wert (dessen Inhalt) imn die Tabelle -
Kopier mal den Teil, bei dem php im HTML steht hier rein.
Kann mir das auch grad nicht erklären. -
Zitat
und zwar mit mein PHP Code der aus der Datenbank kommt nicht ausgeführt sondern wie HTML ausgeben, sprich wenn ich im Quellcode schaue steht dieser 1zu1 da.
Wenn PHP code im HTML (also im Quelltext der Seite) steht, dann wird der PHP code nicht interpretiert (nicht ausgeführt).
Daher mein erster Verdacht auf eine .html Datei.Teste mal in der Datei ganz am Anfang ein <?php echo phpinfo(); ?>
-
Es wird wohl keine .php Datei sein. (index.php)
-
Ich sehe Du hast wohl immer ->query() genutzt.
Damit kann man keine Parameter/Platzhalter in der Sql-Anweisung nutzen.Was hier passiert ist ist folgendes:
Du hast $sql prepared,
parameter NULL und NULL gebunden (denn $suchstr hast Du UNTER der Anweisung definiert!),
dann die methode ->query benutzt, welche gar keine Platzhalter (die ?) unterstützt.Das kann nicht funktionieren.
Immer wenn Du Platzhalter (die ?) nutzt, musst Du parameter übergeben/binden mit ->bind_param()
und mit ->execute() die Anfrage ausführen.
Guck mal hier:PHP
Alles anzeigen$sql = " SELECT * FROM `tblAnlagenNr` WHERE (`AnlagenNr` LIKE ? OR `ProjektBezeichnung` LIKE ?) AND `Autr-Erh` = '1' AND `revidiert` = 'Nein' AND `aktiv` = 'Ja'; "; $stmt = $mysqli->prepare($sql); if(!$stmt){ // fehlerbehandlung // ecode: $mysqli->errno // emsg: $mysqli->error } $suchstr = '%' . $_POST['suchstring'] . '%'; if(!$stmt->bind_param("ss", $suchstr, $suchstr)){ // fehlerbehandlung // ecode: $mysqli->errno // emsg: $mysqli->error } if(!$stmt->execute()){ // fehlerbehandlung // ecode: $mysqli->errno // emsg: $mysqli->error } $res = $stmt->get_result(); while($row = $res->fetch_assoc()){ // ... var_dump($row); } -
http://dev.mysql.com/doc/refman/5.0…ut-of-sync.html
Zitatyou are calling client functions in the wrong order
Du hast doch mysqli bei anderen Queries genutzt, oder?
Guck Dir die funktionierenden Abfragen mal an, und vergleiche was hier anders ist.
Ablauf ist ja hier
Verbindung aufbauen,
prepare()
bind_param()
execute()
$res = $stmt->get_result();
while($row = $res->fetch_assoc()) -
Hatte die halbe Einleitung von lauras geklaut :p
Es gibt ja Anfänger und Anfänger. Ich würde sagen, wenn jemand mit Sql Queries klar kommt, dann wird er auch schon durch sehen.
EDIT: btw - hier ist noch nix mit "persistent connection". Wollte ich erstmal außen vor lassen. Mach ich evtl morgen.
Erweiterung "Persistente Verbindung"
Was ist das?Zitat von http://php.net/manual/de/pdo.connections.php#example-869Alles anzeigen
Viele Webanwendungen profitieren von persistenten Verbindungen zum Datenbankserver.
Persistente Verbindungen werden nicht am Ende des Skripts geschlossen,
sondern werden gecacht und wiederverwendet, wenn ein anderes Skript eine Verbindung mit denselben Daten anfordert.
Der Cache an persistenten Verbindungen erlaubt Ihnen, den Overhead zu vermeiden,
wenn jedesmal eine neue Verbindung geöffnet wird, sobald ein Skript mit der Datenbank kommunizieren muss,
was sich in einer schnelleren Anwendung widerspiegelt.
(Details siehe: http://php.net/manual/de/pdo.connections.php#example-869 (Beispiel #4 Persistente Verbindungen))Was bringt mir das?
Kurz und einfach:
Schnellere Reaktionszeiten der Webseite.
Denn ist beim Seitenaufruf der Verbindungsaufbau zum Sql-Server "schneller", ist das Script eher abgearbeitet.Ändern der Sql::connect() Methode für Persistente Verbindungen:
Als erstes brauchen wir einen neuen parameter $pers_con
Dieser ist standardmäßig false, da es sich hier um eine zusätzliche Option handelt.
In der Methode ::connect() geben wir nun dem __construct der in PHP vordefinierten klasse PDO
(siehe: http://php.net/manual/de/pdo.construct.php)
einen vierten Parameter mit.
Genauer genommen übergeben wir ein Array (array $options) über die wir gleich mehrere Parameter übergeben können.Das Array:
Was wir hier übergeben ist die vordefinierte Konstante PDO::ATTR_PERSISTENT als Schlüssel des Arrays,
und die Variable $pers_con als Wert, die wir über unseren fünften, neuen Parameter bekommen.
(Eine Liste der Vordefinierten Konstanten gibt es hier: http://php.net/manual/de/pdo.constants.php,
und speziell für Mysql-Funktionen hier: http://php.net/manual/de/ref.pdo-mysql.php)Einfügen/Anhängen der neuen Option beim Verbindungsaufbau:
Die Kommentare "NEU: array $options" können natürlich weggelassen werdenPHP
Alles anzeigenpublic static function connect($host, $username, $password, $database=null, $pers_con=false) { try{ $database = ($database) ? ';dbname=' . $database : ''; // NEU: array $options $options = array( PDO::ATTR_PERSISTENT => $pers_con ); self::$dbh = new PDO('mysql:host=' . $host . $database, $username, $password, /* NEU: array $options */$options); return; }catch(PDOException $e){ throw new Exception($e->getMessage()); } }
Das wars.
Jetzt muss nur noch beim Verbindungsaufbau der neue Parameter (ein boolean true) mitgegeben werden,
falls wir eine Persistente Verbindung wünschen:PHPtry{ Sql::connect('localhost', 'benutzername', 'password', 'database', true); }catch(Exception $e){ die('Verbindung konnte nicht hergestellt werden. Fehler: ' . $e->getMessage()); }
Wäre dann nur noch der Fall, dass man beim Verbindungsaufbau keine Datenbank angeben möchte.
Dann gibt man momentan einfach den Wert NULL (oder false) an:PHPtry{ Sql::connect('localhost', 'benutzername', 'password', null, true); }catch(Exception $e){ die('Verbindung konnte nicht hergestellt werden. Fehler: ' . $e->getMessage()); }
Es ist aber auch möglich die Reihenfolge der Parameterübernahme in der Methode ::connect() zu ändern:PHP// vertauschen der parameter $database <==> $pers_con public static function connect($host, $username, $password, $pers_con=false, $database=null)
Der Verbindungsaufbau sieht dann so aus:PHPtry{ Sql::connect('localhost', 'benutzername', 'password', true); }catch(Exception $e){ die('Verbindung konnte nicht hergestellt werden. Fehler: ' . $e->getMessage()); }_________________________________________________________________________
Erweiterung "Initial Commands"
Was ist das?Zitat von http://php.net/manual/de/ref.pdo-mysql.php
Command to execute when connecting to the MySQL server. Will automatically be re-executed when reconnecting.Note, this constant can only be used in the driver_options array when constructing a new database handle.
Frei übersetzt heißt das: beim Verbindungsaufbau (und nur dann) können wir Befehle mitgeben.Was bringt mir das?
Kurz und einfach:
Schnellere Reaktionszeiten der Webseite.
Warum?
Würden wir die Befehle nach dem Verbindungsaufbau als einzellne Queries an den MySQL-Server senden,
dann hätten wir für jede dieser Queries:
- php prüft und sendet die Query (Packet) an den MySQL-Server
- MySQL-Server empfängt und prüft die Query (Packet), führt sie aus und sendet das Ergebnis zurück
- php empfängt und prüft das Ergebnis (Packet)Ändern der Sql::connect() Methode für Initial Commands:
Als erstes brauchen wir einen neuen parameter $init_cmd
Dieser ist standardmäßig null, da es sich hier um eine zusätzliche Option handelt.
null anstatt false:
der Parameter $pers_con stellte einen Zustand (ein/aus) dar,
der Parameter $init_cmd kann aber kann Inhalte transportieren, oder nichts (also null)PHPpublic static function connect($host, $username, $password, $database=null, $pers_con=false, $init_cmd=null)
In der Methode ::connect() geben wir nun dem __construct der in PHP vordefinierten klasse PDO
(siehe: http://php.net/manual/de/pdo.construct.php)
dem vierten Parameter (dem Array (array $options)) eine weitere Ebene ("Schlüssel => Wert" Paar) mit:
Das Array:PHParray( PDO::ATTR_PERSISTENT => $pers_con // bekannt von: Erweiterung "Persistente Verbindung", PDO::MYSQL_ATTR_INIT_COMMAND => $init_cmd // hier unsere Erweiterung für Initial Commands )
Was wir hier übergeben ist die vordefinierte Konstante PDO::MYSQL_ATTR_INIT_COMMAND als Schlüssel des Arrays,
und die Variable $init_cmd als Wert, die wir über unseren sechsten, neuen Parameter bekommen.Einfügen/Anhängen der neuen Option beim Verbindungsaufbau:
Die Kommentare "NEU: $init_cmd" können natürlich weggelassen werdenPHP
Alles anzeigenpublic static function connect($host, $username, $password, $database=null, $pers_con=false, $init_cmd=null) { try{ $database = ($database) ? ';dbname=' . $database : ''; $options = array( PDO::ATTR_PERSISTENT => $pers_con, PDO::MYSQL_ATTR_INIT_COMMAND => $init_cmd /* NEU: $init_cmd */ ); self::$dbh = new PDO('mysql:host=' . $host . $database, $username, $password, $options); return; }catch(PDOException $e){ throw new Exception($e->getMessage()); } }
Das wars.
Jetzt muss nur noch beim Verbindungsaufbau der neue Parameter (ein String) mitgegeben werden,
falls wir Initial Commands nutzen möchten:PHPtry{ Sql::connect('localhost', 'benutzername', 'password', 'database', true, "sql_mode = 'STRICT_ALL_TABLES';"); }catch(Exception $e){ die('Verbindung konnte nicht hergestellt werden. Fehler: ' . $e->getMessage()); }
Wie bei Erweiterung "Persistente Verbindung" kann man die Reihenfolge der Parameter anpassen.
Was ist "sql_mode = 'STRICT_ALL_TABLES'"; ?
sql_mode ist eine Variable des MySQL-Servers.
Hier setzen wir also die Variable sql_mode auf den Wert STRICT_ALL_TABLES.
Was passiert dann?Zitat von http://dev.mysql.com/doc/refman/5.1/en/sql-mode.html#sqlmode_strict_all_tables
Enable strict mode for all storage engines. Invalid data values are rejected. Additional details follow.
Falsch Daten werden also zurückgewiesen.
Was sind Falsche Daten?
Bsp: (Voraussetzung: wir haben sql_mode auf 'STRICT_ALL_TABLES' gesetzt)
Wir erstellen eine Tabelle `test`.
In dieser Tabelle erstellen wir eine Spalte `zahl` vom Typ int().
Sollten wir nun "ausversehen" eine Query an den MySQL-Server senden, die einen Buchstaben "a" als Wert für `zahl` setzt,
bekommen wir einen Fehler: "Error Code: 1366. Incorrect integer value: 'a' for column 'zahl' at row 1".
Der MySQL-Server hindert uns jetzt also daran einen falschen Wert einzutragen (und das ist auch gut so!).Was passiert ohne 'STRICT_ALL_TABLES'?
Wir würden dem Feld `zahl` einen Buchstaben aufdrücken, was aber nicht funktioniert.
Die Zeile würde eingefügt werden, allerdings mit dem Wert (Typ) NULL.
Der MySQL-Server würde nicht meckern, gibt ein ~"ok, hab fertig", und wir wissen nicht, was wir falsch gemacht haben.Auch zu lange Werte werden abgewiesen. Wenn zB ein Feld `buchstabe` ein Wert "abc" zugewiesen bekommen soll.
Dann meldet sich er MySQL-Server mit der Fehlermeldung: "Error Code: 1406. Data too long for column 'buchstabe' at row 1".Es mach also Sinn, und das Fehler finden einfacher.
genaueres zu sql_mode: http://dev.mysql.com/doc/refman/5.0…sysvar_sql_modeEmpfehlung:
PHP
Alles anzeigentry{ // init commands definieren (string) // komma getrennte anweisungen: $init_cmd = "SET CHARSET 'utf8', NAMES 'utf8', sql_mode = 'STRICT_ALL_TABLES';"; // $init_cmd beim verbindungsaufbau mitgeben // erinnerung: parameter 5 (true) ist die anweisung eine persistente verbindung aufzubauen Sql::connect('localhost', 'benutzername', 'password', 'database', true, $init_cmd); }catch(Exception $e){ die('Verbindung konnte nicht hergestellt werden. Fehler: ' . $e->getMessage()); }
Was sind das für Anweisungen?
sql_mode = 'STRICT_ALL_TABLES': bereits darüber beschrieben
NAMES 'utf8': (siehe: http://dev.mysql.com/doc/refman/5.0…connection.html)
SET CHARSET 'utf8': (siehe: http://dev.mysql.com/doc/refman/5.0…connection.html) -
Ach komm, das ; musste doch sehen

-
Ok, das ist der typische fiese Fehler. Guck mal in Zeile 8

Du hast aber auch immer noch die Fehler in Zeile 22
"myTable" ect