status updaten
GroundZero - 30/03/2012 20:29
Lid
Beste,
ik heb in mijn CMS voor mijn site verschillende betaalmethodes.
Ik weergeef deze onder elkaar (zie mijn functie). Echter wil ik nu PER betaalmethode kunnen zeggen of deze geactiveerd is of niet en zo dus de status kunnen updaten in de MYSQL database.
Echter maakt het niet uit welke ik wel of niet aan zet, hij zet altijd de 1e AAN en de rest UIT. Kan iemand mij vertellen wat ik verkeerd doe?
function showPaymentMethods(){
echo '<table width="600px">
<thead>
<th width="10px"><img src="images'.DIRECTORY_SEPARATOR.'delete.png" /></th>
<th width="10px"><img src="images'.DIRECTORY_SEPARATOR.'activated.png" /></th>
<th>Logo</th>
<th>Naam</th>
<th>Standaardkosten</th>
</thead>
<tbody>';
$query = mysql_query('SELECT id, title, cost, logo, activated FROM payment_options');
while($fetch = mysql_fetch_assoc($query))
{
echo '<tr>
<td><input type="checkbox" name="delete[]" value="'.$fetch['id'].'" /></td>
<td>
<input type="checkbox" name="check[]" value="1"/>
<input type="hidden" name="which[]" value="'.$fetch['id'].'" />
</td>
<td><img src="uploads'.DIRECTORY_SEPARATOR.$fetch['logo'].'" alt="'.$fetch['logo'].'" /></td>
<td>'.$fetch['title'].'</td>
<td><input type="text" name="price" value="'.number_format($fetch['cost'], 2, ',', '').'" /></td>
</tr>';
}
echo '</tbody></table>';
}
?>
function showPaymentMethods( ) {
echo '<table width="600px"> <thead>
<th width="10px"><img src="images' . DIRECTORY_SEPARATOR. 'delete.png" /></th>
<th width="10px"><img src="images' . DIRECTORY_SEPARATOR. 'activated.png" /></th>
<th>Logo</th>
<th>Naam</th>
<th>Standaardkosten</th>
</thead>
<tbody>' ;
$query = mysql_query ( 'SELECT id, title, cost, logo, activated FROM payment_options' ) ; {
<td><input type="checkbox" name="delete[]" value="' . $fetch [ 'id' ] . '" /></td>
<td>
<input type="checkbox" name="check[]" value="1"/>
<input type="hidden" name="which[]" value="' . $fetch [ 'id' ] . '" />
</td>
<td><img src="uploads' . DIRECTORY_SEPARATOR. $fetch [ 'logo' ] . '" alt="' . $fetch [ 'logo' ] . '" /></td>
<td>' . $fetch [ 'title' ] . '</td>
<td><input type="text" name="price" value="' . number_format ( $fetch [ 'cost' ] , 2 , ',' , '' ) . '" /></td> </tr>' ;
}
}
?>
De loop voor het updaten in de MYSQL:
$i = 0;
foreach($_POST['which'] as $id)
{
$cb = (!empty($_POST['check'][$i])) ? 1 : 0;
mysql_query('UPDATE payment_options
SET
activated = "'.mysql_real_escape_string($cb).'"
WHERE
id = "'.mysql_real_escape_string($id).'"');
$i++;
}
$i = 0 ;
foreach ( $_POST [ 'which' ] as $id )
{
$cb = ( ! empty ( $_POST [ 'check' ] [ $i ] ) ) ?
1 : 0 ;
SET
WHERE
$i ++;
}
6 antwoorden
Gesponsorde links
christophe195 - 31/03/2012 20:06
Lid
wat staat er in de database ?
dan weten we meteen waar het fout gaat ;)
christophe195 - 01/04/2012 09:14
Lid
de database is heel belangrijk " en dan heb ik het over de inhoud".
daar staat in of het item is aan of uitgezet.
ik wil de inhout van die database zodat ik kan zien of het in de database juist zit.
zo ja --> fout bij het weergeven
zo nee --> fout bij het ingeven.
( zoeiets bespaart ons een hoop werk ;) )
vinTage - 01/04/2012 10:10
Nieuw lid
Als je een checkbox niet aanvinkt , wordt hij ook niet gepost.
Als je dus wilt dat een uitgevinkte cb en bijbehorende kolom wilt updaten, dan moet je dus zelf de waarde 0 meegeven.
dus:
$cb= isset ($_POST['wich']) ? 1 : 0;
versus jouw empty
Bedankt door: GroundZero
GroundZero - 01/04/2012 14:16 (laatste wijziging 01/04/2012 16:26)
Lid
Nee, krijg het echt niet werkend helaas.
function showPaymentMethods(){
echo '<table width="600px">
<thead>
<th width="10px"><img src="images'.DIRECTORY_SEPARATOR.'delete.png" /></th>
<th width="10px"><img src="images'.DIRECTORY_SEPARATOR.'activated.png" /></th>
<th>Logo</th>
<th>Naam</th>
<th>Standaardkosten</th>
</thead>
<tbody>';
$query = mysql_query('SELECT id, title, cost, logo, activated FROM payment_options');
while($fetch = mysql_fetch_assoc($query))
{
echo '<tr>
<td><input type="checkbox" name="delete[]" value="'.$fetch['id'].'" /></td>
<td>
<input type="checkbox" name="check[]" value="1"/>
<input type="hidden" name="which[]" value="'.$fetch['id'].'" />
</td>
<td><img src="uploads'.DIRECTORY_SEPARATOR.$fetch['logo'].'" alt="'.$fetch['logo'].'" /></td>
<td>'.$fetch['title'].'</td>
<td><input type="text" name="price" value="'.number_format($fetch['cost'], 2, ',', '').'" /></td>
</tr>';
}
echo '</tbody></table>';
}
function showPaymentMethods( ) {
echo '<table width="600px"> <thead>
<th width="10px"><img src="images' . DIRECTORY_SEPARATOR. 'delete.png" /></th>
<th width="10px"><img src="images' . DIRECTORY_SEPARATOR. 'activated.png" /></th>
<th>Logo</th>
<th>Naam</th>
<th>Standaardkosten</th>
</thead>
<tbody>' ;
$query = mysql_query ( 'SELECT id, title, cost, logo, activated FROM payment_options' ) ; {
<td><input type="checkbox" name="delete[]" value="' . $fetch [ 'id' ] . '" /></td>
<td>
<input type="checkbox" name="check[]" value="1"/>
<input type="hidden" name="which[]" value="' . $fetch [ 'id' ] . '" />
</td>
<td><img src="uploads' . DIRECTORY_SEPARATOR. $fetch [ 'logo' ] . '" alt="' . $fetch [ 'logo' ] . '" /></td>
<td>' . $fetch [ 'title' ] . '</td>
<td><input type="text" name="price" value="' . number_format ( $fetch [ 'cost' ] , 2 , ',' , '' ) . '" /></td> </tr>' ;
}
}
$i = 0;
foreach($_POST['which'] as $id)
{
$cb = isset($_POST['check'][$i]) ? 1 : 0;
mysql_query('UPDATE payment_options
SET
activated = "'.mysql_real_escape_string($cb).'"
WHERE
id = "'.mysql_real_escape_string($id).'"');
$i++;
}
$i = 0 ;
foreach ( $_POST [ 'which' ] as $id )
{
$cb = isset ( $_POST [ 'check' ] [ $i ] ) ?
1 : 0 ;
SET
WHERE
$i ++;
}
Er zijn 2 checkboxes.
Ik vind beide aan : werkt!!!
Ik vind niks aan : werkt!!!
Ik vind de 1e aan en de 2e niet : werkt!!!
Ik vind de 1e nit aan, de 2e wel : werkt niet!!!
Iemand enig idee?
vinTage - 01/04/2012 21:58 (laatste wijziging 01/04/2012 22:44)
Nieuw lid
jamaar jij checked op check0, check1, check2 , etc, volgens:
Citaat:
$cb = isset($_POST['check '][$i ]) ? 1 : 0;
Maar je maakt ze niet aan volgens:
Citaat:
<input type="checkbox" name="check []" value="1"/>
In bovenstaande moet je nog een getalletje toevoegen he..
Wat ik eerder zei werkt perfect (niet met empty), maar voorwaarde is wel dat de namen kloppen
EDIT
Je post nog eens doorgelezen en ik vrees dat ik je niet helemaal goed heb begrepen.
Onderstaande is denk ik wat je wel bedoeld ?
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
for($i = 0; $i < 4; $i++)
{
echo isset($_POST['wich'][$i]) ? 1 : 0;
echo '<br />';
}
}
?>
<form method="post" action=''>
<input name="wich[0]" type="checkbox" /><br />
<input name="wich[1]" type="checkbox" /><br />
<input name="wich[2]" type="checkbox" /><br />
<input name="wich[3]" type="checkbox" /><br />
<input name="" type="submit" />
</form>
<?php
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'POST' )
{
for ( $i = 0 ; $i < 4 ; $i ++ )
{
}
}
?>
<form method="post" action=''>
<input name="wich[0]" type="checkbox" /><br />
<input name="wich[1]" type="checkbox" /><br />
<input name="wich[2]" type="checkbox" /><br />
<input name="wich[3]" type="checkbox" /><br />
<input name="" type="submit" />
</form>
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.