Samengestelde afbeeldingen en script(s)
Is het mogelijk een om 3 afbeeldingen (afhankelijk van de variabele die wordt ingevoerd) door een script op een website te publiceren?
Bijvoorbeeld 3 auto's bij elkaar als de waarde 1 is, 2 auto's bij elkaar en 1 auto iets (zeg 3 cm) rechts van de 2 auto's als de waarde 2 is en de drie auto's los van elkaar, met een ruimte van 3cm er tussen als de waarde 3 is.
Is dit te realiseren met een script?
Welk script leent zich daar het best voor?
(Wil best literatuur hierover raadplegen en leren, maar wil wel weten wat ik dan het best kan kiezen :-) )
Alles is mogelijk.
Ik denk dat je in deze richting moet denken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$waarde = 1; // die waarde zal ergens vandaan komen waarschijnlijk
if($waarde == 1){
echo '<img src="auto.jpg">';
echo '<img src="auto.jpg">';
echo '<img src="auto.jpg">';
}
elseif($waarde == 2){
echo '<img src="auto.jpg">';
echo '<img src="auto.jpg">';
echo '<img src="auto.jpg" style="margin-left: 20px;">';
}
elseif($waarde == 3){
echo '<img src="auto.jpg">';
echo '<img src="auto.jpg" style="margin-left: 20px;">';
echo '<img src="auto.jpg" style="margin-left: 20px;">';
}?>
$waarde = 1; // die waarde zal ergens vandaan komen waarschijnlijk
if($waarde == 1){
echo '<img src="auto.jpg">';
echo '<img src="auto.jpg">';
echo '<img src="auto.jpg">';
}
elseif($waarde == 2){
echo '<img src="auto.jpg">';
echo '<img src="auto.jpg">';
echo '<img src="auto.jpg" style="margin-left: 20px;">';
}
elseif($waarde == 3){
echo '<img src="auto.jpg">';
echo '<img src="auto.jpg" style="margin-left: 20px;">';
echo '<img src="auto.jpg" style="margin-left: 20px;">';
}?>
Dit is al een hele stap...
Die waarde wil ik op een afgeschermde sub pagina in geven.
Heb je idee hoe ik dat kan doen?
Jouw script komt op de home-page. (index.html)
Op een andere afgeschermde pagina (noem deze voor het gemak invoer.html) moet ik deze variabele in kunnen geven.
Als je de waarde ergens in wilt kunnen geven, moet je daarvoor een formulier maken in HTML.
Code (php)
1
2
3
4
2
3
4
<form method="post">
<input type="text" name="waarde">
<input type="submit" value="In geven">
</form>
<input type="text" name="waarde">
<input type="submit" value="In geven">
</form>
Maarrrr... daarna moet die waarde ergens opgeslagen worden. De meest gangbare manier is een MySQL database. Maar, niet lullig bedoeld, ik heb het idee dat je daar niet echt ervaring mee hebt. Klopt dat?
Heb wel eens een website met Wordpress gemaakt...maar dan stopt het.
Zoals ik net al zei...wil me daarin best inlezen/leren...maar dan moet het wel zinnig/nuttig zijn. :-)
Ook misschien wat overbodig om een hele database in te richten voor 1 getal, namelijk die waarde.
Het is daarom misschien 'makkelijker' om een textbestandje op je server/hosting te hebben staan waarin de waarde wordt geschreven.
Je hebt dus:
- index.php met het script om de plaatjes weer te geven
- invoer.php met:
--- het HTML formulier
--- een script om het formulier te verwerken en de waarde op te slaan
Om het niet helemaal voor te zeggen hoe het te doen:
- zoek eens op Google hoe je in php een formulier verwerkt
- kijk eens hoe je een waarde in een text bestand schrijft (http://www.w3schools.com/php/php_file_create.asp)
Gewijzigd op 24/05/2016 12:11:37 door Ramon van Dongen
Ik ga me storten in de boeken: "Basiscursus PHP 5" en "PHP kookboek"
Als ik er (onverhoopt) niet uit kom...neem ik contact met je op.
Oke?
Gewijzigd op 24/05/2016 12:37:48 door Michiel Krijger
Probeer gewoon eens wat dingetjes uit, daar leer je het meeste van.
Alles werkt...althans tot zover....
Nu is het zo dat wanneer ik via het bestand ren.htm de waarde en tijd1 en tijd2 invul, deze netjes worden overgenomen door renners1v.php
Maar....als een derde het bestand renners1v.php opent, ziet deze niet datgene wat ik heb ingevoerd.
Is het mogelijk dat de waarde die ik, als webmaster ingeef, statisch blijft staan voor de andere gebruikers, tot het moment dat ik de waarde en tijd1 en tijd2 heb veranderd?
Voor de volledigheid zal ik hieronder de inhoud van beide bestanden weergeven.
ren.htm ziet er als volgt uit:
<FORM METHOD="post" ACTION="rennersv1.php">
Waarde:<INPUT NAME="waarde" TYPE="text" VALUE="" /><BR />
Tijd 1: <INPUT NAME="tijd1" TYPE="text" VALUE="" /><BR />
Tijd 2: <INPUT NAME="tijd2" TYPE="text" VALUE="" /><BR />
<INPUT NAME="verzenden" TYPE="submit" VALUE="Verzenden" /><BR />
</FORM>
rennersv1.php is zo vorm gegeven.
Code (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
32
33
34
35
36
37
38
39
40
41
42
43
44
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
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
$waarde = $_POST['waarde'];
$tijd = "30 sec";
$tijd1 = $_POST['tijd1'];
$tijd2 = $_POST['tijd2'];
if($waarde == 1){
echo '<img src="bike4.png">';
echo '<img src="bike4.png">';
echo '<img src="bike4.png">';
}
elseif($waarde == 2){
echo '<img src="weg.png">';
echo '<img src="bike4.png" style="margin-left: -500px;">';
echo '<img src="bike4.png" style="margin-left: -90px;">';
echo $tijd1;
echo '<img src="bike4.png">';
echo $tijd2;
echo '<img src="bike4.png">';
}
elseif($waarde == 3){
echo '<img src="bike4.png">';
echo '<img src="bike4.png" style="margin-left: -90px;">';
echo $tijd;
echo '<img src="bike4.png">';
echo $tijd*3; echo "sec";
echo '<img src="bike4.png">';
}
elseif($waarde == 4){
echo '<img src="bike4.png">';
echo '<img src="bike4.png" style="margin-left: -90px;">';
echo $tijd;
echo '<img src="bike4.png">';
}
elseif($waarde == 5){
echo '<img src="weg.png">';
echo '<img src="bike4.png" style="margin-left: -500px;">';
echo '<img src="bike4.png" style="margin-left: -90px;">';
echo $tijd1;
echo '<img src="bike4.png">';
echo $tijd2;
echo '<img src="bike4.png">';
}
?>
$waarde = $_POST['waarde'];
$tijd = "30 sec";
$tijd1 = $_POST['tijd1'];
$tijd2 = $_POST['tijd2'];
if($waarde == 1){
echo '<img src="bike4.png">';
echo '<img src="bike4.png">';
echo '<img src="bike4.png">';
}
elseif($waarde == 2){
echo '<img src="weg.png">';
echo '<img src="bike4.png" style="margin-left: -500px;">';
echo '<img src="bike4.png" style="margin-left: -90px;">';
echo $tijd1;
echo '<img src="bike4.png">';
echo $tijd2;
echo '<img src="bike4.png">';
}
elseif($waarde == 3){
echo '<img src="bike4.png">';
echo '<img src="bike4.png" style="margin-left: -90px;">';
echo $tijd;
echo '<img src="bike4.png">';
echo $tijd*3; echo "sec";
echo '<img src="bike4.png">';
}
elseif($waarde == 4){
echo '<img src="bike4.png">';
echo '<img src="bike4.png" style="margin-left: -90px;">';
echo $tijd;
echo '<img src="bike4.png">';
}
elseif($waarde == 5){
echo '<img src="weg.png">';
echo '<img src="bike4.png" style="margin-left: -500px;">';
echo '<img src="bike4.png" style="margin-left: -90px;">';
echo $tijd1;
echo '<img src="bike4.png">';
echo $tijd2;
echo '<img src="bike4.png">';
}
?>
let wel....ik ben pas net bezig hiermee ....
Gewijzigd op 25/05/2016 01:30:42 door Michiel Krijger
De $tijd variable moet je niet als een string defineren (zonder quotes), kortom:
Regel 3:
Regel 26:
Zoals je hierboven ziet, kan regel 26 ook nog ingekort worden.
Quote:
Als value="" leeg is, mag je hem ook helemaal weglaten. Scheelt je weer typwerk.<FORM METHOD="post" ACTION="rennersv1.php">
Waarde:<INPUT NAME="waarde" TYPE="text" VALUE="" /><BR />
Tijd 1: <INPUT NAME="tijd1" TYPE="text" VALUE="" /><BR />
Tijd 2: <INPUT NAME="tijd2" TYPE="text" VALUE="" /><BR />
<INPUT NAME="verzenden" TYPE="submit" VALUE="Verzenden" /><BR />
</FORM>
Waarde:<INPUT NAME="waarde" TYPE="text" VALUE="" /><BR />
Tijd 1: <INPUT NAME="tijd1" TYPE="text" VALUE="" /><BR />
Tijd 2: <INPUT NAME="tijd2" TYPE="text" VALUE="" /><BR />
<INPUT NAME="verzenden" TYPE="submit" VALUE="Verzenden" /><BR />
</FORM>
Quote:
Dat klopt! Op het moment dat jij het formulier verstuurt, worden de gegevens verstuurd naar pagina rennersv1.php. Dat komt door de 'ACTION="rennersv1.php".Maar....als een derde het bestand renners1v.php opent, ziet deze niet datgene wat ik heb ingevoerd.
Als iemand later op rennersv1.php komt, komt hij/zij daar zonder dat er op dat moment iets is verstuurd en is $_POST['waarde'] helemaal leeg.
Daarom zul je de waarde ergens op moeten slaan zoals eerder gezegd in een database (of anders in een textbestand).
Even uit de losse pols om je op weg te helpen, niet getest dus hopelijk werkt het:
Zet eens helemaal boven in rennersv1.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' AND isset($_POST['waarde']) AND isset($_POST['tijd1']) AND isset($_POST['tijd2'])){
$bestand = fopen('textbestand.txt', 'w'); // bestand is ook anders te noemen uiteraard
// $_POST['waarde'] in $bestand zetten
fwrite($bestand, $_POST['waarde'];
// $_POST['tijd1'] in $bestand zetten
fwrite($bestand, $_POST['tijd1'];
// $_POST['tijd2'] in $bestand zetten
fwrite($bestand, $_POST['tijd2'];
// bestand sluiten (zie het als opslaan ofzo)
fclose($bestand);
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST' AND isset($_POST['waarde']) AND isset($_POST['tijd1']) AND isset($_POST['tijd2'])){
$bestand = fopen('textbestand.txt', 'w'); // bestand is ook anders te noemen uiteraard
// $_POST['waarde'] in $bestand zetten
fwrite($bestand, $_POST['waarde'];
// $_POST['tijd1'] in $bestand zetten
fwrite($bestand, $_POST['tijd1'];
// $_POST['tijd2'] in $bestand zetten
fwrite($bestand, $_POST['tijd2'];
// bestand sluiten (zie het als opslaan ofzo)
fclose($bestand);
}
?>
Vervolgens moet je elke keer dat rennersv1.php wordt geopenend, door wie dan ook, dat bestandje weer aanroepen om de gegevens op te halen en in $waarde, $tijd1 en $tijd2 te zetten. Snappie?
Dit vervangt dan jouw regel 2, 4 en 5;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// bestand openen
$bestand = fopen('textbestand.txt', 'r'); // of hoe je je bestand dan ook hebt genoemd
// regel voor regel verwerken
$i = 1;
while(!feof($bestand)){
if($i == 1){
$waarde = fgets($bestand);
}
elseif($i == 2){
$tijd1 = fgets($bestand);
}
elseif($i == 2){
$tijd2 = fgets($bestand);
}
$i++;
}
// bestand sluiten (zie het als opslaan ofzo)
fclose($bestand);
?>
// bestand openen
$bestand = fopen('textbestand.txt', 'r'); // of hoe je je bestand dan ook hebt genoemd
// regel voor regel verwerken
$i = 1;
while(!feof($bestand)){
if($i == 1){
$waarde = fgets($bestand);
}
elseif($i == 2){
$tijd1 = fgets($bestand);
}
elseif($i == 2){
$tijd2 = fgets($bestand);
}
$i++;
}
// bestand sluiten (zie het als opslaan ofzo)
fclose($bestand);
?>
Toevoeging op 25/05/2016 09:31:42:
Probeer maar even, misschien niet helemaal foutloos, maar zoiets zou kunnen werken zonder database.
Is het eenvoudiger met een database als MySql?
Mat als het nu enkel gaat om 3 waardes op te slaan in totaal en je nul ervaring hebt met databases, is dit een mooie tussen oplossing.
Wetende wat ik graag wil leren (zie bovenstaande)
Op het gebied van PHP en MsQl zijn er nogal wat.
Moeilijk een keuze te maken voor me.
:-(
PHP Maarten op 25/05/2016 08:11:46:
Ik kan al raden dat "30 seconden" x 3 (regel 26 niet gaat werken) gaat niet werken.
De $tijd variable moet je niet als een string defineren (zonder quotes), kortom:
De $tijd variable moet je niet als een string defineren (zonder quotes), kortom:
Klopt niet echt he. Het is misschien niet netjes, maar werkt wel...
Gewijzigd op 26/05/2016 11:05:52 door Randy vsf