Avatar billede TiHs Nybegynder
02. maj 2007 - 12:43 Der er 8 kommentarer og
1 løsning

udtræk fra tabel med bestemt værdi

Hej eksperter

Jeg skal udtrække fra følgende tabel de rækker der
har atributten Jeans som $del:

Dette er min tabel:

CREATE TABLE `toej2` (
  `id` int(6) unsigned NOT NULL auto_increment,
  `del` varchar(100) NOT NULL default '',
  `pic` text NOT NULL,
  `maerke` varchar(100) NOT NULL default '',
  `model` text NOT NULL,
  `beskr` text NOT NULL,
  `str` text NOT NULL,
  `pris` decimal(18,2) NOT NULL default '0.00',
  `antal` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=26 ;

Lige nu henter jeg alt frem med:

<?php
$sql = 'SELECT * FROM toej2 ORDER BY id';
$result = $db->query($sql);
while ($row = $result->fetch()) {
    $output[] = '<table border=1 cellpadding=1 cellspacing=0 borderColor=black>';
    $output[] = '<tr>';
    $output[] = '<td width=50px><p align="center" class="style12">'.$row['del'].'</p></td>';
    $output[] = '<td width=100px><p class="style12">Mærke:<br>'.$row['maerke'].'</p></td>';
    $output[] = '<td width=100px><p class="style12">Model:<br>'.$row['model'].'</p></td>';
    $output[] = '<td width=70px><p class="style12">Størrelse:<br>'.$row['str'].'</p></td>';
    $output[] = '<td width=40px><img src="../pics/thumb'.$row['pic'].'.jpg"></td>';
    $output[] = '<td width=90px><p class="style12">Kr: '.$row['pris'] = number_format($row
        ['pris'], 2, ",", ".").'</p></td>';
    $output[] = '<td><a href="cart.php?action=add&id='.$row['id'].'"><img
        src="../indkoebskurv.gif" border="0"></a></td>';
    $output[] = '</tr>';
    $output[] = '</table><br>';
}
echo join('',$output);
?>

.. og jeg har denne her mysql.class.php til at styre det med:

<?php
/**
* MySQL Database Connection Class
* @access public
* @package SPLIB
*/
class MySQL {
    /**
    * MySQL server hostname
    * @access private
    * @var string
    */
    var $host;

    /**
    * MySQL username
    * @access private
    * @var string
    */
    var $dbUser;

    /**
    * MySQL user's password
    * @access private
    * @var string
    */
    var $dbPass;

    /**
    * Name of database to use
    * @access private
    * @var string
    */
    var $dbName;

    /**
    * MySQL Resource link identifier stored here
    * @access private
    * @var string
    */
    var $dbConn;

    /**
    * Stores error messages for connection errors
    * @access private
    * @var string
    */
    var $connectError;

    /**
    * MySQL constructor
    * @param string host (MySQL server hostname)
    * @param string dbUser (MySQL User Name)
    * @param string dbPass (MySQL User Password)
    * @param string dbName (Database to select)
    * @access public
    */
    function MySQL ($host,$dbUser,$dbPass,$dbName) {
        $this->host=$host;
        $this->dbUser=$dbUser;
        $this->dbPass=$dbPass;
        $this->dbName=$dbName;
        $this->connectToDb();
    }

    /**
    * Establishes connection to MySQL and selects a database
    * @return void
    * @access private
    */
    function connectToDb () {
        // Make connection to MySQL server
        if (!$this->dbConn = @mysql_connect($this->host,
                                      $this->dbUser,
                                      $this->dbPass)) {
            trigger_error('Could not connect to server');
            $this->connectError=true;
        // Select database
        } else if ( !@mysql_select_db($this->dbName,$this->dbConn) ) {
            trigger_error('Could not select database');
            $this->connectError=true;
        }
    }

    /**
    * Checks for MySQL errors
    * @return boolean
    * @access public
    */
    function isError () {
        if ( $this->connectError )
            return true;
        $error=mysql_error ($this->dbConn);
        if ( empty ($error) )
            return false;
        else
            return true;
    }

    /**
    * Returns an instance of MySQLResult to fetch rows with
    * @param $sql string the database query to run
    * @return MySQLResult
    * @access public
    */
    function query($sql) {
        if (!$queryResource=mysql_query($sql,$this->dbConn))
            trigger_error ('Query failed: '.mysql_error($this->dbConn).
                          ' SQL: '.$sql);
        return new MySQLResult($this,$queryResource);
    }
}

/**
* MySQLResult Data Fetching Class
* @access public
* @package SPLIB
*/
class MySQLResult {
    /**
    * Instance of MySQL providing database connection
    * @access private
    * @var MySQL
    */
    var $mysql;

    /**
    * Query resource
    * @access private
    * @var resource
    */
    var $query;

    /**
    * MySQLResult constructor
    * @param object mysql  (instance of MySQL class)
    * @param resource query (MySQL query resource)
    * @access public
    */
    function MySQLResult(& $mysql,$query) {
        $this->mysql=& $mysql;
        $this->query=$query;
    }

    /**
    * Fetches a row from the result
    * @return array
    * @access public
    */
    function fetch () {
        if ( $row=mysql_fetch_array($this->query,MYSQL_ASSOC) ) {
            return $row;
        } else if ( $this->size() > 0 ) {
            mysql_data_seek($this->query,0);
            return false;
        } else {
            return false;
        }
    }

    /**
    * Returns the number of rows selected
    * @return int
    * @access public
    */
    function size () {
        return mysql_num_rows($this->query);
    }

    /**
    * Returns the ID of the last row inserted
    * @return int
    * @access public
    */
    function insertID () {
        return mysql_insert_id($this->mysql->dbConn);
    }
   
    /**
    * Checks for MySQL errors
    * @return boolean
    * @access public
    */
    function isError () {
        return $this->mysql->isError();
    }
}
?>

Syntes ikke lige jeg kan se hvordan jeg skriver det når denne
mysqul.class.php er inde i billedet. Men bruger den til at
lave en indkøbskurv så SKAL desværre bruge det.

Så hvad skriver jeg istedet for:

$sql = 'SELECT * FROM toej2 ORDER BY id';
$result = $db->query($sql);
while ($row = $result->fetch()) {
Avatar billede michael_stim Ekspert
02. maj 2007 - 12:46 #1
$sql = 'SELECT * FROM toej2 WHERE del LIKE '%Jeans%' ORDER BY id';
$sql = 'SELECT * FROM toej2 WHERE del = 'Jeans' ORDER BY id';
Avatar billede TiHs Nybegynder
02. maj 2007 - 14:22 #2
har prøvet med først den ene linie og derefter den anden.
Første giver:

Warning: Division by zero in /customers/timhs.dk/timhs.dk/httpd.www/bukser.php on line 33

Warning: Division by zero in /customers/timhs.dk/timhs.dk/httpd.www/bukser.php on line 33

Notice: Query failed: Query was empty SQL: in /customers/timhs.dk/timhs.dk/httpd.www/cart/inc/mysql.class.php on line 109

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /customers/timhs.dk/timhs.dk/httpd.www/cart/inc/mysql.class.php on line 151

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /customers/timhs.dk/timhs.dk/httpd.www/cart/inc/mysql.class.php on line 167

Warning: join() [function.join]: Bad arguments. in /customers/timhs.dk/timhs.dk/httpd.www/bukser.php on line 50

Anden giver:

Parse error: syntax error, unexpected T_STRING in /customers/timhs.dk/timhs.dk/httpd.www/bukser.php on line 33
Avatar billede michael_stim Ekspert
02. maj 2007 - 14:27 #3
$sql = 'SELECT * FROM toej2 WHERE del LIKE "%Jeans%" ORDER BY id';
$sql = 'SELECT * FROM toej2 WHERE del = "Jeans" ORDER BY id';
Avatar billede TiHs Nybegynder
02. maj 2007 - 14:38 #4
Takker ... det virkede :o))
Avatar billede TiHs Nybegynder
02. maj 2007 - 20:40 #5
du sender bare et svar til point Michael....
Avatar billede michael_stim Ekspert
02. maj 2007 - 21:18 #6
Nej tak, samler ikke. Bare tag dem selv.
Avatar billede michael_stim Ekspert
02. maj 2007 - 21:22 #7
Du ved vad de forskellige sql'er gør, ikk?

