PDA

Bekijk Volledige Versie : $_POST['var[$i]'] in mysql lukt niet



StriKe
22/06/04, 12:25
Hallo,

Ik zou in een tabel via mysql volgende variabele moeten stoppen:
$var[$i]

$var is een tekstveld waarvan de inhoud vanuit een formulier komt, de $i
is een var die "een tellertje" voorstelt.

Het zit zo: ik heb een poll-script waarbij ik eerst via een formulier
aangeef hoeveel opties ik wil 'instellen'. Het aantal opties wordt dan
voorgesteld door die $i,

dus met $var[$i] wil ik telkens de volgende optie instellen, en dan
achteraf in de tabel wegschrijven.

Aangezien de server waar het script op komt te staan met superglobals
werkt ($_POST) moet ik dat in die vorm zien te krijgen, ik had daartoe
voorlopig dit al:

mysql_query("INSERT INTO poll_opties (pollid,optie,votes) VALUES ('" .
$_POSt['poll_id'] . "','" . $_POST['optie[$i]'] . "','0')") or die
(mysql_error());

Het gaat hem dus vooral op die $_POST['optie[$i]'] ... Weet iemand hoe ik
dat kan oplossen? (Er komt geen error, er wordt gewoon niets in de tabel
geschreven ...

--
Groeten,
StriKe

http://www.internetfreakz.be

Michiel de Roo
22/06/04, 12:35
StriKe wrote:
> Hallo,
>
> Ik zou in een tabel via mysql volgende variabele moeten stoppen:
> $var[$i]
>
> $var is een tekstveld waarvan de inhoud vanuit een formulier komt, de $i
> is een var die "een tellertje" voorstelt.
>
> Het zit zo: ik heb een poll-script waarbij ik eerst via een formulier
> aangeef hoeveel opties ik wil 'instellen'. Het aantal opties wordt dan
> voorgesteld door die $i,
>
> dus met $var[$i] wil ik telkens de volgende optie instellen, en dan
> achteraf in de tabel wegschrijven.
>
> Aangezien de server waar het script op komt te staan met superglobals
> werkt ($_POST) moet ik dat in die vorm zien te krijgen, ik had daartoe
> voorlopig dit al:
>
> mysql_query("INSERT INTO poll_opties (pollid,optie,votes) VALUES ('" .
> $_POSt['poll_id'] . "','" . $_POST['optie[$i]'] . "','0')") or die
> (mysql_error());
>
> Het gaat hem dus vooral op die $_POST['optie[$i]'] ... Weet iemand hoe ik
> dat kan oplossen? (Er komt geen error, er wordt gewoon niets in de tabel
> geschreven ...
>

Probeer het eens met $_POST[$optie[$i]].

StriKe
22/06/04, 12:55
Michiel de Roo <yourlove@welovespam.nl> schreef in
news:40d8082e$0$42417$e4fe514c@news.xs4all.nl:

> StriKe wrote:
>> Hallo,
>>
>> Ik zou in een tabel via mysql volgende variabele moeten stoppen:
>> $var[$i]
>>
>> $var is een tekstveld waarvan de inhoud vanuit een formulier komt, de
>> $i is een var die "een tellertje" voorstelt.
>>
>> Het zit zo: ik heb een poll-script waarbij ik eerst via een formulier
>> aangeef hoeveel opties ik wil 'instellen'. Het aantal opties wordt
>> dan voorgesteld door die $i,
>>
>> dus met $var[$i] wil ik telkens de volgende optie instellen, en dan
>> achteraf in de tabel wegschrijven.
>>
>> Aangezien de server waar het script op komt te staan met superglobals
>> werkt ($_POST) moet ik dat in die vorm zien te krijgen, ik had
>> daartoe voorlopig dit al:
>>
>> mysql_query("INSERT INTO poll_opties (pollid,optie,votes) VALUES ('"
>> . $_POSt['poll_id'] . "','" . $_POST['optie[$i]'] . "','0')") or die
>> (mysql_error());
>>
>> Het gaat hem dus vooral op die $_POST['optie[$i]'] ... Weet iemand
>> hoe ik dat kan oplossen? (Er komt geen error, er wordt gewoon niets
>> in de tabel geschreven ...
>
> Probeer het eens met $_POST[$optie[$i]].

Nog steeds geen inhoud in die tabel te bespeuren :-(

--
Groeten,
StriKe

http://www.internetfreakz.be

Michiel de Roo
22/06/04, 12:55
StriKe wrote:
> Michiel de Roo <yourlove@welovespam.nl> schreef in
> news:40d8082e$0$42417$e4fe514c@news.xs4all.nl:
>
>
>>StriKe wrote:
>>
>>>Hallo,
>>>
>>>Ik zou in een tabel via mysql volgende variabele moeten stoppen:
>>>$var[$i]
>>>
>>>$var is een tekstveld waarvan de inhoud vanuit een formulier komt, de
>>>$i is een var die "een tellertje" voorstelt.
>>>
>>>Het zit zo: ik heb een poll-script waarbij ik eerst via een formulier
>>>aangeef hoeveel opties ik wil 'instellen'. Het aantal opties wordt
>>>dan voorgesteld door die $i,
>>>
>>>dus met $var[$i] wil ik telkens de volgende optie instellen, en dan
>>>achteraf in de tabel wegschrijven.
>>>
>>>Aangezien de server waar het script op komt te staan met superglobals
>>>werkt ($_POST) moet ik dat in die vorm zien te krijgen, ik had
>>>daartoe voorlopig dit al:
>>>
>>>mysql_query("INSERT INTO poll_opties (pollid,optie,votes) VALUES ('"
>>>. $_POSt['poll_id'] . "','" . $_POST['optie[$i]'] . "','0')") or die
>>>(mysql_error());
>>>
>>>Het gaat hem dus vooral op die $_POST['optie[$i]'] ... Weet iemand
>>>hoe ik dat kan oplossen? (Er komt geen error, er wordt gewoon niets
>>>in de tabel geschreven ...
>>
>>Probeer het eens met $_POST[$optie[$i]].
>
>
> Nog steeds geen inhoud in die tabel te bespeuren :-(
>

Misschien even wat variabelen als output geven, dan zie je wellicht wat er
fout gaat.

Bv.
trigger_error($optie[$i]);
trigger_error($_POST[$optie[$i]]);
trigger_error("INSERT INTO poll_opties (pollid,optie,votes) VALUES ('"
>>>. $_POSt['poll_id'] . "','" . $_POST[$optie[$i]] . "','0')");

StriKe
22/06/04, 13:45
Michiel de Roo <yourlove@welovespam.nl> schreef in
news:40d80e2b$0$6966$e4fe514c@news.xs4all.nl:

> StriKe wrote:
>> Michiel de Roo <yourlove@welovespam.nl> schreef in
>> news:40d8082e$0$42417$e4fe514c@news.xs4all.nl:
>>
>>
>>>StriKe wrote:
>>>
>>>>Hallo,
>>>>
>>>>Ik zou in een tabel via mysql volgende variabele moeten stoppen:
>>>>$var[$i]
>>>>
>>>>$var is een tekstveld waarvan de inhoud vanuit een formulier komt,
>>>>de $i is een var die "een tellertje" voorstelt.
>>>>
>>>>Het zit zo: ik heb een poll-script waarbij ik eerst via een
>>>>formulier aangeef hoeveel opties ik wil 'instellen'. Het aantal
>>>>opties wordt dan voorgesteld door die $i,
>>>>
>>>>dus met $var[$i] wil ik telkens de volgende optie instellen, en dan
>>>>achteraf in de tabel wegschrijven.
>>>>
>>>>Aangezien de server waar het script op komt te staan met
>>>>superglobals werkt ($_POST) moet ik dat in die vorm zien te krijgen,
>>>>ik had daartoe voorlopig dit al:
>>>>
>>>>mysql_query("INSERT INTO poll_opties (pollid,optie,votes) VALUES ('"
>>>>. $_POSt['poll_id'] . "','" . $_POST['optie[$i]'] . "','0')") or die
>>>>(mysql_error());
>>>>
>>>>Het gaat hem dus vooral op die $_POST['optie[$i]'] ... Weet iemand
>>>>hoe ik dat kan oplossen? (Er komt geen error, er wordt gewoon niets
>>>>in de tabel geschreven ...
>>>
>>>Probeer het eens met $_POST[$optie[$i]].
>>
>>
>> Nog steeds geen inhoud in die tabel te bespeuren :-(
>>
>
> Misschien even wat variabelen als output geven, dan zie je wellicht
> wat er fout gaat.

Ik neem aan dat je dit bedoelde via een 'print'?

> trigger_error($optie[$i]);

Deze geeft:
trigger_error();

> trigger_error($_POST[$optie[$i]]);
> trigger_error("INSERT INTO poll_opties (pollid,optie,votes) VALUES ('"
> >>>. $_POSt['poll_id'] . "','" . $_POST[$optie[$i]] . "','0')");

Deze geven elk een notice waarvan de eerste
Notice: in c:\server_root\www\retrofm\admin\poll.php on line 135 is ...

--
Groeten,
StriKe

http://www.internetfreakz.be

Michiel de Roo
22/06/04, 13:55
StriKe wrote:
> Michiel de Roo <yourlove@welovespam.nl> schreef in
> news:40d80e2b$0$6966$e4fe514c@news.xs4all.nl:
>
>
>>StriKe wrote:
>>
>>>Michiel de Roo <yourlove@welovespam.nl> schreef in
>>>news:40d8082e$0$42417$e4fe514c@news.xs4all.nl:
>>>
>>>
>>>
>>>>StriKe wrote:
>>>>
>>>>
>>>>>Hallo,
>>>>>
>>>>>Ik zou in een tabel via mysql volgende variabele moeten stoppen:
>>>>>$var[$i]
>>>>>
>>>>>$var is een tekstveld waarvan de inhoud vanuit een formulier komt,
>>>>>de $i is een var die "een tellertje" voorstelt.
>>>>>
>>>>>Het zit zo: ik heb een poll-script waarbij ik eerst via een
>>>>>formulier aangeef hoeveel opties ik wil 'instellen'. Het aantal
>>>>>opties wordt dan voorgesteld door die $i,
>>>>>
>>>>>dus met $var[$i] wil ik telkens de volgende optie instellen, en dan
>>>>>achteraf in de tabel wegschrijven.
>>>>>
>>>>>Aangezien de server waar het script op komt te staan met
>>>>>superglobals werkt ($_POST) moet ik dat in die vorm zien te krijgen,
>>>>>ik had daartoe voorlopig dit al:
>>>>>
>>>>>mysql_query("INSERT INTO poll_opties (pollid,optie,votes) VALUES ('"
>>>>>. $_POSt['poll_id'] . "','" . $_POST['optie[$i]'] . "','0')") or die
>>>>>(mysql_error());
>>>>>
>>>>>Het gaat hem dus vooral op die $_POST['optie[$i]'] ... Weet iemand
>>>>>hoe ik dat kan oplossen? (Er komt geen error, er wordt gewoon niets
>>>>>in de tabel geschreven ...
>>>>
>>>>Probeer het eens met $_POST[$optie[$i]].
>>>
>>>
>>>Nog steeds geen inhoud in die tabel te bespeuren :-(
>>>
>>
>>Misschien even wat variabelen als output geven, dan zie je wellicht
>>wat er fout gaat.
>
>
> Ik neem aan dat je dit bedoelde via een 'print'?
>
>
>>trigger_error($optie[$i]);
>
>
> Deze geeft:
> trigger_error();
>
>
>>trigger_error($_POST[$optie[$i]]);
>>trigger_error("INSERT INTO poll_opties (pollid,optie,votes) VALUES ('"
>>
>>>>>. $_POSt['poll_id'] . "','" . $_POST[$optie[$i]] . "','0')");
>
>
> Deze geven elk een notice waarvan de eerste
> Notice: in c:\server_root\www\retrofm\admin\poll.php on line 135 is ...
>

Dan is $optie[$i] leeg. Ik kan niet zien wat er in zou moeten zitten, maar
blijkbaar zit er niks in.

StriKe
22/06/04, 16:45
Michiel de Roo <yourlove@welovespam.nl> schreef in
news:40d81b4f$0$566$e4fe514c@news.xs4all.nl:

>>>Misschien even wat variabelen als output geven, dan zie je wellicht
>>>wat er fout gaat.
>>
>>
>> Ik neem aan dat je dit bedoelde via een 'print'?
>>
>>
>>>trigger_error($optie[$i]);
>>
>>
>> Deze geeft:
>> trigger_error();
>>
>>
>>>trigger_error($_POST[$optie[$i]]);
>>>trigger_error("INSERT INTO poll_opties (pollid,optie,votes) VALUES
>>>('"
>>>
>>>>>>. $_POSt['poll_id'] . "','" . $_POST[$optie[$i]] . "','0')");
>>
>>
>> Deze geven elk een notice waarvan de eerste
>> Notice: in c:\server_root\www\retrofm\admin\poll.php on line 135 is
>> ...
>>
>
> Dan is $optie[$i] leeg. Ik kan niet zien wat er in zou moeten zitten,
> maar blijkbaar zit er niks in.
>

<input type=\"text\" name=\"optie[$i]\" size=\"40\">

Dat moet 'er in komen'.
Ik dacht toch dat dit vrij correct was of scheelt er toch nog iets aan
die "name"?

--
Groeten,
StriKe

http://www.internetfreakz.be

Daniel Tryba
22/06/04, 17:05
StriKe <usenet@internetfreakz.be> wrote:
>> Dan is $optie[$i] leeg. Ik kan niet zien wat er in zou moeten zitten,
>> maar blijkbaar zit er niks in.
>>
>
> <input type=\"text\" name=\"optie[$i]\" size=\"40\">
>
> Dat moet 'er in komen'.
> Ik dacht toch dat dit vrij correct was of scheelt er toch nog iets aan
> die "name"?

Het helpt veel meer als je gewoon eens je code post en niet elke keer
een klein stukje waarvan we niet weten in het geheel het thuis hoort...

Bovenstaande zal in de gegenereerde source opduiken als (indien $i=0)
.... name="optie[0]" ....

Indien het dan gepost wordt zal je het uit $_POST kunnen vissen met:
$_POST["optie"][0]

(print_r($_POST) is je vriend)

Dit omdat PHP een extra betekenis geeft aan form velden die eindigen op
/[\w*]$/

--

Daniel Tryba

StriKe
22/06/04, 17:35
Daniel Tryba <news_nl.internet.www.server-side@canopus.nl> schreef in
news:cb9h7e$pl5$1@news.tue.nl:

> Het helpt veel meer als je gewoon eens je code post en niet elke keer
> een klein stukje waarvan we niet weten in het geheel het thuis hoort...
>
> Bovenstaande zal in de gegenereerde source opduiken als (indien $i=0)
> ... name="optie[0]" ....
>
> Indien het dan gepost wordt zal je het uit $_POST kunnen vissen met:
> $_POST["optie"][0]
>
> (print_r($_POST) is je vriend)
>
> Dit omdat PHP een extra betekenis geeft aan form velden die eindigen op
> /[\w*]$/

Bij deze de volledige code (vrij lang dus)
Alvast thx voor de hulp!

<?php
if($_POST['action'] == "save_poll") {
if(!is_numeric($_POST['aantal_opties'])) {
echo "<font color=red>Je hebt geen correct cijfer gegeven voor
het aantal opties!</font>";
exit;
}

if(!$_POST['vraag']) {
echo "<font color=red>Je hebt geen vraag ingevuld!</font>";
exit;
}

// check naar actieve poll (en sluit af)
$query = mysql_query("SELECT id FROM polls ORDER BY id DESC LIMIT
0,1") or die(mysql_error());
if(mysql_num_rows($query) > 0) {
$oude_poll = mysql_result($query,0,"id");
mysql_query("UPDATE polls SET einde='" . time() . "' WHERE
id='" . $oude_poll . "'") or die(mysql_error());
}
// nieuwe poll aanmaken:

mysql_query("INSERT INTO polls (vraag,start,einde) VALUES ('" .
addslashes($_POST['vraag']) . "','" . time() . "','0')") or die
(mysql_error());

$query = mysql_query("SELECT id FROM polls ORDER BY id DESC LIMIT
0,1") or die(mysql_error());
$poll_id = mysql_result($query,0,"id");

for($i=0;$i < $_POST['aantal_opties'];$i++) {

// mysql_query("INSERT INTO poll_opties (pollid,optie,votes)
VALUES ('" . $poll_id . "','" . addslashes($optie[$i]) . "','0')") or die
(mysql_error());
mysql_query("INSERT INTO poll_opties (pollid,optie,votes)
VALUES ('" . $poll_id . "','" . $_POST[$optie[$i]] . "','0')") or die
(mysql_error());
}

echo "De poll is succesvol gestart!<br><br>";
} elseif($_POST['action'] == "nieuwe_poll") {
if(!is_numeric($_POST['aantal_opties'])) {
echo "<font color=red>Je hebt geen correct cijfer gegeven voor
het aantal opties!</font>";
exit;
}

if(!$_POST['vraag']) {
echo "<font color=red>Je hebt geen vraag ingevuld!</font>";
exit;
}

$vraag = $_POST['vraag'];
$aantal_opties = $_POST['aantal_opties'];

$form_html = "";
for($i=1;$i <= $aantal_opties;$i++) {
$kleur = ($i % 2) ? "#E8E8E8" : "#CCCCCC";

$form_html .= "<tr bgcolor=\"" . $kleur . "\"><td><b>Optie " . $i
.. "</b></td><td><input type=\"text\" name=\"optie[i]\" size=\"40\"></td>
</tr>\n";
}
?>

<form method="POST" action="<?php echo $PHP_SELF; ?>">
<input type="hidden" value="save_poll" name="action">
<input type="hidden" value="<?php echo $aantal_opties; ?>"
name="aantal_opties">
<table border="1" width="65%">
<tr bgcolor="#CCCCCC"><td colspan="2"><center><b>Vul de opties in.</b>
</center></td></tr>
<tr bgcolor="#E8E8E8">
<td><b>Vraag : </b></td>
<td><input type="text" name="vraag" size="40" value="<?php echo $vraag;
?>"></td>
</tr>

<?php echo $form_html; ?>

<tr bgcolor="#E8E8E8">
<td colspan="2"><center><input type="submit" name="opslaan"
value="Opslaan!"></center></td>
</tr>

</table>
</form>


<?php
} else {
?>

<form method="POST" action="<?php echo $PHP_SELF; ?>">
<input type="hidden" value="nieuwe_poll" name="action">
<table border="1" width="65%">
<tr bgcolor="#CCCCCC"><td colspan="2"><center>Geef de vraag in en het
aantal opties, om verder te gaan met het aanmaken van de poll.</center>
</td></tr>
<tr bgcolor="#E8E8E8">
<td><b>Vraag : </b></td>
<td><input type="text" name="vraag" size="40"></td>
</tr>

<tr bgcolor="#CCCCCC">
<td><b>Aantal Opties : </b></td>
<td><input type="text" name="aantal_opties" size="10" maxlength="2"></td>
</tr>

<tr bgcolor="#E8E8E8">
<td colspan="2"><center><input type="submit" name="opslaan"
value="Aanmaken!"></center></td>
</tr>

</table>
</form>

<?php
}
?>

--
Groeten,
StriKe

http://www.internetfreakz.be

Daniel Tryba
22/06/04, 17:55
StriKe <usenet@internetfreakz.be> wrote:
>> (print_r($_POST) is je vriend)
>>
>> Dit omdat PHP een extra betekenis geeft aan form velden die eindigen op
>> /[\w*]$/
>
> Bij deze de volledige code (vrij lang dus)
> Alvast thx voor de hulp!

Het was handiger geweest als je eerst eens naar mijn opmerkingen had
gekeken en wellicht had geimplementeerd...

[knip]
> . "</b></td><td><input type=\"text\" name=\"optie[i]\" size=\"40\"></td>
^^^^^^^^

Ik mis hier een '$'

--

Daniel Tryba