Avatar billede kaktus Nybegynder
08. september 2009 - 13:25 Der er 9 kommentarer og
1 løsning

objekt orienteret update db

Jeg har en fil (index.php) med en form der skal opdaterer en database....
i filen db.php findes mine klasser og funktioner

MEN jeg er helt ny i objektorienteret php og det virker ikke, kan du hjælpe?

index.php
<?
require('db.php');
$demo = new Example();
$list = $demo->getList();
$catid = $_POST["catid"];
$category = $_POST["category"];
$db = new Example();
$db->update_category($category,$catid);

    foreach($list as $item) {?>
    <div id="item_<?=$item['catid'];?>">
        <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
        id=<?=$item['catid'];?> | orderid=<?=$item['orderid'];?>
        <input type="text" name="category" value="<?=$item['category'];?>" />
        <input type="hidden" name="catid" value="<?=$item['catid'];?>" />
        <input type="submit" name="submit" value="Update" /></form>
    </div>
<? }?>

db.php
<?
class Example {
    protected $conn;
    protected $user     = 'bruger';
    protected $pass     = 'kodeord';
    protected $dbname     = 'db navn';
    protected $host     = 'localhost';
   
    public function __construct() {
        $this->conn = mysql_connect($this->host, $this->user, $this->pass);
        mysql_select_db($this->dbname,$this->conn);
    }
   

    public function update($category,$catid){
            $this->result = mysql_query("UPDATE categories SET category={$category} WHERE catid={$catid}");
        }
   
   
    public function getList() {
        $sql = "SELECT * FROM categories ORDER BY orderid";
        $recordSet = mysql_query($sql,$this->conn);
        $results = array();
        while($row = mysql_fetch_assoc($recordSet)) {
            $results[] = $row;
        }
        return $results;
    }

}

nb
hverken
    public function update($category,$catid){
            $this->result = mysql_query("UPDATE categories SET category={$category} WHERE catid={$catid}");
        }
eller   
   
    public function update_category(){
        mysql_query("UPDATE categories SET category='$this->category' WHERE catid='$this->catid'");
    }
vil virke.........suk
Avatar billede dkfire Nybegynder
08. september 2009 - 13:30 #1
Hvad giver den af fejlbesked til dig ?
Sæt en "or die(mysql_error())" efter dine mysql_query.
Avatar billede zynzz Praktikant
08. september 2009 - 17:41 #2
Måske du skal sætte $this->conn på din mysql_query() ??!
Avatar billede kaktus Nybegynder
08. september 2009 - 18:01 #3
dkfire
Hvis jeg sætter dit forslag ind her....(line4)

public function update_category($category,$catid){
    $this->result = mysql_query("UPDATE categories SET category={$category} WHERE catid={$catid}");
            or die(mysql_error());
        }

får jeg syntaxfejl
Parse error: syntax error, unexpected T_LOGICAL_OR in /sti

//or die(mysql_error())
ved udkommentering sker der intet ved klik på submit form (update)


og denne virker heller ikke...zynzz
public function update_category($category,$catid){
            $this->conn  = mysql_query("UPDATE categories SET category={$category} WHERE catid={$catid}");
            //or die(mysql_error());
        }
Avatar billede zynzz Praktikant
08. september 2009 - 18:42 #4
Du kunne jo evt prøve:

public function update($category,$catid){
mysql_query("UPDATE categories SET category='".$category."' WHERE catid='".$catid."'", $this->conn);
}
Avatar billede kaktus Nybegynder
08. september 2009 - 19:26 #5
zynzz
JA OK den virker...............
public function update_category($category,$catid){
   
mysql_query("UPDATE categories SET category='$category' WHERE catid='$catid'", $this->conn);
}
MEN siden behøver at refreshing.......

Jeg prøvede denne men uden held.......

public function update_category($category,$catid){
    if (isset($category,$catid)) {
mysql_query("UPDATE categories SET category='$category' WHERE catid='$catid'", $this->conn);
    $res = "<script type='text/javascript'>
    window.location = '$_SERVER[PHP_SELF]'
        </script>";
    return $res;
    }

}

Nogle forslag????
Måske det er index siden der skal opdateres....?????
Avatar billede zynzz Praktikant
08. september 2009 - 19:40 #6
1. Din syntax i dit php stinker...
2. Udskriv koden... (vha. echo)
Avatar billede zynzz Praktikant
08. september 2009 - 19:46 #7
Og hvis det var mig ville jeg lave en action på hele formen (<form>) vha. PHP_SELF

Og i Toppen af siden sætte:

$demo = new Example();

if(isset($_POST['Send'])){
$demo->update_category($_POST['category'],$_POST['catid']);
}

$list = $demo->getList();

HUSK AT TJEKKE INDHOLDET TIL MYSQL DATABASEN ($_POST)
Avatar billede kaktus Nybegynder
08. september 2009 - 19:58 #8
Ja jeg er som sagt hel ny i det her........
og ved ikke helt hvad det betyder når en syntax/kode "stinker", men gætter på at det betyder at det er noget skidt??

Jeg benytter netop <?=$_SERVER['PHP_SELF']?> som action i min form.......

og fik selv implimenteret reload funktion (og det virker)
public function windowLocation($adresse){
    $res = "<script type='text/javascript'>
    window.location = '$adresse'
        </script>";
    return $res;
        }
zynzz læg et svar... det var jo dig der hjalp på vej
TAK for svar
Avatar billede zynzz Praktikant
08. september 2009 - 20:10 #9
Altså det er lækkert du kan få det til at virke, men ellers bare skriv... :)
Avatar billede dkfire Nybegynder
08. september 2009 - 21:07 #10
Og for lige at rette din syntaks, så skulle du gøre:
public function update_category($category,$catid){
    $this->result = mysql_query("UPDATE categories SET category={$category} WHERE catid={$catid}") or die(mysql_error());
        }

Ret sikker på at du på php's egen side kan se hvordan du bruge or og die funktionerne.
Det vil hjælpe dig til at vise de fejlbeskeder der måtte komme fra mysql hvis din query fejler.
Men igen, slå visning af fejlbeskeder til.
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