select onchange pakt altijd de laatste regel.

Status
Niet open voor verdere reacties.

Jarcol

Gebruiker
Lid geworden
23 aug 2007
Berichten
18
Hallo allemaal,

Ik heb een scriptje waarvan ik wil dat de status gewijzigd wordt van de regel waarvan ik de status aanpas. Echter pakt hij altijd de laatste regel van de SQL-query. Ik doe dus iets fout, maar ik weet niet hoe ik dit voor elkaar moet krijgen. Ik denk dat ik een selectedIndex moet gebruiken, maar weet niet in welke context.

Dit is mn code:
PHP:
<form action='overview.php' method='POST'>
<table width='100%'>
<tr style='font-family:verdana; font-size:11; font-weight:bold'>
	<td>Afspraaknummer</td>
	<td width='30%'>Afspraak</td>
	<td>Met</td>
	<td>Bereikbaar via</td>
	<td>Deadline</td>
	<td>Status</td>
</tr>

<?php
while($result = mysql_fetch_object($query))
{
$status = $result->status;
$index = $result->pk_index;
echo "<tr style='font-family:verdana; font-size:11'>";
  echo "<td valign='top'>". $index ."<input type='hidden' name='index' value='". $index ."'></td>";
  echo "<td valign='top'>". $result->context ."</td>";
  echo "<td valign='top'>". $result->persoon ."</td>";
  echo "<td valign='top'>". $result->bereikbaar ."</td>";
  echo "<td valign='top'>". $result->deadline ."</td>";
  echo "<td valign='top'><SELECT onChange='this.form.submit(<!-- Hier ergens selectedIndex??? --/>)' style='font-family:verdana; font-size:11' name='status'>";


echo $status;
switch($status) {
case 'Open':
	echo "<OPTION selected value='Open'>Open</option>
	      <OPTION value='In behandeling'>In behandeling</option>
	      <OPTION value='Gesloten'>Gesloten</option>";
	break;
case 'In behandeling':
	echo "<OPTION value='Open'>Open</option><OPTION selected value='In behandeling'>In behandeling</option><OPTION value='Gesloten'>Gesloten</option>";
	break;
case 'Gesloten':
	echo "<OPTION value='Open'>Open</option><OPTION value='In behandeling'>In behandeling</option><OPTION selected value='Gesloten'>Gesloten</option>";
	break;
}


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

}

echo "</table>";
echo "</form>";


Alvast bedankt voor de hulp!
 
Voor zover ik het kan zien: je maakt de "select" en tabel aan ín de while-lus. Daar gaat het dus fout, aangezien je zo voor elk record in de resultset een tabel + select krijgt, met daarin maar 1 optie.

Lijkt mij dus dat je de tabel etc voor de while-lus zet en de switch ín de lus :)
 
Voor zover ik het kan zien: je maakt de "select" en tabel aan ín de while-lus. Daar gaat het dus fout, aangezien je zo voor elk record in de resultset een tabel + select krijgt, met daarin maar 1 optie.

Lijkt mij dus dat je de tabel etc voor de while-lus zet en de switch ín de lus :)

Bedankt voor je snelle reactie, maar dat is wel goed, want ik ben een takenlijst aan het maken en ik wil voor elke taak dmv een 'select-drowdown ding' de status kunnen aanpassen van open naar in behandeling en gesloten.

En de table staat niet in de while lus, alleen de <tr>'s en dat klopt aangezien ik meerdere table-rows heb.

Ik heb dus meerdere selects in een tabel staan en ik wil dat alleen de status van de regel die ik aanpas (via de select)

het gaat me dus om de onChange in de SELECT, wat daar aangepast moet worden voor het gewenste resultaat
 
Volgens mij heb je zelf het antwoord al gegeven =)

PHP:
echo "<tr style='font-family:verdana; font-size:11'>";
  echo "<td valign='top'>". $index ."<input type='hidden' name='index' value='". $index ."'></td>";
  echo "<td valign='top'>". $result->context ."</td>";
  echo "<td valign='top'>". $result->persoon ."</td>";
  echo "<td valign='top'>". $result->bereikbaar ."</td>";
  echo "<td valign='top'>". $result->deadline ."</td>";
  echo "<td valign='top'><SELECT onChange='this.form.submit(<!-- Hier ergens selectedIndex??? --/>)' style='font-family:verdana; font-size:11' name='status'>";

je hidden input doet op dit moment niets... Deze zou je kunnen aanroepen zodra je het formulier hebt verstuurd. Natuurlijk pakt deze dan de laatste waarde van al je rijen. Een mogelijkheid is dan om in elk afzonderlijke while-statement het formulier te openen en te sluiten...

Als ik nu snel kijk, kan je ook gewoon je $index meegeven aan een functie, die je bij onchange aanroept. Deze functie zorgt er dan voor dat je waardes gechecked worden (als het nodig is) en submit deze waardes naar je database....
 
Volgens mij heb je zelf het antwoord al gegeven =)

PHP:
echo "<tr style='font-family:verdana; font-size:11'>";
  echo "<td valign='top'>". $index ."<input type='hidden' name='index' value='". $index ."'></td>";
  echo "<td valign='top'>". $result->context ."</td>";
  echo "<td valign='top'>". $result->persoon ."</td>";
  echo "<td valign='top'>". $result->bereikbaar ."</td>";
  echo "<td valign='top'>". $result->deadline ."</td>";
  echo "<td valign='top'><SELECT onChange='this.form.submit(<!-- Hier ergens selectedIndex??? --/>)' style='font-family:verdana; font-size:11' name='status'>";

je hidden input doet op dit moment niets... Deze zou je kunnen aanroepen zodra je het formulier hebt verstuurd. Natuurlijk pakt deze dan de laatste waarde van al je rijen. Een mogelijkheid is dan om in elk afzonderlijke while-statement het formulier te openen en te sluiten...

Als ik nu snel kijk, kan je ook gewoon je $index meegeven aan een functie, die je bij onchange aanroept. Deze functie zorgt er dan voor dat je waardes gechecked worden (als het nodig is) en submit deze waardes naar je database....

Ik heb nu de FORM per <tr> gedaan en dat loste het op!

Bedankt voor de snelle antwoorden!
 
Pff wat een boel code voor het selecteren van het juiste veldje...

Probeer dit eens:
PHP:
while($result = mysql_fetch_object($query)) {
  $status_array = array("Open", "In Behandeling", "Gesloten"); 
  $status = $result->status; 
  $index = $result->pk_index; 
  echo "<tr style='font-family:verdana; font-size:11'>"; 
  echo "<td valign='top'>". $index ."<input type='hidden' name='index' value='". $index ."'></td>"; 
  echo "<td valign='top'>". $result->context ."</td>"; 
  echo "<td valign='top'>". $result->persoon ."</td>"; 
  echo "<td valign='top'>". $result->bereikbaar ."</td>"; 
  echo "<td valign='top'>". $result->deadline ."</td>"; 
  echo "<td valign='top'>
   <select onChange='this.form.submit(<!-- Hier ergens selectedIndex??? --/>)' style='font-family:verdana; font-size:11' name='status'>"; 


  echo $status;
  // Juiste status selecteren
  foreach($status_array AS $stat) 
    echo'<option value="' . $stat . '"';
    if($status == $stat) { 
      echo ' selected'; 
    } 
    echo '>' . $stat .'</option>'; 
  }
  echo "</select></td></tr>"; 
} 

echo "</table></form>";
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan