Avatar billede smeier Nybegynder
06. september 2005 - 17:32 Der er 4 kommentarer og
1 løsning

update flere rækker i mysql

Er det muligt at update flere rækker på en gang med én submitknap? i modsætning til hvad jeg har lavet (som er vist herunder) hvor der skal trykkes ud for den enkelte submit knap.
I behøver ikke at tilpasse det til nedenunder. Bare angive en evt. metode.
På forhånd tak for hjælpen.

<?
if (isset($_POST['Ret']) && $_POST['Ret'] == 'Ret') {

  // Format the data
$ID = $_POST['ID'];
$navn = $_POST['navn'];
$link = $_POST['link'];
$placering = $_POST['placering'];

  // Update values
$query = "UPDATE menu
            SET navn = '$navn',
            link = '$link',
            placering = '$placering'
            WHERE ID = $ID";
          $result = mysql_query($query);
  if (mysql_affected_rows() == 1) {
echo "<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=menuaedring.php\">";
  } else {
error_log(mysql_error());
$success_msg = '<P>Something went wrong.</P>';
  }
  }


//Henter oplysningerne frem.
$query = "SELECT * FROM menu";
$result = mysql_query($query);
while ($data = mysql_fetch_row($result)) {
  // Show the form
    $php_self = $_SERVER['PHP_SELF'];
 
$form_str = <<< EOFORMSTR

<form action="$php_self" method="post">

<tr>
    <td><input type="text" value="$data[3]" name="placering" size="20"><input type="hidden" name="ID" value="$data[0]"></td>
    <td><input type="text" value="$data[1]" name="navn" size="20"></td>
    <td><input type="text" value="$data[2]" name="link" size="20"></td>
<td><input type="Submit" value="Ret" name="Submit"></td>
  </tr>

</form>
EOFORMSTR;
    echo $form_str;
}
?>
Avatar billede Slettet bruger
06. september 2005 - 17:34 #1
Hvorfor skulle man ikke bare kunne skrive:

$query = "UPDATE menu
            SET navn = '$navn',
            link = '$link',
            placering = '$placering'
            WHERE ID = $ID";
          $result = mysql_query($query);

$query2 = "UPDATE menu2
            SET navn = '$navn',
            link = '$link',
            placering = '$placering'
            WHERE ID = $ID";
          $result = mysql_query($query);
Avatar billede Slettet bruger
06. september 2005 - 17:35 #2
$query = "UPDATE menu
            SET navn = '$navn',
            link = '$link',
            placering = '$placering'
            WHERE ID = $ID";
          $result = mysql_query($query);

$query2 = "UPDATE menu2
            SET navn = '$navn',
            link = '$link',
            placering = '$placering'
            WHERE ID = $ID";
          $result2 = mysql_query($query2);
Avatar billede smeier Nybegynder
06. september 2005 - 17:39 #3
så opdaterer den da i to forskellige tabeller.. ik?!
Den skal opdatere alle rækker i tabellen på en gang i princippet.
Avatar billede Slettet bruger
06. september 2005 - 22:27 #4
Det kan du godt ved at putte alle felterne ind i samme form. Det kræver så at du skal finde en metode til at knytte input-felterne sammen med et bestemt ID. Jeg vil foreslå du f.eks. kalder dem placering[id], navn[id] og link[id]. Det vil sige i din funktion, der opbygger formen, skal du skrive noget ala <input type="text" value="$data[3]" name="placering[$data[0]]" size="20"> osv.

Det kræver selvfølgelig, at du skal være lidt fiks når data'ene kommer ind. Du skal have lavet noget kode, der finder de data der hører til et bestemt ID ved at kigge på det der står mellem []'erne. Det kan du så bruge til konstruere din UPDATE-sætninger.
Avatar billede smeier Nybegynder
07. august 2006 - 19:18 #5
Har glemt om jeg overhovedet kunne bruge det til noget. Men er i gang med at lukke åbne spm. Hvis nogen vil have point skriv bare.

/ Troels
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