---
title: "Uppdatera databasen"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/183870-uppdatera-databasen"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "emton"
published: "2010-06-17T15:48:11.000Z"
updated: "2010-06-21T06:07:59.000Z"
replies: 27
views: 952
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/183870-uppdatera-databasen"
---

# Uppdatera databasen

_Sida 1 av 2._

## #1 — emton, 2010-06-17T15:48Z

Jag håller på att göra ett annonsformulär. Icke godkända annonser får 0 i mysql databasen. Har en sida där admin ska kunna ändra dessa till 1 efter att man kollat på dem. Men jag vet får inte till hur jag ska skriva. Tanken är att man kryssar i en checkbox framför den annons som ska godkännas och när man klickar på godkänd så blir 0 till 1. 

```php
 $sql = "SELECT * FROM annonser WHERE godkand = 0";
    
    // Ställ frågan till databasen. Om det inte går: avsluta allt och skriv ut felmeddelan
    $sql_result = mysql_query ($sql) or die ("Query error.");
    echo "<form action =\"admin.php\" method=\"post\">";
    echo "<table border=\"1\" cellpadding=\"10\">";
    echo "<tr><th>Välj</th><th>id</th><th>Förnamn</th><th>Efternamn</th></tr>";
    
    while ($row = mysql_fetch_assoc ($sql_result)) {
          echo "<tr>";
          echo "<td><input type=\"checkbox\" name=\"godkanna\" value=\"" . $row['id'] . "\" /></td>";
          echo "<td>" . $row['id'] . "</td>";
          echo "<td>" . $row['fname'] . "</td>";
          echo "<td>" . $row['ename'] . "</td>";
          echo "</tr>";
    }
    echo "</table>";
    echo "<input type=\"hidden\" name=\"vill_godkanna\" value=\"1\" />";
    echo "<input type=\"submit\" value=\"Godkänn\" />";
    echo "</form>";
    
    $sql = "UPDATE annonser ";
```

Permalänk: https://www.webforum.nu/p/183870

## #2 — Gildebrand, 2010-06-17T18:41Z

Eftersom det kan vara flera poster som inte är godkända, så måste du ha ett unikt namn på checkboxen för varje rad. På sidan admin.php så loopar du igenom alla "checkboxar", och uppdaterar databasen.

```
    while ($row = mysql_fetch_assoc ($sql_result)) { 
          echo "<tr>"; 
          echo "<td><input type=\"checkbox\" id='annons_" . $row['id'] ."' value=\"" . $row['id'] . "\" /></td>"; 
          echo "<td>" . $row['id'] . "</td>"; 
          echo "<td>" . $row['fname'] . "</td>"; 
          echo "<td>" . $row['ename'] . "</td>"; 
          echo "</tr>"; 
    }
```

```
foreach ($_GET['annons'] as $checkbox => $annons)
{
echo $annons;
echo $checkbox;
}
```

Permalänk: https://www.webforum.nu/p/2240875

## #3 — Gildebrand, 2010-06-17T19:07Z

Tänkte halvknasigt där :)

```php
    while ($row = mysql_fetch_assoc ($sql_result)) { 
          echo "<tr>"; 
          echo "<td><input type=\"checkbox\" name=\"$row[id']\" value=\"" . $row['id'] . "\" /></td>"; 
          echo "<td>" . $row['id'] . "</td>"; 
          echo "<td>" . $row['fname'] . "</td>"; 
          echo "<td>" . $row['ename'] . "</td>"; 
          echo "</tr>"; 
    }
```

och admin.php

```php
foreach ($_POST as $checkbox => $text)
{
echo "$checkbox = $text<br/>";
}
```

Borde vara tillräckligt för att du ska kunna göra något av det :)

Permalänk: https://www.webforum.nu/p/2240876

## #4 — rhdf, 2010-06-17T19:20Z

hmm om jag inte minns helt fel så går får man väl en "array" av värden om man har  flera checkboxar med samma namn men olika value

tex.

```
<input type="checkbox" name="toUpdate" value="1" />
<input type="checkbox" name="toUpdate" value="2" />
<input type="checkbox" name="toUpdate" value="3" />
<input type="checkbox" name="toUpdate" value="4" />
```

detta kommer då skickas som 1,2,3,4

vilket gör att man kan peta in det direkt sin SQL
UPDATE tabellen SET field=1 WHERE id IN($\_GET\['annons'\]) 

