Avatar billede Bluedrop81 Nybegynder
07. december 2011 - 19:33 Der er 7 kommentarer og
1 løsning

hjælp til noget update

Hej til alle

Jeg sidder og har lidt problemer med lidt php og vil derfor gerne have lidt assistance...

Jeg laver et udtræk af nogle rækker i en database og vil gerne tilføje noget data til rækken.

Jeg vil så gerne have inputboks og knappen til at tilføje med, bliver generet i rækken når jeg trækker data ud tabellen på en side.

min kode ser sådan ud:

<TABLE width="95%" border=1 align="center" borderColor=#000000 bgColor=#FFFFFF>
  <TBODY>
  <TR>
      <TD><STRONG>id</STRONG></TD>
    <TD><STRONG>Dato:</STRONG></TD>
    <TD><STRONG>Område</STRONG></TD>
    <TD><STRONG>Delområde</STRONG></TD>
    <TD><STRONG>Opgave</STRONG></TD>
    <TD><STRONG>Rengøringsass. Vurdering</STRONG></TD>
    <TD><STRONG>Initialer</STRONG></TD>
    <TD><STRONG>Vurd 1</STRONG></TD>
    <td>knap godkend</td>   
   
  </TR>
  <?php
  $Select = mysql_query("SELECT * FROM dagsrapport WHERE status = '1'");
  while($data = mysql_fetch_array($Select)) {
 
  ?>
  <TR>
    <TD><font size="2"><?=$data['id'];?></font></TD>
    <TD><font size="2"><?=$data['dato'];?></font></TD>
    <TD><font size="2"><?=$data['omrade'];?></font></TD>
    <TD><font size="2"><?=$data['delomrade'];?></font></TD>
    <TD><font size="2"><?=$data['opgave'];?></font></TD>
    <TD><font size="2"><?=$data['vurd1'];?></font></TD>
    <TD><font size="2"><?=$data['initialer'];?></font></TD>
    <TD><font size="2"><input type="text" value="0" name="<?=$data['id'];?>"></font></TD>
<?php
if(isset($_POST['<?=$data['id'];?>']))
{
echo "Din bemærkning er tilføjet dagsrapporten";
$id = $data['id'];
$Besked = $_POST['$data['id']'];
mysql_query("UPDATE dagsrapport SET vurd2='$Besked' WHERE id='$id' ") OR DIE(mysql_error());
mysql_query("UPDATE dagsrapport SET status='2' WHERE id='$id' ") OR DIE(mysql_error());

} ?>
    <td><input name="<?=$data['id'];?>" type="hidden"><input type="button" value="Send form"></td>
  </TR>
  <?php
  }
  ?>
</TBODY>
</TABLE>

Er der nogle der har ideer til løsninger eller en anden måde at bygge det op på?

På forhånd mange tak ;-)
08. december 2011 - 15:04 #1
Det tog sin tid - er spørgsmålet stadig aktuelt?

Jeg forstår, at du vil udtrække et antal rækker fra databasen og vise rækkerne i en html tabel således, at folk kan indføre en kommentar og submitte kommentaren som så skal updates i databasen, og status skal ændrres til 2.

Hvis det er korrekt forstået, så skal du i hver række i html tabellen lave en html form, <form action="" method=POST></form>.  Hver rækkes form skal indeholde et 'hidden' felt der identificerer rækken, altså med rækkens id.  Og så skal formen natuligvis indeholde et input felt for kommentaren og et submit felt.  Noget i denne retning (jeg springer din formattering over):

<tr>
<td><input type="hidden" name="id" value = <?php echo $data['id']?> /><?php echo $data['id']?></td>
<td><?php echo $data['id']?></td>
<td><?php echo $data['dato']?></td>
<td><?php echo $data['omrade']?></td>
<td><?php echo $data['delomrade']?></td>
<td><?php echo $data['opgave']?></td>
<td><?php echo $data['vird1']?></td>
<td><?php echo $data['initialer']?></td>
<td><input type="text" value="0" name="besked" /><input type="submit" value="godkend" name="submit" /></td>
</tr>

En html form skal have en 'action' som er den side man skal komme på når man har trykket på knappen.  Hvis man laver action="" bliver man på samme side, hvilket jeg tror du vil.  Du vil lægge mærke til, at der i den første <td> er to felter med $data['id'], et skjult input felt og så et synligt felt.

Når der så i en af rækkerne er indført en bemærkning og trykket på knappen, så skal du bruge sådan en kode:

<?php
if($_POST['submit'])
{
  echo "Din bemærkning er tilføjet dagsrapporten";
  $id = mysql_real_escape_string($_POST['id']);
  $besked = mysql_real_escape_string($_POST['besked']);
  mysql_query("UPDATE dagsrapport SET vurd2 = $besked, status='2' WHERE id = $id");
}
?>

Det med 'mysql_real_escape_string er indført for at forhindre, at der indsmugles skadelig kode sammen med inputtet.

I sådanne tilfælde, hvor der på en side er en (eller flere) html form(s) med action på den samme side er det normalt mest bekvemt at have action koden først, altså således:

<?php
if($_POST['submit'])
{
  echo "Din bemærkning er tilføjet dagsrapporten";
  $id = mysql_real_escape_string($_POST['id']);
  $besked = mysql_real_escape_string($_POST['besked']);
  mysql_query("UPDATE dagsrapport SET vurd2 = $besked, status='2' WHERE id = $id");
}
?>

<TABLE width="95%" border=1 align="center" borderColor=#000000 bgColor=#FFFFFF>
  <TBODY>
  <TR>
      <TD><STRONG>id</STRONG></TD>
    <TD><STRONG>Dato:</STRONG></TD>
    <TD><STRONG>Område</STRONG></TD>
o.s.v.

<tr>
<td><input type="hidden" name="id" value = <?php echo $data['id']?> /><?php echo $data['id']?></td>
<td><?php echo $data['id']?></td>
<td><?php echo $data['dato']?></td>
<td><?php echo $data['omrade']?></td>
<td><?php echo $data['delomrade']?></td>
<td><?php echo $data['opgave']?></td>
<td><?php echo $data['vird1']?></td>
<td><?php echo $data['initialer']?></td>
<td><input type="text" value="0" name="besked" /><input type="submit" value="godkend" name="submit" /></td>
</tr>
Avatar billede Bluedrop81 Nybegynder
08. december 2011 - 21:16 #2
Jeg har lige prøvet det, det ser ikke ud til den sætter ind i rækken desværre men ved ikke lige om jeg har gjort noget galt?

koden ser nu sådan ud:

<?php
if($_POST['submit'])
{
  echo "Din bemærkning er tilføjet dagsrapporten";
  $id = mysql_real_escape_string($_POST['id']);
  $besked = mysql_real_escape_string($_POST['besked']);
  mysql_query("UPDATE schulstad_dagsrapport SET vurd2 = $besked, status='2' WHERE id = $id")OR DIE(mysql_error());
}
?>

<br><br><font size="+3">Kontrol af rengøring</font><br><br>
<form name="form" method="post" action="indexadmin.php?vis=kontrolrengoring555">
<br><br>
  <table align="center" border="0">
  <tr>
  <td><font size="+2">Indbakke</font></td>
  </tr>
  </table>
  <br />
<TABLE width="95%" border=1 align="center" borderColor=#000000 bgColor=#FFFFFF>
  <TBODY>
  <TR>
      <TD><STRONG>id</STRONG></TD>
    <TD><STRONG>Dato:</STRONG></TD>
    <TD><STRONG>Område</STRONG></TD>
    <TD><STRONG>Delområde</STRONG></TD>
    <TD><STRONG>Opgave</STRONG></TD>
    <TD><STRONG>Rengøringsass. Vurdering</STRONG></TD>
    <TD><STRONG>Initialer</STRONG></TD>
    <TD><STRONG>Vurd 2</STRONG></TD>
    <td>knap godkend</td>   
   
  </TR>
  <?php
  $Select = mysql_query("SELECT * FROM schulstad_dagsrapport WHERE status = '1'");
  while($data = mysql_fetch_array($Select)) {
 
  ?>
  <tr>
<td><input type="hidden" name="id" value = <?php echo $data['id']?> /><?php echo $data['id']?></td>
<td><?php echo $data['dato']?></td>
<td><?php echo $data['omrade']?></td>
<td><?php echo $data['delomrade']?></td>
<td><?php echo $data['opgave']?></td>
<td><?php echo $data['vurd1']?></td>
<td><?php echo $data['initialer']?></td>
<td><input type="text" value="0" name="besked" /></td>
<td><input type="submit" value="godkend" name="submit" /></td>
</tr>
  <?php
  }
  ?>
</TBODY>
</TABLE>
09. december 2011 - 06:12 #3
Jeg fik desværre introduceret en fejl - eftersom $besked indeholder en tekststreng skal den i anførselstegn, altså

  mysql_query("UPDATE schulstad_dagsrapport SET vurd2 = '$besked', status='2' WHERE id = $id")OR DIE(mysql_error());

Hvis der stadig ikke updates, kan du prøve også at sætte $id i anførselstegn, altså

  mysql_query("UPDATE schulstad_dagsrapport SET vurd2 = '$besked', status='2' WHERE id = '$id'")OR DIE(mysql_error()); 

Det ville være ulogisk, eftersom id (antageligvis) er en INT, men jeg har somme tider set en database kræve det.
Avatar billede Bluedrop81 Nybegynder
11. december 2011 - 11:34 #4
Hej igen :) blev lige forstyrret af et par julefrokoster så undskylder det sene svar.

Jeg har prøvet at sætte anførselstegn de forskellige steder men den skriver stadig ikke data ind ??

koden ser nu ud som følgende:

<?php
if($_POST['submit'])
{
  echo "Din bemærkning er tilføjet dagsrapporten";
  $id = mysql_real_escape_string($_POST['id']);
  $besked = mysql_real_escape_string($_POST['besked']);
  mysql_query("UPDATE schulstad_dagsrapport SET vurd2 = '$besked' , status='2' WHERE id = '$id'")OR DIE(mysql_error());
}
?>

<br><br><font size="+3">Kontrol af reng&oslash;ring</font><br><br>
<form name="form" method="post" action="indexadmin.php?vis=kontrolrengoring555">
<br><br>
  <table align="center" border="0">
  <tr>
  <td><font size="+2">Indbakke</font></td>
  </tr>
  </table>
  <br />
<TABLE width="95%" border=1 align="center" borderColor=#000000 bgColor=#FFFFFF>
  <TBODY>
  <TR>
      <TD><STRONG>id</STRONG></TD>
    <TD><STRONG>Dato:</STRONG></TD>
    <TD><STRONG>Omr&aring;de</STRONG></TD>
    <TD><STRONG>Delomr&aring;de</STRONG></TD>
    <TD><STRONG>Opgave</STRONG></TD>
    <TD><STRONG>Reng&oslash;ringsass. Vurdering</STRONG></TD>
    <TD><STRONG>Initialer</STRONG></TD>
    <TD><STRONG>Vurd 2</STRONG></TD>
    <td>knap godkend</td>   
   
  </TR>
  <?php
  $Select = mysql_query("SELECT * FROM schulstad_dagsrapport WHERE status = '1'");
  while($data = mysql_fetch_array($Select)) {
 
  ?>
  <tr>
<td><input type="hidden" name="id" value = "<?php echo $data['id']?>" /><?php echo $data['id']?></td>
<td><?php echo $data['dato']?></td>
<td><?php echo $data['omrade']?></td>
<td><?php echo $data['delomrade']?></td>
<td><?php echo $data['opgave']?></td>
<td><?php echo $data['vurd1']?></td>
<td><?php echo $data['initialer']?></td>
<td><input type="text" value="0" name="besked" /></td>
<td><input type="submit" value="godkend" name="submit" /></td>
</tr>
  <?php
  }
  ?>
11. december 2011 - 17:05 #5
Der fik jeg dig grundigt villedt.  Jeg forklarede i #1, at du skulle have en <form> i hver række i outputtet, og så glemte jeg at inkludere formen i den kode jeg viste.  Det beklager jeg.  Det må jeg så rette op på. 

Lad  mig først kopiere den kode jeg lavede for test og som virker (jeg har lige testet det igen.)  Jeg har lavet en forenklet tabel Bluedrop der kun har tre felter, id, vurdering, og status.  Du kan se på http://christianjorgensen.be/Bluedrop.php, at når man åbner siden får man en liste over de af tabellens rækker der har status= 1 (der er kun to) sammen med en knop godkend.  Når man i en række ændrer teksten, for eksempel id2 fra vurd4 til for eksempel vurd5 og trykker på godkend, så opdateres database tabellen, så række id2 får en ny tekst og status ændres til 2.  Det kan du ikke se, men du kan se, at siden forfriskes, du får beskedden at bemærkningen er tilføjet dagsrapporten, og nu ser du kun en række, fordi den anden række nu har status 2.  Her er koden:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset="utf-8">
  <title></title>
</head>

<body>
<?php
require('connect.php');
?>
<?php
if($_POST['submit'])
{
  $besked = $_POST['vurdering'];
  $id = $_POST['id'];
  mysql_query("UPDATE Bluedrop SET vurdering = '$besked', status = '2' WHERE id = $id")or die(mysql_error());
  echo "Din bemærkning er tilføjet dagsrapporten";
}
?>
<table>
<tr>
<td>id</td>
<td>vurdering</td>
<td>godkend</td>
</tr>
<?php
$select = mysql_query("SELECT * FROM Bluedrop WHERE status = 1") or die(mysql_error());
while($data = mysql_fetch_array($select))
{
?>
<tr>
<form method="POST" action="">
<td><input type="hidden" name="id" value=<?php echo $data['id'] ?> /><?php echo $data['id'] ?></td>
<td><input type="text" name="vurdering" value=<?php echo $data['vurdering'] ?><?php $data['vurdering'] ?> /></td>
<td><input type="submit" value="godkend" name="submit"/></td>
</form>
</tr>

<?php
}
?>
</table>
</body>
</html>

Det sender jeg lige afsted først.  Senere på aftenen sender jeg så endnu et indlæg, hvor jeg prøver at rette koden til, så den passer med din tabelstruktur.
11. december 2011 - 18:27 #6
Først et spørgsmål:  du har vel forbindelse fra php til databasen?  Det viser du ikke noget om i din kode. Min egen forbindelse ser således ud (jeg har forandret de forskellige passwords):

<?
$link = mysql_connect ('christianjorgensen.be.mysql', 'databasenavn', 'password') or die(mysql_error());
mysql_select_db('databasenavn') or die('Could not select database');
?>

Det har jeg siddende i en fil der hedder connect.php.  Derfor starter jeg min kode med:

require('connect.php');

Så en bemærkning.  I min trial-kode kalder formen den samme side som formen er på.  Derfor har jeg <form ... action="">

Du skriver <form ... action="indexadmin.php...">  Hvis det er hvad du foretrækker, så skal du have en side der hedder indexadmin.php hvortil du flytter følgende kode:

<?php
if($_POST['submit'])
{
  echo "Din bemærkning er tilføjet dagsrapporten";
  $id = mysql_real_escape_string($_POST['id']);
  $besked = mysql_real_escape_string($_POST['besked']);
  mysql_query("UPDATE schulstad_dagsrapport SET vurd2 = '$besked' , status='2' WHERE id = '$id'")OR DIE(mysql_error());
}
?>

Hvad angår din kode i #4, så har jeg kopieret den herunder, men flyttet <form> elementet fra begyndelsen af koden (ved at placere den mellem kommentar tegn <!-- og -->) og i stedet indsat den i WHILE løkken.  Jeg har stadigvæk action="" som du muligvis vil ændre til action="indexadmin.php".  Jeg håber du kan følge mig.


<?php
if($_POST['submit'])
{
  echo "Din bemærkning er tilføjet dagsrapporten";
  $id = mysql_real_escape_string($_POST['id']);
  $besked = mysql_real_escape_string($_POST['besked']);
  mysql_query("UPDATE schulstad_dagsrapport SET vurd2 = '$besked' , status='2' WHERE id = '$id'")OR DIE(mysql_error());
}
?>

<br><br><font size="+3">Kontrol af reng&oslash;ring</font><br><br>

<!--<form name="form" method="post" action="indexadmin.php?vis=kontrolrengoring555">-->

<br><br>
  <table align="center" border="0">
  <tr>
  <td><font size="+2">Indbakke</font></td>
  </tr>
  </table>
  <br />
<TABLE width="95%" border=1 align="center" borderColor=#000000 bgColor=#FFFFFF>
  <TBODY>
  <TR>
      <TD><STRONG>id</STRONG></TD>
    <TD><STRONG>Dato:</STRONG></TD>
    <TD><STRONG>Omr&aring;de</STRONG></TD>
    <TD><STRONG>Delomr&aring;de</STRONG></TD>
    <TD><STRONG>Opgave</STRONG></TD>
    <TD><STRONG>Reng&oslash;ringsass. Vurdering</STRONG></TD>
    <TD><STRONG>Initialer</STRONG></TD>
    <TD><STRONG>Vurd 2</STRONG></TD>
    <td>knap godkend</td> 
 
  </TR>
  <?php
  $Select = mysql_query("SELECT * FROM schulstad_dagsrapport WHERE status = '1'");
  while($data = mysql_fetch_array($Select)) {

  ?>
  <tr>

<form method="POST" action="">

<td><input type="hidden" name="id" value = "<?php echo $data['id']?>" /><?php echo $data['id']?></td>
<td><?php echo $data['dato']?></td>
<td><?php echo $data['omrade']?></td>
<td><?php echo $data['delomrade']?></td>
<td><?php echo $data['opgave']?></td>
<td><?php echo $data['vurd1']?></td>
<td><?php echo $data['initialer']?></td>
<td><input type="text" value="0" name="besked" /></td>
<td><input type="submit" value="godkend" name="submit" /></td>

</form>

</tr>
  <?php
  }
  ?>
Avatar billede Bluedrop81 Nybegynder
11. december 2011 - 18:58 #7
Hej har forbindelsen til databasen det var formen der skulle flyttes ned som du skriver :)

Nu kan jeg komme lidt videre i projektet :)

Takker for din tid

læg et svar for dine points :)
11. december 2011 - 19:05 #8
Svar fra mig.  Og held og lykke med fremgang i projektet.
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