Avatar billede fitty Nybegynder
09. august 2008 - 00:48 Der er 3 kommentarer og
1 løsning

Opdatering i PHP

Hej allesammen.

Jeg har et problem. Jeg har en formular som jeg skal bruge til at ændre nogle ting i min MYSQL database men jeg kan ikke få det til at virke.

Formularen består af en række billeder. Der er en checkbox for hvert billed. Hvis jeg denne vælger denne checkbox og trykker submit skulle det billed som checkboxen står ud for gerne blive opdateret i databasen sådan at feltet "godkendt" i databasen går fra 0 til 1 (false til true)

Her har i koden. Når jeg køre igennem får jeg ingen fejl men jeg kan se at den køre selve php delen igennem helt forkert. Nogle der kan se hvad der er galt?

Der er 3 steder hvor jeg udskriver et tal. Dette er for at synliggøre hvordan php delen bliver kørt igennem. Når jeg ikke har trykket på checkboxen men bare trykket submit køre den sådan

12323

Det er for et billede. Der burde den jo gerne kun hedde 12 hvis i forstår.

Håber ikke dette blev alt for rodet.

<html>
<body>
<?


if($_POST['submit']){
        $godkendt = $_POST["godkend"];
        $navn = $_POST["navn"];
echo "1";
    foreach($_POST as $godkendt)  {
echo "2";
        if($godkendt == true){
echo "3";
            mysql_query ("UPDATE billeder SET godkendt = TRUE WHERE navn = '$navn'");
           
        }
    }

}


?>
<form action="<?$_SERVER['PHP_SELF'];?>" method="post">
<?
$query = mysql_query("SELECT * FROM billeder WHERE godkendt = false");
while($row = mysql_fetch_assoc($query))
{
?>
<table border="0" width="50%"  height="1">
  <tr>
    <td width="11%" height="1" rowspan="3">
    <img src="../uploads/<?=$row['navn'];?>" width="100"></td>
  </tr>
  <tr>
    <td width="41%" height="1">
<input type="checkbox" name="godkendt" value="true">
<input type="hidden" name="navn" value="<?=$row['navn'];?>"></td>
  </tr>
</table>

<br />
<?
}
?>
<input type="submit" name="submit" value="Godkend">
</form>

</body>
</html>
Avatar billede showsource Seniormester
09. august 2008 - 07:20 #1
Hvis nu du har et id i tabellen, som er unikt for hvert row:

<input type="checkbox" name="godkendt[]" value="<?php echo $row["id"]; ?>">

Ved at bruge [] i navnet på feltet, får du et array
så kan du:

if(isset($_POST["godkendt"]) && is_array($_POST["godkendt"])) {
$sql = "UPDATE `billeder` SET `godkendt` = 1 WHERE `id` IN (".implode(",",$_POST["godkendt"]).")";
echo $sql;
}
Avatar billede coderdk Praktikant
09. august 2008 - 11:00 #2
<html>
<body>
<?

if($_POST['submit'] && is_array( $_POST['godkendt'] ) && count( $_POST['godkendt'] ) > 0 )
{
    foreach($_POST["godkendt"] as $navn) 
    {
        $sql = "UPDATE billeder SET godkendt = TRUE WHERE navn = '$navn'";
        mysql_query( $sql ) or die( mysql_error() );
    }
}


?>
<form action="<?$_SERVER['PHP_SELF'];?>" method="post">
<?

$sql = "SELECT * FROM billeder WHERE godkendt = false";
$query = mysql_query( $sql ) or die( mysql_error() );
while($row = mysql_fetch_assoc($query))
{

?>
<table border="0" width="50%"  height="1">
  <tr>
    <td width="11%" height="1" rowspan="3">
    <img src="../uploads/<?=$row['navn'];?>" width="100"></td>
  </tr>
  <tr>
    <td width="41%" height="1">
    <input type="checkbox" name="godkendt[]" value="<?=$row['navn'];?>">
    </td>
  </tr>
</table>
<br />
<?

}

?>
<input type="submit" name="submit" value="Godkend">
</form>
</body>
</html>
Avatar billede fitty Nybegynder
12. august 2008 - 14:57 #3
Coderdk Din kode virker perfekt. Tak for det
Avatar billede coderdk Praktikant
12. august 2008 - 15:16 #4
:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester