Avatar billede TiHs Nybegynder
10. maj 2007 - 10:49 Der er 16 kommentarer og
1 løsning

UPDATE table med tekst

Hej eksperter

laver en update til en tabel med følgende kode:

$query = mysql_query("UPDATE regnskab SET $værdi1 = $værdi2 WHERE $værdi1 = $værdi1");
//success...
echo("Regnskab opdateret!");

og det virker fint i de felter der hedder *oel og *oelg ... men dem der hedder
*txt vil den ikke opdatere. oel og oelg er decimal felter ...


Her er min tabel:

CREATE TABLE `regnskab` (
  `id` tinyint(4) NOT NULL auto_increment,
  `aptxt` text NOT NULL,
  `apoelg` decimal(15,1) NOT NULL default '0.0',
  `apoel` decimal(15,1) NOT NULL default '0.0',
  `folitxt` text NOT NULL,
  `folioelg` decimal(15,1) NOT NULL default '0.0',
  `folioel` decimal(15,1) NOT NULL default '0.0',
  `motriktxt` text NOT NULL,
  `motrikoelg` decimal(15,1) NOT NULL default '0.0',
  `motrikoel` decimal(15,1) NOT NULL default '0.0',
  `jespertxt` text NOT NULL,
  `jesperoelg` decimal(15,1) NOT NULL default '0.0',
  `jesperoel` decimal(15,1) NOT NULL default '0.0',
  `rodetxt` text NOT NULL,
  `rodeoelg` decimal(15,1) NOT NULL default '0.0',
  `rodeoel` decimal(15,1) NOT NULL default '0.0',
  `maaltxt` text NOT NULL,
  `maaloelg` decimal(15,1) NOT NULL default '0.0',
  `maaloel` decimal(15,1) NOT NULL default '0.0',
  `puyoltxt` text NOT NULL,
  `puyoloelg` decimal(15,1) NOT NULL default '0.0',
  `puyoloel` decimal(15,1) NOT NULL default '0.0',
  `lundetxt` text NOT NULL,
  `lundeoelg` decimal(15,1) NOT NULL default '0.0',
  `lundeoel` decimal(15,1) NOT NULL default '0.0',
  `robertxt` text NOT NULL,
  `roberoelg` decimal(15,1) NOT NULL default '0.0',
  `roberoel` decimal(15,1) NOT NULL default '0.0',
  `segatxt` text NOT NULL,
  `segaoelg` decimal(15,1) NOT NULL default '0.0',
  `segaoel` decimal(15,1) NOT NULL default '0.0',
  `timtxt` text NOT NULL,
  `timoelg` decimal(15,1) NOT NULL default '0.0',
  `timoel` decimal(15,1) NOT NULL default '0.0',
  `tuuretxt` text NOT NULL,
  `tuureoelg` decimal(15,1) NOT NULL default '0.0',
  `tuureoel` decimal(15,1) NOT NULL default '0.0',
  `torbtxt` text NOT NULL,
  `torboelg` decimal(15,1) NOT NULL default '0.0',
  `torboel` decimal(15,1) NOT NULL default '0.0',
  `heintxt` text NOT NULL,
  `heinoelg` decimal(15,1) NOT NULL default '0.0',
  `heinoel` decimal(15,1) NOT NULL default '0.0',
  `hansitxt` text NOT NULL,
  `hansioelg` decimal(15,1) NOT NULL default '0.0',
  `hansioel` decimal(15,1) NOT NULL default '0.0',
  `kenttxt` text NOT NULL,
  `kentoelg` decimal(15,1) NOT NULL default '0.0',
  `kentoel` decimal(15,1) NOT NULL default '0.0',
  `svendtxt` text NOT NULL,
  `svendoelg` decimal(15,1) NOT NULL default '0.0',
  `svendoel` decimal(15,1) NOT NULL default '0.0',
  `oelg` decimal(15,1) NOT NULL default '0.0',
  `oel` decimal(15,1) NOT NULL default '0.0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=103 ;

Her er min update form:

<form action="submitupdateregnskab.php" method="post">
<b>Felt du vil rette</b><br>
<BR><input type="text" name="værdi1" size="10" maxlength="100" value="" />
<strong></strong><br />
<br>
<b>Den nye værdi</b><br>
<textarea name="værdi2" cols="40" rows="2"></textarea>

Hvad skal jeg gøre for at få den til at update i text felterne også ??
Avatar billede michael_stim Ekspert
10. maj 2007 - 10:53 #1
SET *txt='".$tekstfelt."'

Har du husket plinger?
Avatar billede TiHs Nybegynder
10. maj 2007 - 11:01 #2
Vil det sige jeg skal lave en ny af:

$query = mysql_query("UPDATE regnskab SET $værdi1 = $værdi2 WHERE $værdi1 = $værdi1");
så den vil hedde:
$query = mysql_query("UPDATE regnskab SET $værdi1 = $værdi2 WHERE $værdi1 = $værdi1");
Avatar billede TiHs Nybegynder
10. maj 2007 - 11:02 #3
Ups ... så den vil hedde:

$query = mysql_query("UPDATE regnskab SET $værdi1txt = $værdi2 WHERE $værdi1 = $værdi1");
Avatar billede TiHs Nybegynder
10. maj 2007 - 11:04 #4
kører godt ... hehe ....

Kommer her:

$query = mysql_query("UPDATE regnskab SET $værdi1txt = '".$værdi2."' WHERE $værdi1 = $værdi1");

hvad er plinger?
Avatar billede michael_stim Ekspert
10. maj 2007 - 11:05 #5
Jeg må ärligt indrömme at jeg ikke kan se logikken i din SQL.
Men hvis värdi2 er et tekstfelt skal den hedde:
$query = mysql_query("UPDATE regnskab SET $værdi1 = '". $værdi2 ."' WHERE $værdi1 = $værdi1");
Avatar billede TiHs Nybegynder
10. maj 2007 - 11:21 #6
Den form jeg sender har to værdier.
Den ene værdi= værdi1 er det felt jeg vil rette.
værdi2 er den nye tekste som jeg vil have værdi1 i tabellen skal have.
Så jeg har kun de to felter i min form .... så det jeg siger til den er
at den skal finde felt der hedder det jeg skriver i første felt og erstatte indholdet med det jeg skriver i andet felt ....

<form action="submitupdateregnskab.php" method="post">
<b>Felt du vil rette</b><br>
<BR><input type="text" name="værdi1" size="10" maxlength="100" value="" />
<strong></strong><br />
<br>
<b>Den nye værdi</b><br>
<textarea name="værdi2" cols="40" rows="2"></textarea>

Så er det stadig:

$query = mysql_query("UPDATE regnskab SET $værdi1 = '". $værdi2 ."' WHERE $værdi1 = $værdi1");
Avatar billede michael_stim Ekspert
10. maj 2007 - 11:25 #7
OK men pröv at skifte värdien ud i $värdi1:
$värdi1="felt1"
$query = mysql_query("UPDATE regnskab SET felt1 = '". $værdi2 ."' WHERE felt1 = felt1");

Det giver ingen mening???
Avatar billede TiHs Nybegynder
10. maj 2007 - 11:34 #8
hmmm.... ser ud til det bare var et problem med at jeg manglede '".$værdi2."' og ikke kun $værdi2 ....
Hvordan kan det være at når det er tekst der skal dette på, men som ikke er
nødvendigt når det er decimal/tal felter ???

hvad var plinger forresten ?

... men det virker nu fint med værdi1 ... :o)
Avatar billede michael_stim Ekspert
10. maj 2007 - 11:38 #9
Number felter kan ikke skilles ad med mellemrum, det kan tekstfelter. Og er de ikke i plinger (' eller ") ved programmet ikke hvornår stringen slutter.

Her er en test. //Her<- her slutter stringen
"Her er en test." //"Her er en test."<- her slutter stringen
Avatar billede TiHs Nybegynder
10. maj 2007 - 11:44 #10
ahaaa.... ok, så lærte jeg også det .... takker for godt og forståeligt svar :o)
Avatar billede michael_stim Ekspert
10. maj 2007 - 11:49 #11
Du kan f eks heller ikke have plinger i en tekst uden at escape/bearbejde dem.