LIKE "%jeans" //Ender på jeans
LIKE "jeans%" //starter på jeans
LIKE "%jeans%" //Har ordet jeans et eller andet sted i stringen
="jeans" //Siger sig selv (case sensitive)
Avatar billede TiHs Nybegynder
03. maj 2007 - 12:17 #8
ahaaa.... nej, det har jeg faktisk ikke prøvet at lege med før. Men
det er cool at vide for jeg kunne godt få brug for det på min side ja :o))

iøvrigt, så har jeg kun prøvet at indsætte nye rækker i min tabel, slette dem
og hente dem ud på siden. Men hvordan gør jeg det lige helt præcist hvis jeg i
en submit form vil lave kun to felter som jeg submitter som så vil erstatte
en bestemt værdi i et felt i min tabel ?

Her er min tabel:

CREATE TABLE `toej2` (
  `id` int(6) unsigned NOT NULL auto_increment,
  `del` varchar(100) NOT NULL default '',
  `pic` text NOT NULL,
  `maerke` varchar(100) NOT NULL default '',
  `model` text NOT NULL,
  `beskr` text NOT NULL,
  `str` text NOT NULL,
  `pris` decimal(18,2) NOT NULL default '0.00',
  `antal` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=28 ;

Lad os sige jeg har 200 rækker i tabellen, og vil kun ændre en værdi et
sted i en række. Hvordan gør jeg så det ?
Avatar billede TiHs Nybegynder
03. maj 2007 - 14:26 #9
lukket .. oprettet ny spm på sidste spm
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