Reputation:
So I basically have this code:
<?php
$lang = isset($_GET['lang']) ? $_GET['lang'] : NULL;
$langArray = array('en', 'de', 'fr', 'es', 'it');
$img = "<img src='img/".$lang."/1.png' />";
?>
[some useless code here...]
<div class="col ">
<?php echo $img; ?>
<p>Here some text under the img</p>
</div>
It will display a different image depending on the language chosen. As you can see, the image is stored in a folder with the name of the language. For example, if you choose 'en' for english, the picture display will be /img/en/1.png
.
My problem is that I have multiple pictures in these folders (1.png, 2.png... 5.png). Instead of writing this :
<?php
$lang = isset($_GET['lang']) ? $_GET['lang'] : NULL;
$langArray = array('en', 'de', 'fr', 'es', 'it');
$img = "<img src='img/".$lang."/1.png' />";
$img = "<img src='img/".$lang."/2.png' />";
$img = "<img src='img/".$lang."/3.png' />";
$img = "<img src='img/".$lang."/4.png' />";
$img = "<img src='img/".$lang."/5.png' />";
?>
Is there a way to echo these pictures with a loop? I'm new to PHP and not sure of what I should write.
Thanks.
Upvotes: 0
Views: 75
Reputation: 382
As an addition to the answer made by @Jouby (that is the loop you need) I would like you to point that your code is not really safe...
Directly using $_GET parameters in your output is asking for trouble. Please escape the value first (eg with htmlspecialchars()) or even better: Check if the value of $lang is an element in the $langArray (eg by using in_array()). That way you know what values will be put in your code.
Just a thought: what if $_GET['lang'] would contain something like this?
"<script>alert('I can steal your session (or worse!)');</script>
Upvotes: 1
Reputation: 2471
for
to loop, with a $i
..=
.You can loop like this :
<?php
$lang = isset($_GET['lang']) ? $_GET['lang'] : NULL;
$langArray = array('en', 'de', 'fr', 'es', 'it');
if (!is_null($lang)) {
$img = '';
for($i=1;$i<=5;$i++) {
$img .= "<img src='img/".$lang."/".$i.".png' />";
}
}
?>
Upvotes: 2
Reputation: 1089
You can use loops in html like so
<?php for($i = 1; $i <= 5; $i++): ?>
<img src="img/<?= $lang ?>/<?= $i ?>.png" />
<?php endfor; ?>
<?=
is short from <?php echo
Upvotes: 0