$sql="INSERT INTO tabel (id, felt2) VALUES(1, "super "hyper" duper")";
$sql="INSERT INTO tabel (id, felt2) VALUES(1, "super "<- UPS her går det galt hyper" duper")";
Avatar billede TiHs Nybegynder
10. maj 2007 - 12:51 #12
Den er så lige lidt sværre at se for mig ... :o/ ....
Avatar billede TiHs Nybegynder
14. maj 2007 - 10:58 #13
Vil du have dine point ?? :o)
Avatar billede michael_stim Ekspert
14. maj 2007 - 11:12 #14
Nej tak, samler ikke.
Avatar billede michael_stim Ekspert
14. maj 2007 - 11:16 #15
Kommentar: michael_stim
10/05-2007 11:49:32

Tekst som skal ind i databasen:
"Jeg bliver kaldt "smukke" af min käreste" //Går ikke her slutter stringen för s'et i smukke.

"Jeg bliver kaldt \"smukke\" af min käreste" //Her kan hele teksten sättes ind i basen, fordi den er blevet "escaped".
Avatar billede TiHs Nybegynder
14. maj 2007 - 12:33 #16
hehe ... okay :o)
.. I øvrigt kører det fint med at opdatere min tabel frem og tilbage når jeg tilføjer ting til min indkøbkurv. Har valgt at opdatere tabellem både i tilføj vare og slet vare.

Se her:

session_start();
// Process actions
$cart = $_SESSION['cart'];
$action = $_GET['action'];
switch ($action) {
    case 'add':
    if(is_numeric($_GET['id'])) //Er ID et nummer?
    {
        $id = intval($_GET['id']);
        $query = mysql_query("SELECT id FROM toej2 WHERE lager > 0 AND id = ".$id." LIMIT 1");
        if(mysql_num_rows($query)==0) //Fandt vi varen og der er ingen på lager?
        {
    header( "location: ../minusvare.php" );
exit;
}else{
            if ($cart) {
                $cart .= ','.$_GET['id'];
            } else {
                $cart = $_GET['id'];
            }
        }
    }
$query = mysql_query("UPDATE toej2 SET lager = lager-1 WHERE id = ".$id."");

        break;
    case 'delete':
    if(is_numeric($_GET['id'])) //Er ID et nummer?
    {
        $id = intval($_GET['id']);
        $qty = $_GET['qty'];
        $query = mysql_query("SELECT id FROM toej2 WHERE id = ".$id." LIMIT 1");
        if(mysql_num_rows($query)==1)
        {
        if ($cart) {
            $items = explode(',',$cart);
            $newcart = '';
            foreach ($items as $item) {
                if ($_GET['id'] != $item) {
                    if ($newcart != '') {
                        $newcart .= ','.$item;
                    } else {
                        $newcart = $item;
                    }
                }
            }
            $cart = $newcart;
        }
    }
}
$query = mysql_query("UPDATE toej2 SET lager = lager+".$qty." WHERE id = ".$id."");
        break;
}
$_SESSION['cart'] = $cart;
header("location:" . $_SERVER['HTTP_REFERER']);
?>

Har så bare et problem nu. Hvordan kan jeg lave en update til min tabel ligesom funktionen case 'delete': som skal køre når man lukker vinduet ned ? Og hvordan laver jeg en session expire som også vil gøre det efter f.eks. 5 min. ?? Håber det kan gøres uden cookies og java script ....
Avatar billede TiHs Nybegynder
06. oktober 2008 - 16:53 #17
lukket
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