[PHP] Echo bugt? (Ben wel noob, so be warned)

Pagina: 1
Acties:

  • Sjeik
  • Registratie: Augustus 2001
  • Laatst online: 02-09 09:23
Hey ik heb een probleem. Ik wil de timestamp van de mysql database dus anders weergeven dan die origineel is. Dus niet YYYY-MM-DD maar gewoon in het nederlands. Nu loopt volgens mij de echofunctie van php te buggen, of ik doe iets fout, of ben gewoon erg dom :) Maar misschien kunnen jullie voor me uitvogelen welke van die drie het is? Dis me code. Als comment staat de output.
PHP:
1
<?echo "$datum <p>"; //2002-04-10 21:49:28;$rat = $datum;$blaat = "Hello  world"; echo ("$blaat <BR>"); //Hello world$blaatjes = $blaat;echo ("$blaatjes <BR>"); //Hello worldecho ("$rat <BR>"); // (jaja niets dus ;))$year = substr($dat, 0, 4);$month = substr($dat, 5, 2);$day = substr($dat, 8, 2);$newdate = "$day-$month-$year"; echo $newdate; //--?>

Was ik maar rijk en niet zo knap...


  • Marcj
  • Registratie: November 2000
  • Laatst online: 09-09 11:42
Daarvoor heb je toch de functie date()? Kijk hier eens
PHP:
1
<?$datum = date("d-m-Y", time());echo $datum;?>

  • pimlie
  • Registratie: November 2000
  • Laatst online: 08-09 00:36
die haakjes om een echo hoeven niet. het is dus gewoon
PHP:
1
<?echo "Hello World!\n";ofecho $blaat;?>

En als je een timestamp in je MySQL DB heb staan, zou ik die selecteren als een Unix timestamp
code:
1
SELECT UNIX_TIMESTAMP(datumveld) FROM table ...

Dan kan je met die timestamp gewoon date() gebruiken.

[Edit]
Beter nog kan je meteen de DATE_FORMAT functie van MySQL gebruiken: http://www.mysql.com/doc/D/a/Date_and_time_functions.html

  • Sjeik
  • Registratie: Augustus 2001
  • Laatst online: 02-09 09:23
Maar waarom laat ie $datum wel zien. En als ik $rat=$datum doe, en dan echo $rat doe, niets?

Was ik maar rijk en niet zo knap...


  • Grum
  • Registratie: Juni 2001
  • Niet online
Het klopt simpel weg gewoon niet wat je zegt :)

Sorry, dit werkt .. en zonder problemen ook nog eens. :)

  • Sjeik
  • Registratie: Augustus 2001
  • Laatst online: 02-09 09:23
damn, en als ik het test werkt het niet :( bah...

Was ik maar rijk en niet zo knap...


  • Grum
  • Registratie: Juni 2001
  • Niet online
zet er es fijn:
code:
1
error_reporting(E_ALL);

boven.

  • Sjeik
  • Registratie: Augustus 2001
  • Laatst online: 02-09 09:23
Geen errors, alleen dat een variabele geen waarde had, maar dat was omdat ik $dat nog niet gerenamed had in $rat.

Dus toen ik dat deed werkte ie zonder bugs :(

Was ik maar rijk en niet zo knap...


Verwijderd

Het is dat je het zelf al zegt...dat je n00b bent...maaruhh, ik zou je toch dringend maar vriendelijk willen verzoeken om voortaan de manual te lezen voordat je hier post!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Wat er mis ging in dit topic:

Op het moment dat jij dit in je comments zet:
code:
1
echo ("$rat <BR>"); // (jaja niets dus ;))

Dan geef jij aan dat het niet werkt terwijl er geen fouten in je code zitten daarvoor.

Als jij daarna de variabele '$dat' gaat gebruiken terwijl die niet bestaat en zegt dat de output '--' wordt dan kan je niet verwachten dat wij gaan opmerken 'ja maar die variabele bestaat niet' want dat is NOGAL logisch want de naam is anders .. DOH :)

Der was dus nix mis met je code naast dat je niet netjes uitlegde wat er nou misging en dat het een enorme n00b vraag was.

Nu hebben we hier nix tegen n00bs .. mits ze maar laten zien dat ze het zelf willen/proberen/uitzoeken/opzoeken en dat missen we behoorlijk bij jou :)

Je kan hier terecht met vragen over problemen. Let wel even op dat we NIET voor je gaan debuggen, voorkauwen etc er MOET echt eigen inzet zijn anders kan je beter een extra cursus veterstrikken nemen en de welwillende mensen hier niet lastig vallen :+

En weer 2 €cent armer ! ;)

  • Sjeik
  • Registratie: Augustus 2001
  • Laatst online: 02-09 09:23
Jah, dat was een foutje :) Maar dan slaat dit stukje:
PHP:
1
<?echo "$datum <p>"; //2002-04-10 21:49:28;$rat = $datum;echo ("$rat <BR>"); // (jaja niets dus ;))?>

nog steeds nergens op. Als het goed is heeft $datum een waarde, alvast, dat laat ie zien.
Als ik van $datum een andere var maak, nl $rat, en laat dan $rat zien, is die leeg!

Terwijl pcies hetzelfde bij mijn variabelen met blaatjes en blaat wel goed werk!
Dat snap ik niet!

Was ik maar rijk en niet zo knap...


  • Grum
  • Registratie: Juni 2001
  • Niet online
En dat is dus ook niet zo.

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 00:58
Op vrijdag 19 april 2002 22:01 schreef Sjeik het volgende:
Jah, dat was een foutje :) Maar dan slaat dit stukje:
PHP:
1
<?echo "$datum <p>"; //2002-04-10 21:49:28;$rat = $datum;echo ("$rat <BR>"); // (jaja niets dus ;))?>

nog steeds nergens op. Als het goed is heeft $datum een waarde, alvast, dat laat ie zien.
Als ik van $datum een andere var maak, nl $rat, en laat dan $rat zien, is die leeg!

Terwijl pcies hetzelfde bij mijn variabelen met blaatjes en blaat wel goed werk!
Dat snap ik niet!
Weet niet of het al tot je is door gedrongen (volgens mij probeert bijna iedereen dit je duidelijk te maken): waar haal je $datum vandaan? En variabele vullen met de inhoud van een niet bestaande variabele heeft geen zin ;)
Oh ja:
PHP:
1
<?echo $datum."<p>";//ipvecho "$datum <p>";?>

Het moet werken op jouw manier, maar ik heb het al een aantal keer meegemaakt dat op die manier iets niet goed getoond wordt (zelfs een keer $varnaam gezien :P).

  • Grum
  • Registratie: Juni 2001
  • Niet online
Dit hele topic gaat echt nergens over.

Wat de topic starter zegt IS GEWOON NIET ZO, je kan hoog en laag springen maar feit is dat als er IETS in $datum staat en je assigned dat aan $rat dat het daar ook gewoon instaat.

FlamerX: maar ik heb het al een aantal keer meegemaakt dat op die manier iets niet goed getoond wordt

Verhaaltjes vertellen doe je maar ergens anders .. dit is dus ook 100% onzin .. vind je van niet ? kom maar met de code die het fout doet.

Verwijderd

laten we het nou aub een beetje gezellig houden grum,
You need some coffee

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Laten we even in het midden laten of wel of niet zo is....
( Grum :) )

Maar in ieder geval kunnen wij het probleem niet zien, niet herproduceren, en dus ook niet oplossen.

Maar misschien is het ene gare installatie? (doe eens herinstallatie?)

Misschien kan je een voorbeeld op het internet zetten?
dus zoiets als dit?
filenaam: test.php
PHP:
1
<?echo "$datum <p>"; //2002-04-10 21:49:28$rat = $datum;echo ("$rat <BR>"); // (jaja niets dus ;))show_source("test.php");?>

Programmer - an organism that turns coffee into software.


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

zoals reeds verwacht heeft Grum gelijk: http://www.d2k.nl/got/sjeik.php
dus ik zie het probleem van de starter ook niet (nooit gezien ook btw)

Doet iets met Cloud (MS/IBM)


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Op zaterdag 20 april 2002 08:57 schreef Grum het volgende:
FlamerX: maar ik heb het al een aantal keer meegemaakt dat op die manier iets niet goed getoond wordt

Verhaaltjes vertellen doe je maar ergens anders .. dit is dus ook 100% onzin .. vind je van niet ? kom maar met de code die het fout doet.
Hier moet ik FlamerX toch echt gelijk geven. Bij gewone vars gaat het wel goed, maar bij arrays en objecten wil het nog wel eens de fout in gaan. De concateneer manier zorgt ervoor dat je veel minder fouten kunt maken en daarnaast is het IMHO ook een stuk netter. Door het concateneren laat je duidelijk zien wat het variabele deel en het hardcoded deel van de string is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 09-09 11:02
Op zaterdag 20 april 2002 13:43 schreef Janoz het volgende:
Hier moet ik FlamerX toch echt gelijk geven. Bij gewone vars gaat het wel goed, maar bij arrays en objecten wil het nog wel eens de fout in gaan. De concateneer manier zorgt ervoor dat je veel minder fouten kunt maken en daarnaast is het IMHO ook een stuk netter. Door het concateneren laat je duidelijk zien wat het variabele deel en het hardcoded deel van de string is.
Het ging erom dat PHP het fout zou doen. Dat zou natuurlijk wel kunnen, maar het is wel heel onwaarschijnlijk.

Jij hebt het echter over programmeerfouten (ie. fouten van de programmeur). Dat is heel wat anders. Begrijp me niet verkeerd, ik denk dat je gelijk hebt, maar het onderwerp was 'echo bugt' en dat is (hoogstwaarschijnlijk) gewoon niet waar. Dat komt ook overeen met wat Grum zei en is in tegenspraak met wat FlamerX beweerde.

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 00:58
Op zaterdag 20 april 2002 14:11 schreef Soultaker het volgende:

[..]

Het ging erom dat PHP het fout zou doen. Dat zou natuurlijk wel kunnen, maar het is wel heel onwaarschijnlijk.

Jij hebt het echter over programmeerfouten (ie. fouten van de programmeur). Dat is heel wat anders. Begrijp me niet verkeerd, ik denk dat je gelijk hebt, maar het onderwerp was 'echo bugt' en dat is (hoogstwaarschijnlijk) gewoon niet waar. Dat komt ook overeen met wat Grum zei en is in tegenspraak met wat FlamerX beweerde.
Het was ook niet zo dat ik bedoelde dat de echo buggy is, maar dat de manier van Sjeik niet goed kan gaan. Ik heb het, zoals Janoz al zei, ook nog nooit met een gewone var meegemaakt, altijd met array's. De PHP echo werkt perfect, maar ik wou hem alleen een advies geven. Sorry voor de miscommunicatie, het was al laat ;)

  • Sjeik
  • Registratie: Augustus 2001
  • Laatst online: 02-09 09:23
Hmmm, ik heb nog steeds niet het antwoord... Hoe ik aan $datum kom. Die haal ik uit een database.

De originele code, zoals die op de server staat (zonder mysql connectie dingen dan ;)) is als volgt:
PHP:
1
<?$query = "SELECT datum FROM nieuws where id=6";  $resultaat = mysql_query($query) or die ("Query mislukt");while ( list ($datum) = mysql_fetch_row($resultaat)){     echo "$datum <p>"; //2002-04-10 21:49:28     } ;$rat = $datum;$blaat = "Hello  world"; echo "$blaat <BR>"; //Hello world$blaatjes = $blaat;echo "$blaatjes <BR>"; //Hello worldecho "$rat <BR>"; // (jaja niets dus ;))$year = substr($datum, 0, 4);$month = substr($datum, 5, 2);$day = substr($datum, 8, 2);$newdate = "$day-$month-$year"; echo "$newdate <BR>"; //--?> ?>

http://dj.frummel.com/~sjeik/test.php <-- daar staat ie, zoals ik hem te zien krijg, en jullie waarschijnlijk ook...

Ik zie dit in mijn browser:

2002-04-10 21:49:28
Hello world
Hello world

--

En als er geen fouten in de source staan, ligt het dus aan de server in combo me de php denk ik, en moet het wel een bug zijn (op de servers zijn php misschien dan wel, toch?)

Maar ok, dit is toch alles dat ik jullie kan laten zien?

Was ik maar rijk en niet zo knap...


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 00:58
Probeer eens 'echo $rat."<br>";' ipv 'echo "$rat <br>";' (zonder ' natuurlijk ;))...

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 09-09 11:02
Op zaterdag 20 april 2002 18:50 schreef Sjeik het volgende:
code:
1
2
3
4
5
6
7
8
<?
$query = "SELECT datum FROM nieuws where id=6";
$resultaat = mysql_query($query) or die ("Query mislukt");
while ( list ($datum) = mysql_fetch_row($resultaat))
{
     echo "$datum <p>"; //2002-04-10 21:49:28
};
$rat = $datum;
En toen was dus gelijk duidelijk wat er fout ging. Niets mis met de echo functie dus.

Wat er gebeurt is het volgende. Je hebt EEN datum in je database. Als je voor het eerst je while-lus doorloopt, komt die datum in $datum te staan en evalueert de expressie naar 'true' zodat de echo "$datum" code uitgevoerd wordt. Daarna zijn de resultaten op en vult PHP $datum met een lege string (of undef) en evalueert de expressie naar false. Vervolgens ken je deze lege string toe aan $rat.

Mysterie opgelost. Terug naar de debugging tutorial met jou.
Pagina: 1