[php]probleem met spaties tussen links uit whileloop

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ultimatia
  • Registratie: November 2007
  • Laatst online: 22-06 22:00
Hallo,

Ik ben bezig met een styleswitch in mijn website. Nu is dit gelukt, alleen zit ik met het volgende probleem. De verschillende stylen worden d.m.v. een loop op de pagina gedrukt. De code die hier voor zorgt is de volgende.

PHP:
1
2
3
4
5
6
7
<?php
// Schijft de links uit d.m.v while loop
    while(list($key, $val) = each($styleSheets))
    {
         echo "<a href='styleswitcher.php?SETSTYLE=".$key." 'title=' ".$val["title"]." '>".$val["text"]."</a>";
    }
?>


De twee links worden aan elkaar geplakt, dezen moeten echter gescheiden zijn door bijvoorbeeld een spatie of een | .

Aangezien ik nog een vrij basiche kennis heb in php kom ik er niet uit. Ik heb geprobeerd om in de link dingen aan te passen en geprobeerd om de links apart uit te schrijven zonder een loop. Deze pogingen zijn helaas gestrand.

De overige code van de styleswitch ziet er als volgt uit.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php

// Stylearray.php

$styleSheets = array();

// DEFINE STYLESHEETS
$styleSheets[0]["text"]='Hout';
$styleSheets[0]["title"]='Click here to set Style 1';
$styleSheets[0]["sheet"]='<link href="stylesheet1_def.css" rel="stylesheet" type="text/css" />';


$styleSheets[1]["text"]='Modern';
$styleSheets[1]["title"]='Click here to set Style 2';
$styleSheets[1]["sheet"]='<link href="stylesheet2_def.css" rel="stylesheet" type="text/css" />';


// DEFAULT STYLESHEET
$defaultStyleSheet=1;

// SET STYLESHEET
if(!isset($_COOKIE["STYLE"])){
 if(isset($_SESSION["STYLE"])){
  echo $styleSheets[$_SESSION["STYLE"]]["sheet"];
 }else{
  echo $styleSheets[$defaultStyleSheet]["sheet"];
 }
}else{
 echo $styleSheets[$_COOKIE["STYLE"]]["sheet"];
}
?>


en

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

//styleswitcher.php

// SET COOKIE FOR 1 YEAR
if(isset($_REQUEST["SETSTYLE"])){
 if(setcookie("testcookie",true)){
  setcookie("STYLE",$_REQUEST["SETSTYLE"],time()+31622400,"/");
 }else{
  $_SESSION["STYLE"]=$_REQUEST["SETSTYLE"];
 }
}
// RETURN TO CALLER PAGE
header("Location: ".$_SERVER["HTTP_REFERER"]);
?>


Ik hoop dat iemand mij kan helpen :),
bedankt!

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

De oplossing zit al in het eerste stukje code van 7 regels. Probeer van elk van deze regels voor jezelf eens te benoemen wat elk van die regels doet en wat er gebeurd. Probeer ook in je hoofd door de regels heen te lopen zoals de computer het zal doen. Zodra je dat gedaan hebt lijkt het me dat het niet zo moeilijk moet zijn om een plek te verzinnen waar je aan kunt geven dat er een extra spatie afgedrukt moet worden.

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


Acties:
  • 0 Henk 'm!

  • ultimatia
  • Registratie: November 2007
  • Laatst online: 22-06 22:00
Janoz schreef op vrijdag 22 augustus 2008 @ 12:18:
De oplossing zit al in het eerste stukje code van 7 regels. Probeer van elk van deze regels voor jezelf eens te benoemen wat elk van die regels doet en wat er gebeurd. Probeer ook in je hoofd door de regels heen te lopen zoals de computer het zal doen. Zodra je dat gedaan hebt lijkt het me dat het niet zo moeilijk moet zijn om een plek te verzinnen waar je aan kunt geven dat er een extra spatie afgedrukt moet worden.
bedankt :p

Ik heb elke regel doorgenomen wat er gebeurt en snap dit ook grotendeels, alleen ik krijg het nog niet voor elkaar om er een spatie tussen te krijgen ^^, is het enkel een " " plaatsen in regel 5 of ben ik helemaal verkeerd bezig ?

Acties:
  • 0 Henk 'm!

Verwijderd

ultimatia schreef op vrijdag 22 augustus 2008 @ 14:06:
[...]


bedankt :p

Ik heb elke regel doorgenomen wat er gebeurt en snap dit ook grotendeels, alleen ik krijg het nog niet voor elkaar om er een spatie tussen te krijgen ^^, is het enkel een " " plaatsen in regel 5 of ben ik helemaal verkeerd bezig ?
Ik zou zeggen probeer het uit, het doet wonderen ;)

Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 19:39
Als je dan toch met regel 5 bezig bent, zou ik de enkele en dubbele aanhalingstekens omdraaien (dus gebruiken zoals in het tweede stukje code); dan heb je overal dubbele in je HTML. Ook ontbreekt een spatie tussen de href en title attributen en staan er volgens mij enkele overbodige spaties in bijv. diezelfde title.

Acties:
  • 0 Henk 'm!

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Ik zou het in twee stappen doen: genereer eerst een lijstje van links en plak ze vervolgens aan elkaar met implode.

Acties:
  • 0 Henk 'm!

  • ultimatia
  • Registratie: November 2007
  • Laatst online: 22-06 22:00
bedankt, het is gelukt :). Ik krijg het voor elkaar om 1 spatie tussen de woorden te krijgen.
Nu is mijn volgende vraag : O, kan ik er bijvoorbeeld ook 5 spaties tussen krijgen? Dit is me nog niet gelukt.

De nieuwe code is;

PHP:
1
2
3
4
5
6
7
8
 <?php
// Schijft de links uit

    while(list($key, $val) = each($styleSheets ))
    {
         echo '<a href="styleswitcher.php?SETSTYLE='.$key.'   "title="'.$val['title'].' "> '.$val['text'].'</a>';
    }
?>

Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 19:39
ultimatia schreef op vrijdag 22 augustus 2008 @ 15:32:
bedankt, het is gelukt :). Dank hiervoor. Ik krijg het voor elkaar om 1 spatie tussen de woorden te krijgen.
Nu is mijn volgende vraag : O, kan ik er bijvoorbeeld ook 5 spaties tussen krijgen? Dit is me nog niet gelukt.
Tuurlijk kan vijf spaties ook, maar dan ben je gewoon bezig met HTML (of beter misschien CSS voor dit soort opmaak). Vergeet niet dat PHP alleen aan de serverkant van de verbinding wat voorbereidend werk doet – alleen de (HTML-)output wordt naar de browser gestuurd. En zoals je vast wel weet, wordt witruimte door de browser niet exact zo weergeven als ze in de bron staat.

Overigens staan de spaties binnen de openingstag van de link nog steeds een beetje raar.

Edit: En nu heb je dus ook een spatie voor de eerste link. Als je dat niet wilt, zul je moeten kijken hoe je kunt checken of de link die je aan het samenstellen bent, de eerste of, als je de spatie achter de link plakt, de laatste is. In dat geval laat je dan de spatie weg.

[ Voor 14% gewijzigd door Raynman op 22-08-2008 15:50 ]


Acties:
  • 0 Henk 'm!

  • ultimatia
  • Registratie: November 2007
  • Laatst online: 22-06 22:00
Raynman schreef op vrijdag 22 augustus 2008 @ 15:47:
[...]
Tuurlijk kan vijf spaties ook, maar dan ben je gewoon bezig met HTML (of beter misschien CSS voor dit soort opmaak). Vergeet niet dat PHP alleen aan de serverkant van de verbinding wat voorbereidend werk doet – alleen de (HTML-)output wordt naar de browser gestuurd. En zoals je vast wel weet, wordt witruimte door de browser niet exact zo weergeven als ze in de bron staat.

Overigens staan de spaties binnen de openingstag van de link nog steeds een beetje raar.

Edit: En nu heb je dus ook een spatie voor de eerste link. Als je dat niet wilt, zul je moeten kijken hoe je kunt checken of de link die je aan het samenstellen bent, de eerste of, als je de spatie achter de link plakt, de laatste is. In dat geval laat je dan de spatie weg.
Hartelijk bedankt voor je/ iedereen zijn moeite, het probeem van de extra spaties los ik op dmv.
code:
1
&nbsp;
. Ik weet niet als het echt netjes is maar het werkt.

Je hebt gelijk dat ik die spaties ook voor de eerste link heb staan. Dit is niet een groot probleem omdat ik beide links positioneer in css. Ik denk dat ik genoeg weet en er nu zelf uit kan komen.

Acties:
  • 0 Henk 'm!

Verwijderd

Je kan alleen de spaties beter buiten de <a> tags zetten anders staat er een spatie in je link (en als je onderstreepte links hebt zijn die streepjes dus te lang). Maar goed, kleinigheidje je zal er wel uitkomen.
Pagina: 1