php implode probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo allemaal,

ik hoop dat jullie me kunnen helpen met dit stukje php code.

wat ik wil doen is het volgende
ik heb een database met vragen, deze vragen kunnen 4 typen zijn:
Ja/nee,
open,
meerkeuze
meerdere antwoorden ( opties genoemd)

Deze vragen staan in de tabel en hebben een eigen vraag id (PVID)
een PHP pagina haalt de vragen uit de tabel en haalt de mogelijke antwoorden uit een andere tabel.
Vervolgens worden de ingevulde antwoorden naar update.php gestuurd die de antwoorden middels de update funtie update in de database.

dit gaat goed voor alle vraag typen met uitzondering van de vraag type opties.
voor dit vraag type moet eerst een implode functie gebruikt worden.

met de implode functie lukt het me om de antwoorden bij elkaar in variabele te zetten en dus in de database.

Het probleem is dat er meerder vragen op het scherm staan en dat er dus ook meerdere 'optie' vragen zijn.
De waarden van al deze 'optie' vragen worden bij elkaar in 1 variabele gezet. Dit moet dus per vraag zijn.
bijvoorbeeld vraag 1 heeft antwoord: 1 en 2 vraag 2 heeft antwoord c en d
dit wordt door de implode funtie 1,2,c,d


hier de codes:
dit is de pagina met vragen
<?php
include "../connect.php";
$pid = $_GET['pid'];

echo "<title>Product vragen</title>";
echo "<h1>Product vragen beantwoorden / wijzigen</h1>";

$sql_prdvr = "Select * from Prodvra Where pid=$pid ";
$resultaat_prdvr = mysql_query($sql_prdvr) or die ("fout bij uitvoeren");

echo "<form action='update.php' method='post'>";
echo "<br><center><input type='submit' name='send' value='Verstuur'></center><br>";
echo "<table>";
echo "<tr><th class='row1'>Vraag</th><th class='row1' colspan='3'>Antwoord</th></tr> ";

while ($record = mysql_fetch_assoc($resultaat_prdvr)){
echo "<input type='hidden' name='pvid[]' value='$record[pvid]'>";
echo "<input type='hidden' name='pid[]' value='$record[pid]'>";
echo "<input type='hidden' name='type[]' value='$record[type]'>";
echo "<tr><td>$record[vraag]:</td>";


// hier wordt de met if codes de actie voor de typen vraag bepaald

// hier is de if een opties vraag
if ($record[type]=='opties') {$sql_vrant = "Select * from Vrant Where vid=$record[vid] ";
$antwoord = mysql_query($sql_vrant) or die ("fout bij uitvoeren");
echo "<INPUT TYPE='hidden' NAME='antwoord[]' VALUE='$record[pvid]'><br>";
echo "<td>";
while ($antw = mysql_fetch_assoc($antwoord)){
echo "<INPUT TYPE='checkbox' NAME='optie[]' VALUE='$antw[antwoord]'>$antw[antwoord]<br>";
}
echo "</td>";
}

echo "</td></tr>";
}

?>
dit is de update.php pagina
<?php
include "../connect.php";

$size = count($_POST['antwoord']);
$i = 0;

while ($i < $size) {

//$optie= $_POST['optie'][$i];
$antwoord= $_POST['antwoord'][$i];
$pvid = $_POST['pvid'][$i];
$pid = $_POST['pid'][$i];
$type=$_POST['type'][$i];

if ($type=='opties') {
$antwoord = implode(",", $_POST['optie']);
}

//echo "pvid: $pvid<br>";
//echo "antwoord: $antwoord<br>";
//echo "type: $type<br>";
$query = "UPDATE Prodvra SET `antwoord` = '$antwoord' WHERE `pvid` = '$pvid' LIMIT 1";
mysql_query($query) or die ("Error in query: $query");
++$i;
}

//header ("location:antwoorden.php?pid=$pid");

?>

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

je kunt voor je veldnamen ipv optie[] ook optie[$id] gebruiken. In dat geval wordt het niet willekeurig achter elkaar in een array gezet, maar kun je elke optie weer op het id terug vinden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kun je me iets verder helpen?

je bedoelt waarschijnlijk dit in de vraagpagina
echo "<INPUT TYPE='checkbox' NAME='optie[$id]' VALUE='$antw[antwoord]'>$antw[antwoord]<br>";

ik heb er dit van gemaakt
echo "<INPUT TYPE='checkbox' NAME='optie['$pvid']' VALUE='$antw[antwoord]'>$antw[antwoord]<br>";

en boven aan de pagina: $record[pvid]=$pvid;

maar wat moet er dan in de update pagina?

if ($type=='opties') {
$antwoord = implode(",", $_POST['optie']);
}

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Waarom geef je alle antwoordmogelijkheden bij elke vraag dezelfde naam? Waarom gebruik je het PVID van de vraag niet gewoon als een prefix voor de mogelijke antwoord velden. Bij vraag #12, als antwoorden:
code:
1
<input type="checkbox" name="optie_<?=$pvid?>[<?=$antwoordId?>]" value="...">

Anyone who gets in between me and my morning coffee should be insecure.