nu är min PHP lite risig men.. ja idén är den samma

Permalänk: https://www.webforum.nu/p/2240878

## #5 — MickeA.com, 2010-06-17T22:51Z

> **[rhdf skrev:](https://www.webforum.nu/p/1508186)**
>
> hmm om jag inte minns helt fel så går får man väl en "array" av värden om man har  flera checkboxar med samma namn men olika value

Stämmer bra det! Bara att döpa varje checkbox till samma sak och använda annonsens id i databasen som id på checkboxen. Endast de som är ikryssade kommer med i arrayen så kör en enkel:

```php
foreach($_POST['checkbox'] as $checkbox as $item){
   mysql_query(UPDATE tabell SET godkänd = 1 WHERE annons_id = " . $item . " LIMIT 1");
}
```

**Och så glömmer vi inte att skydda oss mot SQL-injektioner, va!?**

**/R**
För att få *inputvärden* som en array, måste du ha med \[\] efter namnet, alltså:

```
<input type="checkbox" name="cbox[]" value="1" />
<input type="checkbox" name="cbox[]" value="2" />
<input type="checkbox" name="cbox[]" value="3" />
<input type="checkbox" name="cbox[]" value="4" />
<input type="checkbox" name="cbox[]" value="5" />
```

Och sen kör du *foreach($\_POST\['cbox'\] as...* enligt exemplet ovan...

Permalänk: https://www.webforum.nu/p/2240892

## #6 — emton, 2010-06-19T20:20Z

Tack snälla allihopa för alla svar. Men oj vad rörigt det blev för en gröngöling på området:). Jag vet inte hur jag ska peta in era förslag. Jag vet ju inte hur många rader det kommer att vara, det beror ju på hur många icke godkända annonser det är. Hur jag än vrider på det så funkar det inte. Jag har ju ingen html i koden ovan så hur är tanken här. Allt ligger på samma sida för adminen. Tror jag har lite svårt att förklara, fråga mig gärna så ska jag försöka förklara bättre hur det är tänkt om det behövs. Jag är jättetacksam för hjälp.

Permalänk: https://www.webforum.nu/p/2241055

## #7 — Gildebrand, 2010-06-19T20:26Z

Hjälper dig gärna, om du säger med vad jag kan hjälpa dig med.

Permalänk: https://www.webforum.nu/p/2241056

## #8 — emton, 2010-06-19T20:44Z

> **[Gildebrand skrev:](https://www.webforum.nu/p/1508379)**
>
> Hjälper dig gärna, om du säger med vad jag kan hjälpa dig med.

Jag får inget av alla bra förslag ovan att funka. Förmodligen sätter jag in det fel. Jag förstår lite av principen med checkboxarna men var i min kod skulle jag sätta in det? Var sätter jag in foreachen?

Permalänk: https://www.webforum.nu/p/2241061

## #9 — Gildebrand, 2010-06-19T20:53Z

Var nog för att de just bara var exempel.
Micke hade en lösning som jag inte kände igen där han skrev

```
foreach($_POST['checkbox'] as $checkbox as $item)
```

Funkar säkert, men har aldrig sett att man använt sig av as två gånger. Brukar köra med 

```
$_POST['checkbox'] as $checkbox => $item
```

Mitt exempel funkar, men bara om man postar data för checkboxarna, och inget annat. Tror du får kolla igenom koden lite, för du verkar kunna PHP ganska bra, eller?

Ska prova själv med Mickes exempel, och återkommer sen.

Permalänk: https://www.webforum.nu/p/2241064

## #10 — Gildebrand, 2010-06-19T21:29Z

```php
 $sql = "SELECT * FROM annonser WHERE godkand = 0";
    
    // Ställ frågan till databasen. Om det inte går: avsluta allt och skriv ut felmeddelan
    $sql_result = mysql_query ($sql) or die ("Query error.");
    echo "<form action =\"save.php\" method=\"post\">";
    echo "<table border=\"1\" cellpadding=\"10\">";
    echo "<tr><th>Välj</th><th>id</th><th>Förnamn</th><th>Efternamn</th></tr>";
    
    while ($row = mysql_fetch_assoc ($sql_result)) {
          echo "<tr>";
          echo "<td><input type=\"checkbox\" name=\"list[]\" value=\"$row['id']\" /></td>";
          echo "<td>" . $row['id'] . "</td>";
          echo "<td>" . $row['fname'] . "</td>";
          echo "<td>" . $row['ename'] . "</td>";
          echo "</tr>";
    }
    echo "</table>";
    echo "<input type=\"hidden\" name=\"vill_godkanna\" value=\"1\" />";
    echo "<input type=\"submit\" value=\"Godkänn\" />";
    echo "</form>";
    
    $sql = "UPDATE annonser ";
```

save.php

```php
<?php
foreach ($_POST['list'] as $text)
{
mysql_query("sqlfråga");
}
?>
```

Permalänk: https://www.webforum.nu/p/2241070

## #11 — emton, 2010-06-19T21:37Z

> **[Gildebrand skrev:](https://www.webforum.nu/p/1508393)**
>
> ```php
>  $sql = "SELECT * FROM annonser WHERE godkand = 0";
>     
>     // Ställ frågan till databasen. Om det inte går: avsluta allt och skriv ut felmeddelan
>     $sql_result = mysql_query ($sql) or die ("Query error.");
>     echo "<form action =\"save.php\" method=\"post\">";
>     echo "<table border=\"1\" cellpadding=\"10\">";
>     echo "<tr><th>Välj</th><th>id</th><th>Förnamn</th><th>Efternamn</th></tr>";
>     
>     while ($row = mysql_fetch_assoc ($sql_result)) {
>           echo "<tr>";
>           echo "<td><input type=\"checkbox\" name=\"list[]\" value=\"$row['id']\" /></td>";
>           echo "<td>" . $row['id'] . "</td>";
>           echo "<td>" . $row['fname'] . "</td>";
>           echo "<td>" . $row['ename'] . "</td>";
>           echo "</tr>";
>     }
>     echo "</table>";
>     echo "<input type=\"hidden\" name=\"vill_godkanna\" value=\"1\" />";
>     echo "<input type=\"submit\" value=\"Godkänn\" />";
>     echo "</form>";
>     
>     $sql = "UPDATE annonser ";
> ```
>
> 
> 
> save.php
>
>
> ```php
> <?php
> foreach ($_POST['list'] as $text)
> {
> mysql_query("sqlfråga");
> }
> ?>
> ```

Tack! Har inte provat ännu men kan man inte få in foreachen på samma sida?

Permalänk: https://www.webforum.nu/p/2241073

## #12 — Gildebrand, 2010-06-19T21:46Z

Självklart kan du det.

```php
 
if(isset($_POST['list']))
{
foreach ($_POST['list'] as $text)
{
mysql_query("sqlfråga");
} 
}

resten av koden här
```

Se bara till att posta till samma sida.

Permalänk: https://www.webforum.nu/p/2241077

## #13 — emton, 2010-06-19T22:12Z

> **[Gildebrand skrev:](https://www.webforum.nu/p/1508400)**
>
> Självklart kan du det.
>
>
> ```php
>  
> if(isset($_POST['list']))
> {
> foreach ($_POST['list'] as $text)
> {
> mysql_query("sqlfråga");
> } 
> }
> 
> resten av koden här
> ```
>
> 
> 
> Se bara till att posta till samma sida.

Min hjärna har förmodligen stannat av för i kväll, men var stoppar jag in if-satsen? Hur jag än skriver så blir det fel. Sen är jag inte säker på att jag får rätt på sql-satsen heller. Slängde in det längst ner just nu, flytta gärna på det om du vill  :). En vacker dag ska även jag klara ut detta, är inte bra på php men kan ju alltid bli. Det går faktiskt framåt om än med myrsteg...

```php
$sql = "SELECT * FROM annonser WHERE godkand = 0"; 
     
    // Ställ frågan till databasen. Om det inte går: avsluta allt och skriv ut felmeddelan 
    $sql_result = mysql_query ($sql) or die ("Query error."); 
    echo "<form action =\"admin.php\" method=\"post\">"; 
    echo "<table border=\"1\" cellpadding=\"10\">"; 
    echo "<tr><th>Välj</th><th>id</th><th>Förnamn</th><th>Efternamn</th></tr>"; 
     
    while ($row = mysql_fetch_assoc ($sql_result)) { 
          echo "<tr>"; 
          echo "<td><input type=\"checkbox\" name=\"list[]\" value=\"$row['id']\" /></td>"; 
          echo "<td>" . $row['id'] . "</td>"; 
          echo "<td>" . $row['fname'] . "</td>"; 
          echo "<td>" . $row['ename'] . "</td>"; 
          echo "</tr>";   
    } 
    echo "</table>"; 
    echo "<input type=\"hidden\" name=\"vill_godkanna\" value=\"1\" />"; 
    echo "<input type=\"submit\" value=\"Godkänn\" />";
    echo "</form>"; 
     
if(isset($_POST['list']))
{
foreach ($_POST['list'] as $text)
{
mysql_query("UPDATE annonser SET godkand = 1 WHERE id = " . $text . "");
} 
}
```

Permalänk: https://www.webforum.nu/p/2241079

## #14 — Gildebrand, 2010-06-19T22:17Z

Spelar inte så stor roll vars du lägger den. Lägg koden med if-satsen innan det andra stycket av din kod bara.

EDIT: Vad gäller SQLen, så är det ganska enkelt, if(isset($\_POST\['list'\]))

```php
{
foreach ($_POST['list'] as $text)
{
mysql_query("Update annonser set Checked=1 where ID=$text");
} 
}
```

Inte helt hundra på att det ska se ut så i MySql, men google är din vän :)

Permalänk: https://www.webforum.nu/p/2241080

## #15 — rhdf, 2010-06-20T12:39Z

inte för att röra till det för emton, men behövs verkligen den där for each loopen
gör inte den att man  skickar en query / checkbox  mot databasen? med IN får man bara EN query

<http://fjolnir.ebpatour.eu/fb/chktest.asp>

Permalänk: https://www.webforum.nu/p/2241099

## #16 — Gildebrand, 2010-06-20T14:10Z

Sedär, det var ju en snygg lösning. Kan skriva ihop ett exempel i PHP åt dig emton.

Permalänk: https://www.webforum.nu/p/2241109

## #17 — Gildebrand, 2010-06-20T15:25Z

```php
if (isset($_POST['list'])){
$toupdate = implode(",",$_POST['list']);
if (mysql_query("Update annonser SET checked=1 WHERE id IN($topupdate)")){
echo "Sparat";
}
else{
echo "Ett fel uppstod, försök igen";
}

$sql = "SELECT * FROM annonser WHERE godkand = 0";  
      
    // Ställ frågan till databasen. Om det inte går: avsluta allt och skriv ut felmeddelan  
    $sql_result = mysql_query ($sql) or die ("Query error.");  
    echo "<form action =\"admin.php\" method=\"post\">";  
    echo "<table border=\"1\" cellpadding=\"10\">";  
    echo "<tr><th>Välj</th><th>id</th><th>Förnamn</th><th>Efternamn</th></tr>";  
      
    while ($row = mysql_fetch_assoc ($sql_result)) {  
          echo "<tr>";  
          echo "<td><input type=\"checkbox\" name=\"list[]\" value=\"$row['id']\" /></td>";  
          echo "<td>" . $row['id'] . "</td>";  
          echo "<td>" . $row['fname'] . "</td>";  
          echo "<td>" . $row['ename'] . "</td>";  
          echo "</tr>";    
    }  
    echo "</table>";  
    echo "<input type=\"hidden\" name=\"vill_godkanna\" value=\"1\" />";  
    echo "<input type=\"submit\" value=\"Godkänn\" />"; 
    echo "</form>";
```

Har inte provat det själv, men borde funka. Om inte, kolla vad du får för felmeddelande.

Permalänk: https://www.webforum.nu/p/2241123

## #18 — rhdf, 2010-06-20T16:36Z

vad händer om man istället för att ha name=\\"list\[\]\\" har name=\\"list\\"

och bara stoppar in $\_POST\['list'\] direkt i sql-satsen?

Permalänk: https://www.webforum.nu/p/2241128

## #19 — Gildebrand, 2010-06-20T16:41Z

Då får man nog bara det sista post-värdet, då de skriver över varandra om de inte är i ett array.

Permalänk: https://www.webforum.nu/p/2241129

## #20 — rhdf, 2010-06-20T17:32Z

Noterade det
.. php är rubbat ibland;)

Permalänk: https://www.webforum.nu/p/2241148

---

Tråden på webben: https://www.webforum.nu/amne/php/183870-uppdatera-databasen  
Nästa sida: https://www.webforum.nu/amne/php/183870-uppdatera-databasen/page2.md
