Avatar billede rubaek Mester
05. juni 2008 - 10:00 Der er 13 kommentarer og
1 løsning

Ændre flere data på en gang.

Jeg har et skript der viser et klubnavn og en kurs. Kursen kan ændres, men hvordan får jeg gemt flere "kursændringer" på en gang.
Data kommer fra en database og ændringerne skal gemmes her.
Se filen her:www.rubaeks.dk/ret_kurs1.php

Script:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>Vis kurs5</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="Author" content="Steen Hjelmstrand" />
</head>
<body>
Velkommen<br>
<FORM METHOD="POST" action="indsaet_kurs.php">
<?php
include ("login.inc");


$resultat = @mysql_query("SELECT * FROM Aktiespil") or die(mysql_error());

$number=mysql_num_rows($resultat);


echo "<TABLE WIDTH=\"246\" BORDER=\"0\">";

while($row=mysql_fetch_array($resultat))
{
echo "<TR VALIGN='top'>
    <TD><B>$row[id]</B></TD>
<TD>$row[Klubnavn]</TD>
<TD>kurs: </TD><TD><INPUT TYPE='text' MAXLENGTH='8' NAME='Klubnavn' VALUE=$kurs></TD>
<TD>$row[Fri1]</TD>
<TD>$row[Fri2]</TD>
<TD>$row[Fri3]</TD>
<TD>$rand</TD>

</TR>";
}

echo "</TABLE>";
?>
<INPUT TYPE="submit" VALUE="Send"> 
<INPUT TYPE="reset" value="Forfra">
Avatar billede rubaek Mester
05. juni 2008 - 10:03 #1
UPS: det forkerte script. Her er det rigtige:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>Vis kurs5</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="Author" content="Steen Hjelmstrand" />
</head>
<body>
Her kan du rettet kursen<br>
<FORM METHOD="POST" action="indsaet_kurs.php">
<?php
include ("login.inc");


$resultat = @mysql_query("SELECT * FROM Aktiespil") or die(mysql_error());

$number=mysql_num_rows($resultat);


echo "<TABLE WIDTH=\"246\" BORDER=\"0\">";

while($row=mysql_fetch_array($resultat))
{
echo "<TR VALIGN='top'>
    <TD><B>$row[id]</B></TD>
<TD>$row[Klubnavn]</TD>
<TD>kurs: </TD><TD><INPUT TYPE='text' MAXLENGTH='8' NAME='Klubnavn' VALUE='$row[Kurs]'></TD>
<TD>$row[Fri1]</TD>
<TD>$row[Fri2]</TD>
<TD>$row[Fri3]</TD>
<TD>$rand</TD>

</TR>";
}

echo "</TABLE>";
?>
<INPUT TYPE="submit" VALUE="Send"> 
<INPUT TYPE="reset" value="Forfra">
Avatar billede jakobdo Ekspert
05. juni 2008 - 10:30 #2
Hvis du ændrer:

NAME='Klubnavn'
til:
NAME='Klubnavn[".$row['id']."]'

Så vil du få et array, som du så kan løbe igennem og opdatere din tabel/database med.
Avatar billede rubaek Mester
05. juni 2008 - 13:49 #3
Jeg har prøvet men hvis fået lavet en fejl i mit oprindelige script. Så jeg regner med at linien skal lyde sådan:
<TD>kurs: </TD><TD><INPUT TYPE='text' MAXLENGTH='8' NAME='Kurs[".$row['id']."]' VALUE='$row[Kurs]'></TD>

Men hvordan får jeg opdateret min database. Når jeg prøver dette skriver den "Array" i alle de felter jeg ændre i databasen. (Se tidligere link)
Avatar billede jakobdo Ekspert
05. juni 2008 - 18:15 #4
Jep, og det er netop fordi du modtager et array.
Prøv på den side hvor du opdatere din tabel, at kald:

echo '<pre>';
print_r($_POST[kurs]);
echo '</pre>';
Avatar billede rubaek Mester
05. juni 2008 - 19:35 #5
Der sker ikke rigtig noget??
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>Vis kurs5</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="Author" content="Steen Hjelmstrand" />
</head>
<body>
Her kan du rettet kursen<br>
<FORM METHOD="POST" action="indsaet_kurs.php">
<?php
include ("login.inc");


$resultat = @mysql_query("SELECT * FROM Aktiespil") or die(mysql_error());

$number=mysql_num_rows($resultat);


echo "<TABLE WIDTH=\"246\" BORDER=\"0\">";

while($row=mysql_fetch_array($resultat))
{

echo "<TR VALIGN='top'>
    <TD><B>$row[id]</B></TD>

<TD>kurs: </TD><TD><INPUT TYPE='text' MAXLENGTH='8' NAME='Kurs[".$row['id']."]' VALUE='$row[Kurs]'></TD>
<TD>$row[Fri1]</TD>
<TD>$row[Fri2]</TD>
<TD>$row[Fri3]</TD>
<TD>$rand</TD>

</TR>";
}
echo "</TABLE>";

// her er koden indsat??
echo '<pre>';
print_r($_POST[kurs]);
echo '</pre>';
?>
<INPUT TYPE="submit" VALUE="Send"> 
<INPUT TYPE="reset" value="Forfra">
Avatar billede jakobdo Ekspert
05. juni 2008 - 19:49 #6
Men du har jo ikke nogen stedet, hvor du opdatere data ?
Du mangler noget kode, hvor du kalder: mysql_query("UPDATE .....")
Avatar billede rubaek Mester
05. juni 2008 - 20:02 #7
Den sender til denne fil, men det kan sikkert sammenskrives?
<?

include ("login.inc");

$Kurs= $_POST['Kurs'];
mysql_query("update Aktiespil set Klubnavn ='$Klubnavn',Kurs='$Kurs',Fri1='$Fri1',Fri2='$Fri2',Fri3='$Fri3'WHERE id=$id") or die(mysql_error());

?>
Avatar billede jakobdo Ekspert
05. juni 2008 - 21:06 #8
Det er i den fil, du skal tilføje:

echo '<pre>';
print_r($_POST[kurs]);
echo '</pre>';

Og en løsning kunne måske være:

<?

include ("login.inc");

foreach($_POST['kurs'] AS $id => $kurs){
  mysql_query("update Aktiespil set Klubnavn ='$Klubnavn',Kurs='$kurs',Fri1='$Fri1',Fri2='$Fri2',Fri3='$Fri3'WHERE id=$id") or die(mysql_error());
}
?>
Avatar billede rubaek Mester
05. juni 2008 - 21:37 #9
Nu kommer der denne fejl:
Warning: Invalid argument supplied for foreach() in /var/www/web34/html/indsaet_kurs.php on line 5
Avatar billede jakobdo Ekspert
05. juni 2008 - 21:51 #10
Ret lige $_POST['kurs'] til stort K
Kurs
Avatar billede rubaek Mester
05. juni 2008 - 22:08 #11
Kanon (med stort K). Nu er den der, tak for hjælpen. Der kommer sikkert flere spørgsmål jo længere jeg kommer med opgaven. Send et svar.
Avatar billede jakobdo Ekspert
05. juni 2008 - 22:15 #12
Svar!
Avatar billede jakobdo Ekspert
05. juni 2008 - 22:16 #13
Jeg ved ikke hvorfor, men jeg havde godt på fornemmelsen du var i gang med et projekt/opgave! :o)
Avatar billede jakobdo Ekspert
06. juni 2008 - 08:25 #14
Takker for point.
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