PDA

Bekijk Volledige Versie : PHP: probleempje met lus



StriKe
23/08/04, 13:45
Hello,

Ik heb onderstaand script:

<?php

if ($done == "yes") {
print("Je kan <b>" . $aantal_items . "</b> items toevoegen aan de
concertinfo-pagina: <br /><br />");
$teller = 1;
print("<table border=\"0\" cellpadding=\"5\">
<tr><td>&nbsp;</td><td><b>Datum (dd-mm)</b></td><td><b>Evenement</b>
</td></tr>
<form action=\"$PHP_SELF\" method=\"post\">
<input type=\"hidden\" name=\"done2\" value=\"yes\">
<input type=\"hidden\" name=\"aantal_items\" value=\"$aantal_items
\">");

for($n=0; $n < $aantal_items; $n++) {
$datum = "date" . $teller;
$event = "event" . $teller;
print("
<tr><td><b>$teller</b></td><td><input class=\"default\"
type=\"text\" size=\"5\" name=\"$datum\"></td>
<td><input class=\"default\" type=\"text\" size=\"70\" name=
\"$event\"></td></tr>");
$teller++;
}

print("</table><br />
<input class=\"default\" type=\"submit\" name=\"submit\" value=\"In
database opnemen!\">
<input class=\"default\" type=\"reset\" name=\"reset\" value=\"Alles
wissen\">
</form>");

} else {

if ($done2 == "yes") {
print("De gegevens werden verwerkt!");

include("../includes/database_nieuws.php");

$query = "INSERT INTO concertinfo (date, event) VALUES
('$date1', '$event1')";
mysql_query($query);
$query = "INSERT INTO concertinfo (date, event) VALUES
('$date2', '$event2')";
mysql_query($query);

// 'probleemstuk'

for ($n = 0; $n < $aantal_items; $n++) {
$nummer = 1;
$date = "$date" . $nummer;
$event = "$event" . $nummer;
$query = "INSERT INTO concertinfo (date, event) VALUES
('$date', '$event')";
mysql_query($query);
$nummer++;
}

// einde 'probleemstuk'

} else {

print("
<form method=\"post\" action=\"$PHP_SELF\">
Hoeveel items wil u toevoegen?
<input type=\"hidden\" name=\"done\" value=\"yes\">
<input class=\"default\" type=\"text\" size=\"2\" name=
\"aantal_items\">
<input class=\"default\" type=\"submit\" name=\"submit\" value=
\"Ga verder\">
</form>");
}
}

Het zit hem dus in het 'probleemstuk'.
Probleem is dus dat er steeds 'getallen' in de database gestopt worden,
wat ook logisch is (dat zie ik ook wel).
Alleen weet ik niet hoe ik de variabelen $date1 en $event1 (en daarna
$date2, $event2 enz) in de database moet zetten.

Iemand die me kan helpen?

--
Groeten,
StriKe

http://www.internetfreakz.be

PietHein
23/08/04, 14:05
StriKe wrote:
> Hello,
>
> Ik heb onderstaand script:
>
> <?php
>
> for($n=0; $n < $aantal_items; $n++) {
> $datum = "date" . $teller;
> $event = "event" . $teller;
> $teller++;
> }
> for ($n = 0; $n < $aantal_items; $n++) {
> $nummer = 1;
> $date = "$date" . $nummer;
> $event = "$event" . $nummer;
> $query = "INSERT INTO concertinfo (date, event) VALUES
> ('$date', '$event')";
> mysql_query($query);
> $nummer++;
> }

Beste StriKe,

Er is een groot verschil tussen wat je in het 1e en het 2e loop-je doet.
in de eerste loop geef je $date als inhoud een string
in de tweede geef je $date als inhoud een string, maar wat je wilt is hem de
inhoud van een andere variabele geven.
Misschien lukt dat zo $($date.$nummer) anders is er ook nog een andere
methode voor die ik zou gauw niet kan bedenken.

Let wel, dit is gewoon een hele nare manier om met variabelen om te gaan.
Maar in je form een array van velden d.m.v. name="date[]" en lees deze
altijd uit via $_POST[date[$n]] en niet rechtstreeks. Check altijd de inhoud
van dingen die van formulieren komen en gooi het niet direct in de database.
Voor je het weet leegt iemand je database, of vult hem met concerten waar
jij niet mee geassocieerd wilt worden.

gr. PietHein

Michiel de Roo
23/08/04, 14:05
StriKe wrote:
> Hello,
>
> Ik heb onderstaand script:
>
> <?php
>
> if ($done == "yes") {
> print("Je kan <b>" . $aantal_items . "</b> items toevoegen aan de
> concertinfo-pagina: <br /><br />");
> $teller = 1;
> print("<table border=\"0\" cellpadding=\"5\">
> <tr><td>&nbsp;</td><td><b>Datum (dd-mm)</b></td><td><b>Evenement</b>
> </td></tr>
> <form action=\"$PHP_SELF\" method=\"post\">
> <input type=\"hidden\" name=\"done2\" value=\"yes\">
> <input type=\"hidden\" name=\"aantal_items\" value=\"$aantal_items
> \">");
>
> for($n=0; $n < $aantal_items; $n++) {
> $datum = "date" . $teller;
> $event = "event" . $teller;
> print("
> <tr><td><b>$teller</b></td><td><input class=\"default\"
> type=\"text\" size=\"5\" name=\"$datum\"></td>
> <td><input class=\"default\" type=\"text\" size=\"70\" name=
> \"$event\"></td></tr>");
> $teller++;
> }
>
> print("</table><br />
> <input class=\"default\" type=\"submit\" name=\"submit\" value=\"In
> database opnemen!\">
> <input class=\"default\" type=\"reset\" name=\"reset\" value=\"Alles
> wissen\">
> </form>");
>
> } else {
>
> if ($done2 == "yes") {
> print("De gegevens werden verwerkt!");
>
> include("../includes/database_nieuws.php");
>
> $query = "INSERT INTO concertinfo (date, event) VALUES
> ('$date1', '$event1')";
> mysql_query($query);
> $query = "INSERT INTO concertinfo (date, event) VALUES
> ('$date2', '$event2')";
> mysql_query($query);
>
> // 'probleemstuk'
>
> for ($n = 0; $n < $aantal_items; $n++) {
> $nummer = 1;
> $date = "$date" . $nummer;
> $event = "$event" . $nummer;
> $query = "INSERT INTO concertinfo (date, event) VALUES
> ('$date', '$event')";
> mysql_query($query);
> $nummer++;
> }
>
> // einde 'probleemstuk'
>
> } else {
>
> print("
> <form method=\"post\" action=\"$PHP_SELF\">
> Hoeveel items wil u toevoegen?
> <input type=\"hidden\" name=\"done\" value=\"yes\">
> <input class=\"default\" type=\"text\" size=\"2\" name=
> \"aantal_items\">
> <input class=\"default\" type=\"submit\" name=\"submit\" value=
> \"Ga verder\">
> </form>");
> }
> }
>
> Het zit hem dus in het 'probleemstuk'.
> Probleem is dus dat er steeds 'getallen' in de database gestopt worden,
> wat ook logisch is (dat zie ik ook wel).
> Alleen weet ik niet hoe ik de variabelen $date1 en $event1 (en daarna
> $date2, $event2 enz) in de database moet zetten.
>
> Iemand die me kan helpen?
>

Ik zi zo snel niet wat je precies aan het doen bent, maar volgens mij wil
je zoiets:

$date = "date";
$nummer = 1;
$var = $date . $nummer; //$var is dus date1
echo $$var; //print de waarde van variabele date1

Let op de dubbele $$, dit is volgens mij wat je zoekt.

StriKe
23/08/04, 14:45
"PietHein" <piethein@WELLICHTVERWIJDERENphavorite.nl> schreef in
news:4129dc4e$0$78279$e4fe514c@news.xs4all.nl:

> Beste StriKe,
>
> Er is een groot verschil tussen wat je in het 1e en het 2e loop-je
> doet. in de eerste loop geef je $date als inhoud een string
> in de tweede geef je $date als inhoud een string, maar wat je wilt is
> hem de inhoud van een andere variabele geven.
> Misschien lukt dat zo $($date.$nummer) anders is er ook nog een andere
> methode voor die ik zou gauw niet kan bedenken.

Deze methode werkt dus niet.

> Let wel, dit is gewoon een hele nare manier om met variabelen om te
> gaan. Maar in je form een array van velden d.m.v. name="date[]" en
> lees deze altijd uit via $_POST[date[$n]] en niet rechtstreeks. Check
> altijd de inhoud van dingen die van formulieren komen en gooi het niet
> direct in de database. Voor je het weet leegt iemand je database, of
> vult hem met concerten waar jij niet mee geassocieerd wilt worden.

Deze dan weer wel :-)
'k Heb het dus opgelost met 'een array'.

Het feit dat ik die gegevens niet 'check' heeft gewoon te maken met het
feit dat dit een tijdelijk scriptje is die ik alleen maar ga gebruiken,
beveiligd achter een .htaccess waar dus niemand anders bijkan ;-)

Bedankt voor je hulp!

--
Groeten,
StriKe

http://www.internetfreakz.be

StriKe
23/08/04, 14:45
Michiel de Roo <yourlove@welovespam.nl> schreef in
news:4129dc74$0$78279$e4fe514c@news.xs4all.nl:

> StriKe wrote:
>> Hello,
>>
>> Ik heb onderstaand script:
>>
>> <?php
>>
>> if ($done == "yes") {
>> print("Je kan <b>" . $aantal_items . "</b> items toevoegen aan de
>> concertinfo-pagina: <br /><br />");
>> $teller = 1;
>> print("<table border=\"0\" cellpadding=\"5\">
>> <tr><td>&nbsp;</td><td><b>Datum
>> (dd-mm)</b></td><td><b>Evenement</b>
>> </td></tr>
>> <form action=\"$PHP_SELF\" method=\"post\">
>> <input type=\"hidden\" name=\"done2\" value=\"yes\">
>> <input type=\"hidden\" name=\"aantal_items\" value=\"$aantal_items
>> \">");
>>
>> for($n=0; $n < $aantal_items; $n++) {
>> $datum = "date" . $teller;
>> $event = "event" . $teller;
>> print("
>> <tr><td><b>$teller</b></td><td><input class=\"default\"
>> type=\"text\" size=\"5\" name=\"$datum\"></td>
>> <td><input class=\"default\" type=\"text\" size=\"70\"
>> name=
>> \"$event\"></td></tr>");
>> $teller++;
>> }
>>
>> print("</table><br />
>> <input class=\"default\" type=\"submit\" name=\"submit\"
>> value=\"In
>> database opnemen!\">
>> <input class=\"default\" type=\"reset\" name=\"reset\"
>> value=\"Alles
>> wissen\">
>> </form>");
>>
>> } else {
>>
>> if ($done2 == "yes") {
>> print("De gegevens werden verwerkt!");
>>
>> include("../includes/database_nieuws.php");
>>
>> $query = "INSERT INTO concertinfo (date, event) VALUES
>> ('$date1', '$event1')";
>> mysql_query($query);
>> $query = "INSERT INTO concertinfo (date, event) VALUES
>> ('$date2', '$event2')";
>> mysql_query($query);
>>
>> // 'probleemstuk'
>>
>> for ($n = 0; $n < $aantal_items; $n++) {
>> $nummer = 1;
>> $date = "$date" . $nummer;
>> $event = "$event" . $nummer;
>> $query = "INSERT INTO concertinfo (date, event) VALUES
>> ('$date', '$event')";
>> mysql_query($query);
>> $nummer++;
>> }
>>
>> // einde 'probleemstuk'
>>
>> } else {
>>
>> print("
>> <form method=\"post\" action=\"$PHP_SELF\">
>> Hoeveel items wil u toevoegen?
>> <input type=\"hidden\" name=\"done\" value=\"yes\">
>> <input class=\"default\" type=\"text\" size=\"2\" name=
>> \"aantal_items\">
>> <input class=\"default\" type=\"submit\" name=\"submit\"
>> value=
>> \"Ga verder\">
>> </form>");
>> }
>> }
>>
>> Het zit hem dus in het 'probleemstuk'.
>> Probleem is dus dat er steeds 'getallen' in de database gestopt
>> worden, wat ook logisch is (dat zie ik ook wel).
>> Alleen weet ik niet hoe ik de variabelen $date1 en $event1 (en daarna
>> $date2, $event2 enz) in de database moet zetten.
>>
>> Iemand die me kan helpen?
>>
>
> Ik zi zo snel niet wat je precies aan het doen bent, maar volgens mij
> wil je zoiets:
>
> $date = "date";
> $nummer = 1;
> $var = $date . $nummer; //$var is dus date1
> echo $$var; //print de waarde van variabele date1
>
> Let op de dubbele $$, dit is volgens mij wat je zoekt.

Idd zoiets zocht ik dus maar 'k heb dan maar geopeteerd voor de oplossing
van PietHein.
Ook jij bedankt voor je hulp!

--
Groeten,
StriKe

http://www.internetfreakz.be

Jeffrey Drooghenbroodt
24/08/04, 21:15
StriKe wrote:

> for ($n = 0; $n < $aantal_items; $n++) {
> $nummer = 1;
> $date = "$date" . $nummer;
> $event = "$event" . $nummer;
> $query = "INSERT INTO concertinfo (date, event) VALUES
> ('$date', '$event')";
> mysql_query($query);
> $nummer++;
> }

Wat is het nut van die $nummer++ onderaan, als je die $nummer helemaal
bovenaan de lus toch terug de waarde '1' toekent?

--
Jeffrey Drooghenbroodt
http://www.pebbels.be/

Rookartikelen kunnen gevaarlijke suggestieve boodschappen bevatten.