Avatar billede lordwizzy Nybegynder
27. juli 2003 - 00:56 Der er 9 kommentarer og
1 løsning

Opdatering af flere rækker samtidig.

Hej

Jeg ønsker at kunne opdatere flere rækker samtidigt:
http://www.team-rideklub.dk/opdaterchampionat.php
Man skal indtaste point ovre i kolonnen til højre og så skal værdien opdateres i MySQL databasen med den nye værdi.
Det er den nederste del der ikke virker, selve tilføjelsen af flere ryttere virker fint nok.
Når jeg forsøger at opdatere går der kuk i det hele.
Selve koden til håndtering af opdateringen:

<?
$foresp = mysql_query("SELECT id, rytternavn,ridedyr,disciplin,kat,point FROM
championat_2003 ORDER BY rytternavn ASC");
echo "<FORM METHOD=POST ACTION=opdaterchampionat.php><INPUT TYPE=hidden NAME=write VALUE=1><center><table
width=700><tr><TD>Rytternavn</td><td>Hest/Pony
navn</td><td>Disciplin</td><td>Kat.</td><td>Point</td><tr>";
while($data = mysql_fetch_row($foresp)){
echo
("<td>$data[1]</td><td>$data[2]</td><td>$data[3]</td><td>$data[4]</td><td><INPUT type=text NAME=point$data[0] size=4 value=$data[5]></td><tr>");
if($write){
mysql_query("UPDATE championat_2003 SET point = '$point$data[0]'  WHERE id = '$data[0]'"); die(mysql_error());
}
}
echo ("<tr><td><INPUT TYPE=submit VALUE=indsend></tr></td>");
echo "</table>";
echo "point 1 value - $point$data[0]";


?>

Den ser efterhånden lidt mærkelig ud da jeg har forsøgt både det ene og det andet.

Nogen der kan komme med en forklaring og en løsning selv en retarderet ville forstå? :)
Avatar billede TRoXa Novice
27. juli 2003 - 01:06 #1
er det ikke bare at give input boksene navne som fx nr1 for nummer 1, nr2 for nummer 2 osv ..

så kan du i filen lave fx 10 sql opdateringer .. i stedet for kun 1 .. hvis det er 10 personer der skal opdateres
Avatar billede kohaar Nybegynder
27. juli 2003 - 01:08 #2
Jeg må indrømme, at jeg ikke helt kan finde ud af din kode, men sådan som jeg kan se det, prøver du at sætte på id, og point ind i point kolonnen (set point = '$point$data[0]')

Hvis dette er meningen, prøv så at gøre dette først:

$pointid = $point.$data[0];
update chamn... set point = '$pointid' ...

Husk også, at hvis point colonnen er en intiger (tal værdi), skal der ikke '' omkring $pointid
Avatar billede kohaar Nybegynder
27. juli 2003 - 01:43 #3
Nu er det jo ved at være sent, men prøv det her. Er i alt fald lidt at arbejde ud fra:

<?
$foresp = mysql_query("SELECT id, rytternavn, ridedyr, disciplin, kat, point
                      FROM championat_2003 ORDER BY rytternavn ASC");

echo "
    <FORM METHOD=POST ACTION=opdaterchampionat.php>
    <INPUT TYPE=hidden NAME=write VALUE=1>
    <center>
      <table width=700>
      <tr>
        <td>Rytternavn</td>
        <td>Hest/Pony navn</td>
        <td>Disciplin</td>
        <td>Kat.</td>
        <td>Point</td>
      <tr>";
$i = 0;
while ($data = mysql_fetch_row($foresp))
{
echo "
      <td>$data[1]</td>
      <td>$data[2]</td>
      <td>$data[3]</td>
      <td>$data[4]</td>
      <td>
      <INPUT type=text NAME=$i size=4 value=$data[5]>
      </td>
    <tr>");
     
if ($write)
{
  $point = $_POST['$i'];
  mysql_query("UPDATE championat_2003 SET point = '$point'  WHERE id = '$data[0]'"); die(mysql_error());
}
$i+1;
}
echo "
    <tr>
      <td>
      <INPUT TYPE=submit VALUE=indsend>
      </tr>
    </td>
    </table>
    point 1 value - $point$data[0]
    ";

?>

Du skal nok kigge din html lidt efter...
Avatar billede detox Nybegynder
27. juli 2003 - 01:55 #4
Du mangler et "or" her:
mysql_query("UPDATE championat_2003 SET point = '$point'  WHERE id = '$data[0]'"); die(mysql_error());
---------------------------
mysql_query("UPDATE championat_2003 SET point = '$point'  WHERE id = '$data[0]'") or die(mysql_error());
Avatar billede kohaar Nybegynder
27. juli 2003 - 02:04 #5
<?
$foresp = mysql_query("SELECT id, rytternavn, ridedyr, disciplin, kat, point FROM championat_2003 ORDER BY rytternavn ASC");
echo "
    <FORM METHOD=POST ACTION=test.php>
    <INPUT TYPE=hidden NAME=write VALUE=1>
    <center>
      <table width=700>
      <tr>
        <td>Rytternavn</td>
        <td>Hest/Pony navn</td>
        <td>Disciplin</td>
        <td>Kat.</td>
        <td>Point</td>
      <tr>";
list($antal)=mysql_fetch_row(mysql_query("SELECT count(id) as id FROM championat_2003"));
print_r($_POST);
for ($i = 0; $i < $antal; $i++)
{
$data = mysql_fetch_row($foresp);
echo "
      <td>$data[0]</td>
      <td>$data[1]</td>
      <td>$data[2]</td>
      <td>
      <INPUT type=text NAME=$i size=4 value=$data[1]>
      </td>
    <tr>";
if (strlen($_POST[$i]) > 0)
{
  $point = $_POST[$i];
  mysql_query("UPDATE championat_2003 SET point = '$point'  WHERE id = '$data[0]'") or die(mysql_error());
  echo "test";
}
}
echo "
    <tr>
      <td>
      <INPUT TYPE=submit VALUE=indsend>
      </tr>
    </td>
    </table>
    point 1 value - $point$data[0]
    ";
?>

Virker hos mig nu... Ved godt nok ikke hvordan du har lavet dine tabeller, men burde virke...
Avatar billede kohaar Nybegynder
27. juli 2003 - 02:05 #6
du skal nok lige fjerne "print_r($_POST)" var lige til en test
Avatar billede lordwizzy Nybegynder
27. juli 2003 - 11:05 #7
Jeg var lige nødt til at ændre en lille smule i tabellen, men nu virker det!
Tak for hjælpen.

Lige et lille sidespørgsmål.
Hvordan indlæser jeg siden igen efter indsendelse så de nye værdier står der?
Avatar billede kohaar Nybegynder
27. juli 2003 - 14:10 #8
Du kan dele den op i to seperate dele. En de der viser siden, og en del der indsætter i tabellen

if (!$write)
  vis tabellen
else
  indsæt i tabellen
  header(Location: index.php); (kan ikke lige huske den korrekte syntax i hovedet...)
Avatar billede detox Nybegynder
27. juli 2003 - 14:25 #9
header("Location: index.php"); er den korrekte syntax.
Avatar billede kohaar Nybegynder
27. juli 2003 - 15:32 #10
self ja
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