Archief - PHP: variable in variable

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Poutie

Legacy Member
Voor een nieuwsbriefsysteem dat ik aan het ontwikkelen ben probeer ik het volgende uit te voeren:

PHP:
$newsletter_intro='<table width="600" border="0" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr>
    <td width="600" height="10" valign="top"></td>
    </tr>
	<tr>
	<td height="19" class="standard" >hier<? echo $_POST[newsletter_start]; ?></td>
	</tr>
		<tr>
	<td height="10" class="standard"></td>
	</tr>';

Als ik dit echo krijg ik wel de het html gedeelte, maar het post gegeven wordt niet getoond.
$_POST[newsletter_start] heeft zeker een waarde, want als ik hem laat weergeven buiten de variable $newsletter_intro dan zie ik die waarde.

Zal wel iets standaard zijn , maar ik weet niet echt hoe dit op te lossen.

Btw, mijn nieuwsletter is een concatinatie van verschillende variabelen die html code en php variabelen bevatten.
Dit omdat ik ieder onderdeel van de newsletter wil kan laten bepalen door de gebruiker.

Thx in advance,

Poutie

Tyfius

Legacy Member
<?php echo $_POST['newsletter_start']; ?>

Het gebruik van <? ?> wordt afgeraden.

Poutie

Legacy Member
sorry, had dit ook al geprobeerd... Net hetzelfde.
Ik zie de 'hier' wel maar niet de waarde van de variabele

Tyfius

Legacy Member
Nu zie ik het pas. Dit gaat natuurlijk niet werken. Je zit binnen PHP en begint een nieuw PHP blok.

PHP:
$newsletter_intro='<table width="600" border="0" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr>
    <td width="600" height="10" valign="top"></td>
    </tr>
    <tr>
    <td height="19" class="standard" >hier '.$_POST[newsletter_start].'</td>
    </tr>
        <tr>
    <td height="10" class="standard"></td>
    </tr>';

Zero Grav

Legacy Member
Je kan beter gewoon de php afsluiten en terug opnieuw beginnen aan $_POST['newsletter_start']. Dan gaat ie niet onnodig al die html door de php-parser voeren.

Poutie

Legacy Member
Tyfius,

ook al proberen te concatineren, geen avance. Is raar dacht echt dat dit zou lukken.

Zero Grav,
Eigenlijk is het als volgt
Form met verschillende in te vullen velden
wordt gepost naar zelfde pagina.
Vervolgens wil ik gans de html code (met de php variabelen erin --> deels uit de post en deels uit een database) in één variabele krijgen zodat ik die kan wegschrijven in de database.

Dus ik maak enkele variabelen:

PHP:
$newsletter_header='html code van de header en eventueel een echo van php variabelen';
$newsletter_intro='html code van de header en eventueel een echo van php variabelen';
$newsletter_content='html code van de header en eventueel een echo van php variabelen';
$newsletter_outro='html code van de header en eventueel een echo van php variabelen';

Vervolgens wil ik die volledige code in één varaiable krijgen:
PHP:
$newsletter_full=$newsletter_header.$newsletter_intro.$newsletter_content.$newsletter_outro;

Boddah

Legacy Member
goh, kun je dan niet beter met user controls werken? (of hoe dat dat ook heet in php)

Tyfius

Legacy Member
Dan scheelt er toch iets met de rest van uw code. Als ik dit zo test dan werkt die perfect.

Poutie

