Avatar billede smeier Nybegynder
15. juni 2007 - 11:18 Der er 5 kommentarer og
1 løsning

Updatere hel tabel i mysql gennem én form.

Hej eksperter.
Når man udskriver en tabel ca. således:
$query = "SELECT * FROM slideshow order by placering";
$result = mysql_query($query);
while ($data = mysql_fetch_row($result)) {
echo ("<td><img src=\"slideshow/$data[1]\" width=100 height=100></td>");
echo ("<td>$data[1]</td>");
if ($data[2] == '1')
{
echo ("<td>Aktiv</td>");
}
if ($data[2] == '0')
{
echo ("<td>Ikke-Aktiv</td>");
}
echo ("<td>$data[3]</td>");
echo ("</tr>");

;
}
Kan man så udskrive alle rækker i en form, således at at hvis man ændrer alle felter i alle rækker, så kan man opdatere en hel tabel i mysql samtidigt?
Altså istedet for at skulle opdatere hver enkelt række i hver sin form.
Håber at i forstår spørgsmålet..

Mvh Troels
Avatar billede showsource Seniormester
15. juni 2007 - 12:16 #1
Du har vel et felt som er unikt for hvert row, typisk id, som autoincrement, primary
Så kan du bruge noget a'la'

<input type="hidden" name="refid[]" value="<?php echo $data["id"]; ?>">
<input type="tekst" name="billede[<?php echo $data["id"]; ?>]" value="<?php echo $data["billede"]; ?>">

og ved submit
foreach($_POST["refif"] as $ref) {
// echo i stedet for query
echo"UPDATE tabel SET billede = '". $_POST["billede"][$ref] ."' WHERE id = ". intval($ref) ."\"<br />";
}
Avatar billede showsource Seniormester
15. juni 2007 - 12:17 #2
$_POST["refif"] skal jo så være $_POST["refid"], men du er vel med på hvad der sker! :O)
Avatar billede smeier Nybegynder
15. juni 2007 - 12:38 #3
når ja selvføgelig, så køre UPDATE i en løkke. Prøver lige. Du er velkommen til at smide et svar.
Avatar billede smeier Nybegynder
15. juni 2007 - 14:11 #4
Tak for hjælpen det virker perfekt.
Tænkte at jeg lige ville poste min endelige løsning hvis nogen skulle have lyst til at kigge.
Smid et svar showsource.

if($_POST["action"] == "Opdater")
{
foreach($_POST["ID"] as $ref) {
$query = "UPDATE slideshow SET status = '". $_POST["status"][$ref] ."', placering = '". $_POST["placering"][$ref] ."' WHERE ID = '$ref'";
$result = mysql_query($query);
}
}
<form method="POST" enctype="multipart/form-data" name="slideshow_form" action="<?$_SERVER["PHP_SELF"];?>">
<?
$query = "SELECT * FROM slideshow order by placering";
$result = mysql_query($query);
while ($data = mysql_fetch_row($result)) {
echo ("<tr><td><img src=\"slideshow/$data[1]\" width=100 height=100></td>");
echo ("<td>$data[1]</td>");
if ($data[2] == '1')
{
echo ("<td>");
echo ("<input type=\"radio\" name=\"status[$data[0]]\" value=\"1\" checked=\"checked\">Aktiv<br>");
echo ("<input type=\"radio\" name=\"status[$data[0]]\" value=\"0\">Ikke-aktiv</td>");
}
elseif ($data[2] == '0')
{
echo ("<td>");
echo ("<input type=\"radio\" name=\"status[]$data[0]\" value=\"1\">Aktiv<br>");
echo ("<input type=\"radio\" name=\"status[]$data[0]\" value=\"0\" checked=\"checked\">Ikke-aktiv</td>");
}

echo ("<td><input type=\"text\" name=\"placering[$data[0]]\" value=\"$data[3]\"></td>");
echo ("</tr>");
echo ("<input type=\"hidden\" name=\"ID[]\" value=\"$data[0]\">");
;
}

echo ("</table>");

?>
<p><input type="submit" value="Opdater" name="action"></p>
Avatar billede showsource Seniormester
16. juni 2007 - 13:40 #5
Du kan vel også gøre så'n, ( checked eller ej )

// sættes før din foreach
$checked = array(0 => array("", "Ikke aktiv"), 1 => array(" checked=\"checked\"", "Aktiv"));


echo ("<td>");
echo ("<input type=\"radio\" name=\"status[$data[0]]\" value=\"1\"". $checked[$data[0]][0] .">". $checked[$data[0]][1] ."<br>");
echo ("<input type=\"radio\" name=\"status[$data[0]]\" value=\"0\". $checked[$data[0]][0] .">". $checked[$data[0]][1] ."</td>");


og den her virker vist ikke! :O) ( status[]$data[0 )

echo ("<td>");
echo ("<input type=\"radio\" name=\"status[]$data[0]\" value=\"1\">Aktiv<br>");
echo ("<input type=\"radio\" name=\"status[]$data[0]\" value=\"0\" checked=\"checked\">Ikke-aktiv</td>");
Avatar billede smeier Nybegynder
16. juni 2007 - 16:26 #6
Det kunne jo godt betale sig at post det "endelige" svar. :-)
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