abonnement Unibet Coolblue Bitvavo
pi_34145705
quote:
Op dinsdag 17 januari 2006 00:11 schreef SkaterSam het volgende:
Even een vraagje, ik heb een nieuwsbericht waarin door nl2br() de breaks er in worden gezet. Dus voor paragrafen wordt dat dus een dubbele break. Nu wil ik echter alleen de eerste paragraaf selecteren, dus het eerste deel voor de dubbele break, dus ik probeer met explode() te breken, maar in de geretourneerde code van nl2br() zitten de breaks onder elkaar
[ code verwijderd ]

dus ik kan niet explode('<br /><br />'), iemand die een oplossing weet.

Ik weet ook niet helemaal wat een \r (carriage return) en een \n (newline) is, dan kon ik mijn eigen functie schrijven (iets als preg_replace('\r', '<br />', $string) ofzoiets).
1
2
3
4
<?php
$argument
= "<br />\r\n<br />\r\n";
$blaat = explode($argument, $blaat);
?>
pi_34146288
quote:
Op dinsdag 17 januari 2006 00:28 schreef SkaterSam het volgende:
Zo'n bericht wordt ongeëdit opgeslagen, dus direct van de textarea af in MySQL, pas wanneer ze eruit worden gehaald worden ze gebroken met nl2br(). Dat betekent dus dan dat ik beter een eigen functie kan schrijven?
[ code verwijderd ]
[offtopic]
preg_replace() behoor je voornamelijk te gebruiken als je ook daadwerkelijk een regular expression hebt. Wil je een normale string of een array van strings replacen door iets anders, dan moet je gaan voor str_replace() welke vele malen sneller is
  dinsdag 17 januari 2006 @ 00:56:33 #203
65471 SkaterSam
Lurking Galore
pi_34146476
Dank voor de info! Nu had ik nog een vraagje, is het mogelijk wanneer je resultaten ophaalt uit MySQL met een while() loop, om het laatste resultaat te kiezen, om bijvoorbeeld net een andere layout te gebruiken.
Let's make life easy
Typo's are the demon spawn from hell !
pi_34149545
Jawel;

je kan met $numRows = mysql_num_rows($resultVariable); het aantal regels opvragen, gegeven dat je query aanroep als $resultVariable = mysql_query() gevormd is ($resultVariable moet in beide gevallen dezelfde var zijn).

Vervolgens kan je in je while een tellertje opnemen:
$i = 1;
while($row = mysql_fetch_assoc($resultVariable)) {
$i++;
if($i == $numRows) {
//laatste regel
}
}

-r-
pi_34149579
Nog maar een vraagje, mijn vorige vraag hier heeft mij wat handige inzichten opgeleverd (ik ben trouwens toen voor de $config['bla'] en dan in functies global $config gegaan).

Ik heb binnen mijn applicaties 2 soorten pagina's, pagina's die toonbaar zijn voor iedereen die ingelogd is en pagina's die zichtbaar zijn voor mensen die ingelogd zijn EN een bepaalde rol hebben toegewezen.

Wat ik zou kunnen doen per pagina is:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if (!isset($_SESSION['login']) && $_SESSION['login'] != 1)
{
  echo
'niet toegestaan dit te zien';
}
else
{
  if(
$_SESSION['role'] != "bla")
  {
    echo
'Niet toegestaan';
  }
  else
  {
     echo
'laat alles gewoon maar zien';
  }
}
?>


Maar is dit een handige manier? Kan dit niet slimmer, zodat ik niet overal van die accoladers moet plaatsen.

Ik heb zitten denken aan iets met die of break, maar ik meen dat dan gelijk alles wordt afgebroken, en de hoofdpagina index.php include alle andere pagina's. De rest zou dan ook niet worden gedisplayed, naar ik meen.

Iemand suggesties?
pi_34149662
Ja en nee.

Als het een include file is, kan je 'return' gebruiken om uit de include file terug naar de parent file te springen:

1
2
3
4
5
6
7
<?php
if (!isset($_SESSION['login']) && $_SESSION['login'] != 1)
{
  echo 'niet toegestaan dit te zien';
  return;
}
?>

Vervolgens zou je nog die tweede if, in de eeste kunnen opnemen:
1
2
3
4
5
6
7
if(   !isset($_SESSION['login']) || $_SESSION['login'] != 1
    ||!isset($_SESSION['role']) || $_SESSION['role'] != "bla")
  {
    echo 'Niet toegestaan';
   return;
  }
?>

Hier zou je vervolgens een functie van kunnen breien zodat het uiteindelijk iets wordt als:

1
2
3
4
5
<?php
if(!userLoggedInAs("bla")) {
  return;
}
?>

De functie zelf zou je dan als volgt kunnen doen:
1
2
3
4
5
6
7
8
9
10
function userLoggedInAs($role, $displayWarning = true) {
  if(   isset($_SESSION['login']) && $_SESSION['login'] == 1
     &&!isset($_SESSION['role']) && $_SESSION['role'] == $role) {
   return true;

if($displayWarning) {
  echo 'U heeft geen toegang';
}
return false;
}
  FOK!-Schrikkelbaas dinsdag 17 januari 2006 @ 08:31:11 #207
1972 Swetsenegger
Egocentrische Narcist
pi_34149666
Je kan de eerste en tweede if toch gewoon samenvoegen?
en checken op isset EN een waarde is volgens mij een beetje onzin. Als Session['login'] niet geset is, zal hij ook geen 1 zijn.
pi_34149747
Yeps het samenvoegen had ik ook gezien, vroeg mij alleen af (wilde ik nog testen) of het sneller is om twee maal los te checken of in 1 keer beide.

Ik ga even kijken wat ik met bovenstaande dingen kan doen. Thnx for the help!
pi_34149892
quote:
Op dinsdag 17 januari 2006 08:31 schreef Swetsenegger het volgende:
Je kan de eerste en tweede if toch gewoon samenvoegen?
en checken op isset EN een waarde is volgens mij een beetje onzin. Als Session['login'] niet geset is, zal hij ook geen 1 zijn.
Het is niet strikt noodzakelijk om eerst te checken op isset, maar het is wel netter. Ik geloof dat PHP een notice geeft als je een vergelijking uitvoert met een variabele die niet geset is, en door isset te gebruiken kun je dat afvangen. Als je ooit in een andere taal wilt gaan programmeren dan is het handiger om je meteen die isset-checks aan te leren, de meeste talen zijn er niet zo makkelijk in.
  FOK!-Schrikkelbaas dinsdag 17 januari 2006 @ 09:19:47 #210
1972 Swetsenegger
Egocentrische Narcist
pi_34150361
quote:
Op dinsdag 17 januari 2006 08:50 schreef Light het volgende:

[..]

Het is niet strikt noodzakelijk om eerst te checken op isset, maar het is wel netter. Ik geloof dat PHP een notice geeft als je een vergelijking uitvoert met een variabele die niet geset is, en door isset te gebruiken kun je dat afvangen. Als je ooit in een andere taal wilt gaan programmeren dan is het handiger om je meteen die isset-checks aan te leren, de meeste talen zijn er niet zo makkelijk in.
Ik zeg niet dat hij niet moet controleren op isset, maar controleren op isset EN value is nutteloos. Met een or zoals in roonaan zijn voorbeeld is wat logischer.
pi_34150681
quote:
Op dinsdag 17 januari 2006 09:19 schreef Swetsenegger het volgende:

[..]

Ik zeg niet dat hij niet moet controleren op isset, maar controleren op isset EN value is nutteloos. Met een or zoals in roonaan zijn voorbeeld is wat logischer.
als je de notice wil voorkomen is isset niet nutteloos, alleen is het de vraag of je doel moet zijn om die notice te voorkomen .
  FOK!-Schrikkelbaas dinsdag 17 januari 2006 @ 09:38:02 #212
1972 Swetsenegger
Egocentrische Narcist
pi_34150728
quote:
Op dinsdag 17 januari 2006 09:34 schreef rickmans het volgende:

[..]

als je de notice wil voorkomen is isset niet nutteloos, alleen is het de vraag of je doel moet zijn om die notice te voorkomen .
Nee precies.
Dus je controlleert of de sessie bestaat en zoja, controleer je of hij de waarde heeft welke je verwacht
  woensdag 18 januari 2006 @ 12:08:55 #213
51748 H4ze
wait...what?
pi_34195095
Ik zit hier met een SQL boek voor me, en daar staat de scalaire functie 'CONVERT_DATE' in (converteert een datum zoals 1988-05-20 naar 20 mei 1988). Nu wil ik deze ff op m'n mysql DB uitproberen:

1
2
3
SELECT CONVERT_DATE(releasedatum) 
FROM catalogusnummer
WHERE releasedatum='2004-10-12' 


Dit werkt dus niet...In dat boek stond ook dat deze functie in enkele producten CTOD heet, maar ook wanneer ik dat gebruik krijg ik een foutmelding.
*BURP*
pi_34195296
is je database column wel het goede formaat? of zou dat niet uitmaken.
As a rule, I never touch anything more sophisticated and delicate than myself.
  woensdag 18 januari 2006 @ 12:18:22 #215
51748 H4ze
wait...what?
pi_34195430
Jep, die is gewoon in 't DATE formaat. Ik kan verder ook gewoon dingen als YEAR(releasedatum) enzo doen, dus dat zit gewoon goed
*BURP*
pi_34197391
quote:
Op woensdag 18 januari 2006 12:18 schreef H4ze het volgende:
Jep, die is gewoon in 't DATE formaat. Ik kan verder ook gewoon dingen als YEAR(releasedatum) enzo doen, dus dat zit gewoon goed
mm okee. dan weet ik t niet. wat ik wel weet, is dat jij dus n boek hebt liggen daar
[boeken] verschillende talen en graden

als jij dat nou s in mijn supergoedlopendetopic plaatst
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_34197565
Ik kan de convert_date functie niet vinden in de MySQL manual.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas woensdag 18 januari 2006 @ 13:45:40 #218
1972 Swetsenegger
Egocentrische Narcist
pi_34198547
Ik ken wel DATE_FORMAT

1
2
3
SELECT DATE_FORMAT(releasedatum,%d-%m-%Y) AS dutch_date 
FROM catalogusnummer
WHERE releasedatum='2004-10-12' 
pi_34199068
$nummer = 4;
$nummer = "4";

het werkt allebei. welke is netter?
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_34199657
$nummer = 4.. dan is het een integer
$nummer = "4", dan is het een string

Als je iets wilt teller kan je dus beter de eerste variant gebruiken
pi_34200739
quote:
Op woensdag 18 januari 2006 13:59 schreef Desdinova het volgende:
het werkt allebei. welke is netter?
Dit verhaal zul je in elke programmeertaal tegenkomen maar vooral ook in PHP aangezien PHP loose typing ondersteunt. Als jij met getallen wilt werken moet je integers gebruiken, wil je met strings werken dan zet je er aanhalingstekens omheen. MySQL een beetje hetzelfde verhaal, je kúnt timestamps wel opslaan in een VARCHAR(zoveel) maar het is over het algemeen (en technisch gezien) veel beter daar gewoon een UNSIGNED INT voor te gebruiken. Als je specifiek met data wilt werken kun je ook het DATE of DATETIME type voor gebruiken.

Moraal van het verhaal: twee manieren kunnen hetzelfde opleveren maar als je de meest logische keuze neemt heb je vaak ook de efficiëntste methode en later minder problemen in andere talen.
  FOK!-Schrikkelbaas woensdag 18 januari 2006 @ 15:27:18 #222
1972 Swetsenegger
Egocentrische Narcist
pi_34202780
Is het met php mogelijk om de resolutie van een image welke op het filesystseem staat te achterhalen?
Met andere woorden, ik plaats een rijtje foto's waarvan de naam in de database staat, maar de fysieke foto in het filesysteem op een website. En ik wil nu een height en width meegeven.

Aangezien die variabel is, dien ik die dus te achterhalen op het moment van plaatsing.
pi_34202837
quote:
Op woensdag 18 januari 2006 15:27 schreef Swetsenegger het volgende:
Is het met php mogelijk om de resolutie van een image welke op het filesystseem staat te achterhalen?
Met andere woorden, ik plaats een rijtje foto's waarvan de naam in de database staat, maar de fysieke foto in het filesysteem op een website. En ik wil nu een height en width meegeven.

Aangezien die variabel is, dien ik die dus te achterhalen op het moment van plaatsing.
Dat en nog veel meer is te achterhalen met deze functie alhoewel je dat soort informatie beter kunt cachen in de database (al die disk reads zijn niet geweldig voor de performance)
  FOK!-Schrikkelbaas woensdag 18 januari 2006 @ 15:34:55 #224
1972 Swetsenegger
Egocentrische Narcist
pi_34203085
quote:
Op woensdag 18 januari 2006 15:28 schreef JeRa het volgende:

[..]

Dat en nog veel meer is te achterhalen met deze functie alhoewel je dat soort informatie beter kunt cachen in de database (al die disk reads zijn niet geweldig voor de performance)
Ja, het probleem is dat het bestaande informatie is. 'even' deze info in de db erbij opslaan zal dus niet gaan.

Hmz....
pi_34203391
quote:
Op woensdag 18 januari 2006 15:34 schreef Swetsenegger het volgende:

[..]

Ja, het probleem is dat het bestaande informatie is. 'even' deze info in de db erbij opslaan zal dus niet gaan.

Hmz....
Twee velden in de database aanmaken en vervolgens:
1) Een scriptje laten draaien dat van alle bestanden de afmetingen in de database opslaat
2) Een interface schrijven die bij het opvragen van de informatie kijkt of het al in de database staat, zo niet, het dan inleest door middel van die functie en wegschrijft naar de database

En dan natuurlijk bij nieuwe afbeeldingen de informatie vantevoren al opslaan dan kun je na een tijdje optie 2) uitfaseren (alhoewel me 1) het beste lijkt).
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')