Legacy Member
blijkbaar was ik toch wel iets te moe.
Werkt idd :)
Er stond nog een ; tussen op een lijn :(

Nog een bijkomende vraag:
Ik haal een reeks van activiteiten op die voldoen aan de dag en het jaar van de nieuwsbrief:
/
PHP:
/add the newsletter activities
//get the activities from the set month and year
$sqlgetactivities="select COUNT(*) from activities where MONTH(act_date)=$newsletter_month and YEAR(act_date)=$newsletter_year order by act_date asc";
$exe=mysql_query($sqlgetactivities) or die(mysql_error());
while($rowacts = mysql_fetch_array($exe)){
$name=$rowacts['act_name'];
$date=$rowacts['act_date'];
$extra=$rowacts['act_extra'];
$day=date ("j", strtotime($date));
$dayname= date ("w", strtotime($date));
$month= date ("M", strtotime($date));
$dag[0] = "/0/";
$dag[1] = "/1/";
$dag[2] = "/2/";
$dag[3] = "/3/";
$dag[4] = "/4/";
$dag[5] = "/5/";
$dag[6] = "/6/";

$dagreplacements[0] = "Zondag";
$dagreplacements[1] = "Maandag";
$dagreplacements[2] = "Dinsdag";
$dagreplacements[3] = "Woensdag";
$dagreplacements[4] = "Donderdag";
$dagreplacements[5] = "Vrijdag";
$dagreplacements[6] = "Zaterdag";

$finaldayname= preg_replace($dag, $dagreplacements, $dayname);

$maand[0] = "/Jan/";
$maand[1] = "/Feb/";
$maand[2] = "/Mar/";
$maand[3] = "/Apr/";
$maand[4] = "/May/";
$maand[5] = "/Jun/";
$maand[6] = "/Jul/";
$maand[7] = "/Aug/";
$maand[8] = "/Sept/";
$maand[9] = "/Oct/";
$maand[10] = "/Nov/";
$maand[11] = "/Dec/";


$maandreplacements[0] = "Januari";
$maandreplacements[1] = "Februari";
$maandreplacements[2] = "Maart";
$maandreplacements[3] = "April";
$maandreplacements[4] = "Mei";
$maandreplacements[5] = "Juni";
$maandreplacements[6] = "Juli";
$maandreplacements[7] = "Augustus";
$maandreplacements[8] = "September";
$maandreplacements[9] = "Oktober";
$maandreplacements[10] = "November";
$maandreplacements[11] = "December";

$finalmonth= preg_replace($maand, $maandreplacements, $month);

$newsletter_activities[]='<tr>
	<td height="19" valign="top" class="standard" style="border-bottom:1px solid #C3B098;"><span class="titel">'.$finaldayname.$day.$finalmonth.$name.'</span></td>
	</tr>
	<tr>
		  <td height="19" valign="top" class="standard" >'.$extra.'</td>
	</tr>
	<tr>
		  <td height="6" valign="top" class="standard"></td>
	</tr>';
	}

Bon ik en loops gaan even goed samen zoals een koeiestront en een dakvenster (i know, basis van php, moet er mij echt een tegen leggen)
Zoals je ziet voldoen er verschillende activiteiten aan die query en probeer ik die in een array te steken. ($newsletter_activities[])

Vraagje, hoe laad ik die dan in in mijn $newsletter_total?
Thx again :)

Tyfius

Legacy Member
PHP:
$cnt = count($newsletter_archives);
$mekker = "";
for ($i = 0; $i < $cnt; $i++)
{
  $mekker .= $newsletter_archives[$i];
}

Poutie

Legacy Member
Tyfius, thx :) You're the man.

Heb wel het volgende gebruikt:
$activitiesinonestring=implode("", $newsletter_activities);

Lijkt me sneller eigenlijk. Greetz

servi

Legacy Member
ge zoekt het overigens veel te moeilijk in uw code :

dit :
PHP:
<?php

$dayname= date ("w", strtotime($date)); 

...

$dag[0] = "/0/"; 
$dag[1] = "/1/"; 
$dag[2] = "/2/"; 
$dag[3] = "/3/"; 
$dag[4] = "/4/"; 
$dag[5] = "/5/"; 
$dag[6] = "/6/"; 

$dagreplacements[0] = "Zondag"; 
$dagreplacements[1] = "Maandag"; 
$dagreplacements[2] = "Dinsdag"; 
$dagreplacements[3] = "Woensdag"; 
$dagreplacements[4] = "Donderdag"; 
$dagreplacements[5] = "Vrijdag"; 
$dagreplacements[6] = "Zaterdag"; 

$finaldayname= preg_replace($dag, $dagreplacements, $dayname);
?>

kan je eenvoudig vervangen door :

PHP:
<?php
$dayNumber = date ("w", strtotime($date)); 
....
// dit gaat in principe ook :
// $day = array('Zondag','Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag');
$day[0] = 'Zondag';
$day[1] = 'Maandag';
$day[2] = 'Dinsdag';
$day[3] = 'Woensdag';
$day[4] = 'Donderdag';
$day[5] = 'Vrijdag';
$day[6] = 'Zaterdag';

$dayName = $day[$dayNumber];
?>


Het 2de stuk code doet identiek hetzelfde, maar is wel véél korter, sneller en leesbaarder.

Ik heb hier nu maar 1 elementje uitgevinkt, bij $finalmonth kan je natuurlijk hetzelfde toepassen.

NeoNeke

Legacy Member
of ge zet de local language op nederlands moet je niet gaan klooien met arrays, dan kan het nog korter

servi

Legacy Member
Ik wist zelfs niet dat dat kon met php, nou ja negeer mijn post dan maar en vervang het dan door 1 regel code :cool:
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan