Avatar billede scooterDK Nybegynder
25. marts 2010 - 17:18 Der er 14 kommentarer og
1 løsning

update - har problemer med basis forståelse :=)

Hej Jeg prøver at lave en simpel update til mis database udfra en form... jeg har efterhånden prøvet mange løsninger, men ikke haft held til at lave det rigtigt. Dette script jeg har lavet, virker næsten - altså lige bortset fra at den ikke opdaterer databasen, ofg der kommer heller ikke nogle fejlmeldinger....

her er min kode.:

<?php
mysql_connect("xxx", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());

$idnr = $_POST["data"];

$result_id = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$result_Vis_t = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$result_Mail_t = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$result_Pris = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$result_Andet = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");


$row_id = mysql_fetch_array($result_id);
$row_Vis_t = mysql_fetch_array($result_Vis_t);
$row_Mail_t = mysql_fetch_array($result_Mail_t);
$row_Pris = mysql_fetch_array($result_Pris);
$row_Andet = mysql_fetch_array($result_Andet);


if($opdater)

"UPDATE lejr_ulv SET Vis_t="& request.form(Vis) & " WHERE id='$idnr'";


?>

<center><form action="<?php echo $php_self ?>?id=<?php echo $idnr;?>">

        <p>Dit Navn:</p>
        <input type="text" name="Vis" value="<?php echo $row_Vis_t[Vis_t];?>"><br />
        <p>Overskrift:</p>
        <input type="text" name="Mail" value="<?php print($line['row_Mail_t']); ?>"><br />
        <p>Selve nyheden:</p>
        <textarea  name="Andet1" rows="6" cols="20" value=""><?php print($line['row_Andet']); ?></textarea><br />
        <input type="submit" name="opdater" value="Opdater">
        <input type="reset" name="Send" value="Ryd alt">

</form></center>

er der en der kan hjælpe mig vidre, og på samme tid vil jeg gerne forstå hvad jeg laver, måske en forklarring på en eventuelt løsning vil være højt værsat...
Avatar billede Slettet bruger
25. marts 2010 - 17:23 #1
Quote
if($opdater)

"UPDATE lejr_ulv SET Vis_t="& request.form(Vis) & " WHERE id='$idnr'";

For at udfører din SQL-kode skal du bruge mysql_query()-funktionen. Du kan ikke bare skrive en SQL-kode direkte ind i filen og håbe på PHP selv kan finde ud af at udfører din forspørgelse ;-)
Avatar billede Slettet bruger
25. marts 2010 - 17:29 #2
Hovsa, glemte lige at kommenterer på det hele.

Hvor får du $opdater fra? Gætter på det er den måde du tjekker på om man har brugt formen, men så skal du bruge $_POST["opdater"] eller bruge funktionen extract()

