A non well formed numeric value encountered

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bourbon

Mitglied
18 Juni 2014
409
13
18
32
Hallo Leute,

ich sitze gerade an einer Kommentarfunktion.

Leider verursacht das bei mir immer nur Fehler und gibt ein falsches Datum aus.

Hier der Codeschnipsel:
PHP:
...
while($stmt->fetch()) {
        $day_timestamp = date('d.m.Y',$timestamp);
        $time_timestamp = date('H:i',$timestamp);
        echo   "<div class='div_comment'>";
        echo   "<div><span>$forename </span><span>$surname am $day_timestamp</span></div><hr>";
        echo   "<div>$comment</div>";
        echo   "</div>";
    }
  $stmt->close();
...
Der Fehler lautet:
Notice: A non well formed numeric value encountered in
Laut Tutorial sollte es gehen, die manchen genauso.
Wo liegt denn da der Fehler?
 

scbawik

Senior HTML'ler
14 Juli 2011
2.536
448
83
Hallo Leute,

ich sitze gerade an einer Kommentarfunktion.

Leider verursacht das bei mir immer nur Fehler und gibt ein falsches Datum aus.

Hier der Codeschnipsel:
PHP:
...
while($stmt->fetch()) {
        $day_timestamp = date('d.m.Y',$timestamp);
        $time_timestamp = date('H:i',$timestamp);
        echo   "<div class='div_comment'>";
        echo   "<div><span>$forename </span><span>$surname am $day_timestamp</span></div><hr>";
        echo   "<div>$comment</div>";
        echo   "</div>";
    }
  $stmt->close();
...
Der Fehler lautet:

Laut Tutorial sollte es gehen, die manchen genauso.
Wo liegt denn da der Fehler?
Woher kommt $timestamp, welchen Wert enthält $timestamp?
 

Bourbon

Mitglied
18 Juni 2014
409
13
18
32
$timestamp wird von der DB abgefragt und sieht ohne Formatierung beispielsweise so aus:
2014-12-02 08:11:32
 

Bourbon

Mitglied
18 Juni 2014
409
13
18
32
Der sitzt an der Tastatur und ist nicht in der Lage, in der Doku zu lesen!
Und wieder einmal ein sehr gelungener Beitrag, herzlichen Glückwunsch.

Ich habe mir Tutorial über Tutorial angeschaut und ja, in vielen kam auch strtotime vor. Leider iwurde strtotime immer nur mit festen, per Hand eingegebenen Texten verwendet, so dass ich annahm, es bezieht sich nur solche Eingaben.
Auch in der Doku findet sich kein Beispiel, wie es scbawik gepostet hat.
Und woher nehmen Sie sich eigentlich des Recht heraus, mir zu unterstellen, ich hätte die Doku nicht gelesen?

Ergo provozieren Sie mal wieder nur und man müsste sich ja fast wieder dafür entschuldigen, dass man eine Frage stellt.

Oh Sie großer bdt600, ich entschuldige mich vielmals, dass ich sie durch meinen Post dazu gebracht habe, den Thread anzuklicken, und Sie durch eine Anfängerfrage dadurch genötigt waren, eine provokante und in keinster Weise hilfreiche Antwort zu verfassen. Es tut mir Leid, dass Sie durch meinen Post gezwungen waren, ihre Zeit zu verschwenden.

Oder ganz anders, hat mir meiner Mutter bereits im Kindesalter beigebracht:
"wenn man nichts nettes sagen kann, sollte man lieber den Mund halten" ;)
Haben Sie um 18:35 Uhr echt nichts Besseres zu tun? Zum Beispiel mit der Familie abendessen, mit dem Hund eine Runde zu gehen, Abendsport oder gar das Haus aufzuräumen? Nein ... wirklich nicht?

Ich habe auch mal ihren Beitrag gemeldet, da Sie mir langsam mit ihren dummen und aggressiven Posts derart auf die Nerven gehen, dass ich langsam echt kaum noch Lust habe, hier überhaupt etwas zu posten! Wenn Sie meine Fragen blöd finden, dann lesen Sie sie einfach nicht!
 
Zuletzt bearbeitet:
Reactions: pax
B

bdt600

Guest
Was soll ich jetzt dazu sagen? Ach, ich denke, ich widerlege jetzt einfach mal deine Aussage, dass du in der Doku nachgesehen hast. Auszug aus der Doku zu date:
Der optionale Parameter timestamp ist ein Unix Timestamp als integer oder die aktuelle lokale Zeit wenn kein timestamp übergeben wurde. Er entspricht dann also dem Ergebnis der Funktion time().
Da steht eindeutig Unix Timestamp!!! Ist 2014-12-02 08:11:32 ein Unix Timestamp?

Ich würde mal sagen, Problem mit Hilfe der Doku gelöst, oder?

Haben Sie um 18:35 Uhr echt nichts Besseres zu tun?
Sei froh, dass Leute ihre Freizeit für Hilfe in Foren opfern, denn wenn das nicht so wäre, würdest du wohl nicht ein einziges Script fertig bekommen.

