Avatar billede goldeneyes Nybegynder
07. oktober 2004 - 21:29 Der er 6 kommentarer og
1 løsning

mysql - foretag ændring på flere rækker

Jeg troedejeg havde fundet ud af det, men nej.
Jeg har en liste over forskellige rækker fra en mySQL database.

id    aktiv    forside
1      ja        0
3      nej        0
4      ja        1
5      nej        0

tabellen vist ovenover vises på en php side. Det jeg ønsker er at alle rækker, skal virker som en stor form.
Under aktiv skal der være en tjekbox, så man kan vælge om denne post skal være aktiv, under forside skal der være radio-buttons, så en post kan vælges til forside.

Hvordan laver jeg det rent praksis. Nemt nok hvis det kun var en række ad gangen men hvis man skal kunne ændre allesammen på én gang.

Siden med ændringer spytter noget lignende dette ud:
antal=4
aktiv1=aktiv
aktiv4=aktiv
forside=forside1
id1=1
id2=3
id3=4
id4=5

Som man kan se er der 4 rækker, hvor post 1 & 4 skal sættes til aktiv, (to andre deaktiverede)

Det jeg nu skal have strikket sammen er en php-kode der kan opdatere min database.
Nogen der kan komme med lidt hjælp.

Gætter på noget med:
for($i = 0; $i < $antal; $i=$i+1) {

}
Avatar billede detox Nybegynder
07. oktober 2004 - 21:46 #1
Det ideelle vil nok være at bygge din form udfra et kald til din database og derefter opdatere tabellen med de submittede data.
Avatar billede goldeneyes Nybegynder
07. oktober 2004 - 21:53 #2
Ja.
Det er bare lidt svrt, når jeg ikke ved hvormange tækker i tabellen jeg har.
Avatar billede detox Nybegynder
07. oktober 2004 - 22:14 #3
Du kan lave formen i den her stil:

<?php
require 'db.php'; // Forbindelse til database
$res = mysql_query("select * from form order by id");
$form = "<form action='' method='post'>\n";
while ($row = mysql_fetch_assoc($res)) {
    $form .= "id$row[id]<input type='checkbox' name='aktiv$row[id]' value='ja' ";
    if ($row['aktiv'] == 'ja') $form .= "checked='checked' ";
    $form .= "/>\n";
    $form .= "<input type='radio' name='forside' value='$row[id]' ";
    if ($row['forside'] == 1) $form .= "checked='checked' ";
    $form .= "/><br />\n";
}
$form .= "</form>\n";
echo $form;
?>
Avatar billede goldeneyes Nybegynder
07. oktober 2004 - 22:19 #4
Ja. Hvad så med update?!?
Avatar billede detox Nybegynder
07. oktober 2004 - 22:38 #5
Her en lidt bedre version med update. Jeg har testet med tabel: 'aaform' (husk at rette til dit tabelnavn):

<?php
require 'db.php'; // Forbindelse til database
if (isset($_POST['submit'])) {
    $res = mysql_query("select id from aaform order by id");
    while ($row = mysql_fetch_assoc($res)) {
        $forside = $_POST['forside'] == $row['id'] ? 1 : 0;
        $aktiv = isset($_POST['aktiv'][$row['id']]) ? 'ja' : 'nej';
        mysql_query("update aaform set aktiv='$aktiv', forside='$forside' where id=$row[id]");
    }
}
$res = mysql_query("select * from aaform order by id");
$antal = mysql_num_rows($res);
$form = "<form action='' method='post'>\n";
while ($row = mysql_fetch_assoc($res)) {
    $form .= "id$row[id]<input type='checkbox' name='aktiv[$row[id]]' value='ja' ";
    if ($row['aktiv'] == 'ja') $form .= "checked='checked' ";
    $form .= "/>\n";
    $form .= "<input type='radio' name='forside' value='$row[id]' ";
    if ($row['forside'] == 1) $form .= "checked='checked' ";
    $form .= "/><br />\n";
}
$form .= "<input type='hidden' name='antal' value='$antal'>\n";
$form .= "<input type='submit' name='submit' value='Opdater'>\n";
$form .= "</form>\n";
echo $form;
?>
Avatar billede detox Nybegynder
07. oktober 2004 - 22:40 #6
Du har jo ikke brug for antal, så den er slettet:

<?php
require 'db.php'; // Forbindelse til database
if (isset($_POST['submit'])) {
    $res = mysql_query("select id from aaform order by id");
    while ($row = mysql_fetch_assoc($res)) {
        $forside = $_POST['forside'] == $row['id'] ? 1 : 0;
        $aktiv = isset($_POST['aktiv'][$row['id']]) ? 'ja' : 'nej';
        mysql_query("update aaform set aktiv='$aktiv', forside='$forside' where id=$row[id]");
    }
}
$res = mysql_query("select * from aaform order by id");
$form = "<form action='' method='post'>\n";
while ($row = mysql_fetch_assoc($res)) {
    $form .= "id$row[id]<input type='checkbox' name='aktiv[$row[id]]' value='ja' ";
    if ($row['aktiv'] == 'ja') $form .= "checked='checked' ";
    $form .= "/>\n";
    $form .= "<input type='radio' name='forside' value='$row[id]' ";
    if ($row['forside'] == 1) $form .= "checked='checked' ";
    $form .= "/><br />\n";
}
$form .= "<input type='submit' name='submit' value='Opdater'>\n";
$form .= "</form>\n";
echo $form;
?>
Avatar billede goldeneyes Nybegynder
07. oktober 2004 - 23:18 #7
perfekt.
Tak for det.
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