Derudover så vil jeg gætte på at & request.form(Vis) & er fra ASP eller lignende (kender intet til ASP), men den går desværre ikke i PHP.
Så prøv og ændre den SQL kode til noget ala følgende:
mysql_query("UPDATE lejr_ulv SET Vis_t=" . $_POST["vis"] . " WHERE id='" .$idnr . ")
Avatar billede Slettet bruger
25. marts 2010 - 17:32 #3
Damn, må være træt.. men da jeg lige læste det igennem igen, så faldt jeg da over en fejl mere.

Du henter $idnr ud fra POST-data, men i din form smider du den i URL-adressen og du skal derfor hente den med GET istedet.
Så prøv følgende:
$idnr = $_GET["id"];
Avatar billede dkfire Nybegynder
25. marts 2010 - 20:09 #4
Måske bør du starte med at læse lidt mere om emnet php/mysql.

Hvorfor er det lige at du bruger 5 SQL forespørgelser til at hente så få data ud af en og samme tabel ?

$result_id = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$result_Vis_t = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
....

Disse to og de efterfølgende kald vil hente samme data ud.
Dvs at alle dine $row_xx variabler vil indeholde det samme, et array med data fra en række i dine tabel i databasen.
Der vil ikke være nogen forskel.
$row_id = mysql_fetch_array($result_id);
$row_Vis_t = mysql_fetch_array($result_Vis_t);
....


Dernæst er der lige et par ting:
Hvor kommer $line fra ?
Hvor kommer $php_self fra ?  Måske du mener $_SERVER['PHP_SELF'] ?
Hvor kommer $idnr oprindelig fra ? Kommer den fra en helt anden side?
Avatar billede scooterDK Nybegynder
25. marts 2010 - 20:24 #5
Jeg ved godt at jeg har meget at lære endnu, normalt programerer jeg i ASP, men vil gerne lære lidt php ! ! !

Her kommer Idnr fra :

<?php

$idnr = 1;

mysql_connect("xxx", "xxx", "xxxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());

$result_id = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$result_Vis_t = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$result_Mail_t = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$result_Pris = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$result_Andet = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");


$row_id = mysql_fetch_array($result_id);
$row_Vis_t = mysql_fetch_array($result_Vis_t);
$row_Mail_t = mysql_fetch_array($result_Mail_t);
$row_Pris = mysql_fetch_array($result_Pris);
$row_Andet = mysql_fetch_array($result_Andet);

?>
<table style="position:absolute;left:0px;top:0px;width:323px;height:126px;z-index:0;" cellpadding="0" cellspacing="0" id="Table1">
<tr>
<td align="left" valign="top" style="border:0px #C0C0C0 solid;width:160px;height:126px;">
<font style="font-size:12px" color="#497DB2" face="Arial"><?php echo $row_id[Id];?></font><font style="font-size:16px" color="#000000" face="Arial"><b><br>
</b></font><font style="font-size:13px" color="#000000" face="Arial">Vare nr.:<?php echo $row_Vis_t[Vis_t];?><br>
<br>
<b>Antal : <?php echo $row_Pris[Pris];?> stk.<br>
Pris :&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 100,00</b><br>

<form action="L_Update_1.php" method="post">
<input type="hidden" name="data" value="<?php echo $row_id[Id];?>">
<br>
<input type="submit" value="<?php echo $row_id[Id];?>">
</form>

</font></td>
<td align="left" valign="top" ;border:0px #C0C0C0 solid;height:126px;background-repeat:no-repeat;background-position:center center;">
&nbsp;</td>
</tr>
</table>

Dernæst siden : L_Update_1.php - med rettelser fra : roxki - men nu får jeg en html fejl - Webstedet kan ikke vise siden ! !

her er koden :

<?php
mysql_connect("kfum-borkop.dk.mysql", "kfum_borkop_dk", "FHKrKPvp") or die(mysql_error());
mysql_select_db("kfum_borkop_dk") or die(mysql_error());

$idnr = $_POST["data"];


$result_id = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$result_Vis_t = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$result_Mail_t = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$result_Pris = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$result_Andet = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");


$row_id = mysql_fetch_array($result_id);
$row_Vis_t = mysql_fetch_array($result_Vis_t);
$row_Mail_t = mysql_fetch_array($result_Mail_t);
$row_Pris = mysql_fetch_array($result_Pris);
$row_Andet = mysql_fetch_array($result_Andet);


mysql_query("UPDATE lejr_ulv SET Vis_t=" . $_POST["vis"] . " WHERE id='" .$idnr . ")


?>

<center><form action="<?php echo $php_self ?>?id=<?php echo $idnr;?>">

        <p>Dit Navn:</p>
        <input type="text" name="Vis" value="<?php echo $row_Vis_t[Vis_t];?>"><br />
        <p>Overskrift:</p>
        <input type="text" name="Mail" value="<?php print($line['row_Mail_t']); ?>"><br />
        <p>Selve nyheden:</p>
        <textarea  name="Andet1" rows="6" cols="20" value=""><?php print($line['row_Andet']); ?></textarea><br />
        <input type="submit" name="opdater" value="Opdater">
        <input type="reset" name="Send" value="Ryd alt">

</form></center>
Avatar billede dkfire Nybegynder
25. marts 2010 - 20:31 #6
Jeg vil første meget hurtigt bede dig om at ændre dit kode til databasen inden det er for sent!
Avatar billede scooterDK Nybegynder
25. marts 2010 - 21:06 #7
ok :=( - har set detaljen , er hermed rettet...
Avatar billede scooterDK Nybegynder
25. marts 2010 - 21:31 #8
ok, jeg stiller spørgsmålet på en anden måde...
Hvis jeg har en Form hvorfra jeg henter en stræng fra min mysql database, en som jeg på en forige side har dikteret ($idnr). jeg kan se formen, med de rigtige data, men nu kommer problemet hvordan opdaterer jeg de ændrede indtastninger fra formen. når jeg trukker på opdater knappen ?? hvordan ser syntaxen ud, (har forkortet koden væsentligt...)
Her er koden lidt mere overskuelig...

<?php
$idnr = $_POST["data"];
$result = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$row = mysql_fetch_array($result);
?>

<center><form action="opdater" id=<?php echo $idnr;?>">

        <p>Tekst:</p>
        <input type="text" name="Vis" value="<?php echo $row[Vis_t];?>"><br />
        <input type="submit" name="opdater" value="Opdater">
        <input type="reset" name="Send" value="Ryd alt">

</form></center>
Avatar billede dkfire Nybegynder
25. marts 2010 - 22:15 #9
For det første, så er der ingen action som hedder opdater, du bliver nød til at angive en fil.
Din form mangler også en method, det er enten POST eller GET.

Dernæst skal din form ikke have et id med samme værdi som det id du prøver at ændre.
Lav et hidden felt i din form som skal have værdien af $idnr.

For at kunne opdatere en række i din database bliver din kode nød til at tjekke om du har sendt noget data fra formen når du kalder siden igen.
Dette tjek kan gøre med en if-sætning.
If-sætning kan så afgøre om du skal vise formen eller du skal opdatere din tabel i databasen.
Avatar billede scooterDK Nybegynder
25. marts 2010 - 23:14 #10
ok , dvs. at hvis jeg skriver sådan, så bør det virke ??

<?php
$idnr = $_POST["data"];
$result = mysql_query("SELECT * FROM lejr_ulv WHERE id=$idnr");
$row = mysql_fetch_array($result);
if (isset($_POST['opdater'])) {
    mysql_query("UPDATE lejr_ulv SET Vis_t='$_POST[navn]' WHERE id=1");
}
?>
<center>
<form method="post" action="L_Update_1.php">
<input type="hidden" name="opdater" value="<?php echo $row[Id];?>">
<input type="hidden" name="data" value="<?php echo $row['Id'];?>">
Name<input type="text" name="navn" value="<?php echo $row['Vis_t']; ?>">
<input type="submit" name="submit" value="update">
</form>
</center>
Avatar billede dkfire Nybegynder
26. marts 2010 - 11:50 #11
Ja det bør virke, husk dog at forbinde til databasen.
Og så er det en god ide at bruge "or die(mysql_error())" under udvikling efter hver kald til mysql.

  mysql_query("UPDATE lejr_ulv SET Vis_t='$_POST[navn]' WHERE id=1") or die(mysql_error());
Avatar billede dkfire Nybegynder
26. marts 2010 - 11:55 #12
Og så lige en kort kommentar, <center> </center> er et gammelt tag som ikke bør bruges mer i html.
Avatar billede scooterDK Nybegynder
26. marts 2010 - 15:39 #13
Tak for hjælpen, der kommer sikkert flere "detaljer" når jeg kommer vidre, men der laver jeg en ny post :=)
Avatar billede scooterDK Nybegynder
26. marts 2010 - 15:43 #14
dkfire - hvordan tildeler jeg dig point, jeg kan kun vælge mig selv at give point ????
Avatar billede dkfire Nybegynder
26. marts 2010 - 17:56 #15
Det gør du ved at jeg ligger et 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
Computerworld tilbyder specialiserede kurser i database-management

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