Ich habe auch mal ihren Beitrag gemeldet, da Sie mir langsam mit ihren dummen und aggressiven Posts derart auf die Nerven gehen, dass ich langsam echt kaum noch Lust habe, hier überhaupt etwas zu posten!
Vielleicht solltest du mal etwas mehr nachdenken, bevor du so tolle Sachen schreibst wie "Wo ist der Fehler". Das ist ja deine Standardfrage geworden!
 
Zuletzt von einem Moderator bearbeitet:

Bourbon

Mitglied
18 Juni 2014
409
13
18
32
Unix Timestamp ... na jetzt weiß ich aber sofort Bescheid, dass man da strtotime verwenden muss, um das so zu formatieren.
Herr Gott selbst die Information nützt mir für die Frage nichts. Ergo Problem nicht gelöst.
Das Problem wurde durch "nutze strtotime" gelöst.
Wo der Unterschied zwischen einem Unix Timestamp und bspw. DATETIME liegt, weiß ich auch, aber selbst das nützt für die Problemstellung nichts.
Und ausserdem steht da noch, dass der Unix Timestamp ein integer ist, ergo kein string. Ergo würde ich dann überhaupt nicht mehr daran denken, strtotime zu verwenden.

Mein Gott, wenn Sie nicht mit Anfängern und deren Fragen klar kommen, sind Sie in einem Forum falsch! Werden Sie besser Berater oder freiberuflicher Programmierer, da können Sie gerne so überheblich und arrogant sein.
Ich hoffe nur, dass Sie kein Lehrer sind.

Gibt es eigentlich eine Ignorieren-Funktion für einzelne Nutzer?
 
B

bdt600

Guest
Du bist echt lustig!! Ein Beispiel aus der Doku zu date:
PHP:
<?php
echo date("YW", strtotime("2011-01-07")); // gives 201101
echo date("YW", strtotime("2011-12-31")); // gives 201152
echo date("YW", strtotime("2011-01-01")); // gives 201152 too
?>
Noch Fragen? Da steht eindeutig strtotime. Und da steht auch noch diese Zeile:
strtotime() - Wandelt ein beliebiges in englischer Textform angegebenes Datum in einen UNIX-Zeitstempel (Timestamp) um
Ich turne seit über 12 Jahren regelmäßig in PHP-Foren rum, glaube mir, man hat dann genug Erfahrung um zu erkennen, ob jemand die Doku gelesen hat oder nicht. Und ich meine auch "gelesen", nicht überflogen!
 

Bourbon

Mitglied
18 Juni 2014
409
13
18
32
Na dann sind die ja der absolute Menschenkenner!
Nur leider lesen Sie meine Posts nicht richtig oder verstehen es einfach nicht.

Die von Ihnen aufgeführten Beispiele haben alle festen Daten bspw. 2011-01-07.

Und wie ich bereits oben geschrieben habe, habe ich daher angenommen, dass dies nur mit solchen Konstanten und nicht mit Variablen funktioniert.
Tja, leider haben Sie wohl mein Post nur überflogen!

Und sind Sie in all den 12 Jahren schon immer so arrogant, überheblich und aggressiv gewesen, oder waren Sie auch mal selbstlos hilfreich und freundlich, wie bspw. scbawik, welcher auch bei einfache und vielleicht sogar dummen (welche es eigentlich nicht gibt, nur dumme Antworten, worin Sie der Meister sind) Fragen hilft?
 
B

bdt600

Guest
Und wie ich bereits oben geschrieben habe, habe ich daher angenommen, dass dies nur mit solchen Konstanten und nicht mit Variablen funktioniert.
Dann lerne endlich mal die Grundlagen!

Und um deine Äußerung komplett albern zu machen, eine Beispiel aus der Doku zu strtotime
PHP:
<?php
$str = 'Not Good';

// vor PHP 5.1.0 wuerden Sie -1 statt false als Rueckgabewert erhalten
if (($timestamp = strtotime($str)) === false) {
    echo "Die Zeichenkette ($str) ist nicht parsebar.";
} else {
    echo "$str == " . date('l dS \o\f F Y h:i:s A', $timestamp);
}
?>
Wenn ich jetzt nicht völlig blind bin, wird da bei strtotime eine Variable benutzt.

Ich würde sagen, es hapert eindeutig an Eigeninitiative
 

Bourbon

Mitglied
18 Juni 2014
409
13
18
32
Wow, nach langem Suchen dann doch endlich ein Beispiel gefunden, um die Unterstellungen zu untermauern. Na das muss doch jetzt ein echtes Gefühl von Zufriedenheit und Glückseligkeit auslösen :)

Versuchen Sie ruhig weiter mich und meine Aussagen albern zu machen, wenn es Ihnen Spaß macht.

Zum Thema Eigeninitiative:
Sie können leider nicht wissen, was ich alles OHNE Fragen zu stellen alles bereits auf die Beine gestellt bekommen habe. Ich selbst bin mit meinen Lernerfolgen sehr zufrieden.
Und das Forum ist für mich die letzte Lösung, wenn ich gerade keinen Weg mehr finde.

Zum Thema Arroganz:
Als studierter Controller wurde ich eben von unserem Azubi gefragt, ob ich ihm mal zeigen könnte, wie man Rufnummer in dem Telefon einspeichert... Ich hab ihm nicht patzig geantwortet, er solle doch verdammt nochmal endlich die Gebrauchsanweisung lesen. Sondern ich hab es ihm einfach gezeigt und er wird mir die selbe Frage garantiert nicht nochmal stellen.
Ist halt eine Grundsatzentscheidung ob man als netter Mensch oder als riesen Arschloch durchs Leben kommen will ;)

Bitte tun Sie mir doch einfach den Gefallen und antworten Sie einfach NIE WIEDER auf irgendeinen Post von mir! Sie nerven einfach nur!
 
B

bdt600

Guest
Wow, nach langem Suchen dann doch endlich ein Beispiel gefunden, um die Unterstellungen zu untermauern.
Da brauche ich nicht lange suchen, mir ist einfach klar, dass man in der Doku jede Menge Dinge finden kann, wenn man denn mal nachsieht.
Als studierter Controller wurde ich eben von unserem Azubi gefragt, ob ich ihm mal zeigen könnte, wie man Rufnummer in dem Telefon einspeichert... Ich hab ihm nicht patzig geantwortet, er solle doch verdammt nochmal endlich die Gebrauchsanweisung lesen. Sondern ich hab es ihm einfach gezeigt und er wird mir die selbe Frage garantiert nicht nochmal stellen.
Es ist aber ein Unterschied, ob ich einem Azubi etwas in meiner Arbeitszeit erkläre, oder ob man sowas in der Feizeit in einem Forum liest und die Bequemlichkeit erkennt.
Bitte tun Sie mir doch einfach den Gefallen und antworten Sie einfach NIE WIEDER auf irgendeinen Post von mir! Sie nerven einfach nur!
Da kann ich nicht für garantieren :D
 

Bourbon

Mitglied
18 Juni 2014
409
13
18
32
Es war in meiner Frühstückspause, ergo in meiner Freizeit ;)

Nachtrag:
Klar findet man in der Doku sehr viel, ich lese diese auch ständig und die hat mir bereits sehr gute Dienste erwiesen. Aber so ganz gelegentlich übersieht man vielleicht sogar mal was. Sie wissen ja, Menschen ohne eine derartige Perfektion wie Sie, machen manchmal Fehler und überlesen sogar etwas :eek:
 

Bourbon

Mitglied
18 Juni 2014
409
13
18
32
Ein Beispiel, weil mir die Information mit dem Unix-Timestamp nichts nützt.

Tja, und zum helfen in der Freizeit können Sie jetzt wohl nichts mehr sagen?
Können Sie sicherlich nicht nachvollziehen, wie man so etwas machen kann ;)

Und im übrigen ist das hier:
PHP:
date('l dS \o\f F Y h:i:s A', $timestamp);
auch noch etwas anderes als das hier:
PHP:
date('d.m.Y',strtotime($timestamp));
 

Bourbon

Mitglied
18 Juni 2014
409
13
18
32
Ganz einfach.
Ich hab jetzt nur die dahin geschmissene Information, konnte mich bisher nicht nochmal damit beschäftigen und es dadurch auch noch nicht verstehen, wie und warum das so ist, wie es ist.

Mein Gott, denken Sie etwa, Sie nehmen einfach das Buch von Stephen Hawking in die Hand, lesen es und ZACK verstehen Sie alles sofort auf Anhieb?
Nein, man muss es erst Lernen und dazu gehört nun mal auch Fehler zu machen sowie Fragen zu stellen, da kann auch ab und an mal eine Dumme dabei sein.
 
B

bdt600

Guest
So, um diesen Thread jetzt noch völlig ad absurdum zu führen:

Warum liest du das Datum denn nicht direkt im richtigen Format aus der Datenbank? Da wäre dann noch einfacher, allerdings müsste man dann mal in der Doku von MySQL nachsehen, mit date_format geht sowas nämlich wunderbar.
 

Bourbon

Mitglied
18 Juni 2014
409
13
18
32
Das kann ich bereits und wende es schon an :)

Soll ich mal erklären warum ich das so machen? Also:
Ich rufe den timestamp erst komplett aus der DB ab, um dann daraus 2 Variablen zu erstellen, erst der Tag und dann die Uhrzeit.

Jetzt mal eine ernst gemeinte Frage mit hoffentlich einer ordentlichen Antwort:
Was ist denn sinnvoller? Schon bei der Abfrage daraus 2 Variablen zu erstellen oder erst den Timestamp abzufragen und dann die Variablen daraus zu basteln?
Es sind für mich jetzt 2 unterschiedliche Wege ohne erkennbare Vor- oder Nachteile.

Und ein Beweis, dass ich es kann:
Hier der Code aus einer anderen von mir erstellen Datei:
Code:
            DATE_FORMAT(groups.date,'%d.%m.%Y') AS groupdate,
 
Werbung: