Avatar billede dytti Novice
31. juli 2011 - 18:50 Der er 11 kommentarer og
1 løsning

Ændre værdien fra en database

I min mysql db har jeg en kolonne der hedder "mad"

fra en dropdownbox kan værdierne: maelk, aeble, roedgroed, kaal indsættes i "mad" kolonnen.

Output ser så sådan ud:
<?php $query  = "SELECT *  FROM mad WHERE mad_id='$_GET[mad_id]'";
$result = mysql_query($query) or die("Mysql Error: ".mysql_error());

while($row = mysql_fetch_array($result, MYSQL_ASSOC))

{
$mad=$row['mad'];
} ?>

<?php echo $mad ;?>

På siden vises det så f.eks. som "maelk" Så det virker godt nok.

Nu vil jeg så godt ændre:
maelk til mælk
aeble til æble
roedgroed til rødgrød
kaal til kål

Altså denne her <?php $query  = "SELECT *  FROM mad WHERE mad_id='$_GET[mad_id]'";
finder en værdi der hedder maelk, men jeg vil godt have et output der hedder mælk.

Er det noget med en "if" sætning, eller hvordan gør jeg?


Håber ikke at det er ren volapyk :-)
Avatar billede olebole Juniormester
31. juli 2011 - 18:55 #1
<ole>

Hvorfor indsætter du ikke bare 'mælk' og 'æble'  i stedet for 'maelk' og 'aeble'?

/mvh
</bole>
Avatar billede grafik-anders Seniormester
31. juli 2011 - 19:52 #2
Virker denne her?


<?php $query  = "SELECT *  FROM mad WHERE mad_id='$_GET[mad_id]'";
$result = mysql_query($query) or die("Mysql Error: ".mysql_error());

while($row = mysql_fetch_array($result, MYSQL_ASSOC))

{
$row['mad'] = str_replace("oe","ø", $row['mad']);
$row['mad'] = str_replace("Oe","Ø", $row['mad']);
$row['mad'] = str_replace("aa","å", $row['mad']);
$row['mad'] = str_replace("Aa","Å", $row['mad']);
$row['mad'] = str_replace("ae","æ", $row['mad']);
$row['mad'] = str_replace("Ae","Æ", $row['mad']);

$mad=$row['mad'];
} ?>
Avatar billede grafik-anders Seniormester
31. juli 2011 - 19:58 #3
Avatar billede olebole Juniormester
31. juli 2011 - 21:54 #4
Så ville strtr nok være et mere oplagt bud:
    http://www.php.net/manual/en/function.strtr.php

- men jeg forstår stadig ikke, hvorfor man ikke bare indsætter de data, man skal bruge. Det må være mere logisk end at begynde at oversætte data, når de skal bruges.

Det kunne skyldes problemer med at indsætte og bruge skandinaviske tegn, men så er det jo problemet - og så er det et andet sted, løsningen ligger.

Vi får sikkert noget mere at vide  =)
Avatar billede dytti Novice
01. august 2011 - 07:02 #5
Hej alle

Grunden er at der på siden skal bruges et andet script (jpgraph), som jeg ikke kan få til at accepterer æ,ø,å, og mellemrum.

Er der en løsning på det problem, vil jeg meget gerne høre om det ;-)

Jeg prøver nogen af ovenstående i dag, og vender tilbage med en tilbagemelding :-)
Avatar billede olsensweb.dk Ekspert
01. august 2011 - 10:31 #6
løsningen er at kører UTF-8 hele vejen rundt!!

tag fat om nældens rod, brug det rigtige tegnsæt fra straten af, og ret det i db
db:
set text felter til UTF-8 (utf8_general_ci)
DEFAULT CHARSET=utf8
set connecion tegnsæt (mysql_set_charset) http://dk.php.net/manual/en/function.mysql-set-charset.php

filer:
skriv dine filer i formatet UTF-8
Gem filerne i UTF-8 uden BOM
anvend meta tag i din header  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

har jeg glemt nogle steder ??

ref http://jpgraph.net/download/manuals/chunkhtml/ch08s08.html
By default all JpGraph library files and examples are encoded in UTF-8

ref http://jpgraph.net/doc/faq.php#F5-16

5-16 How can I print unicode characters?

Use &#XXXX; format in your strings where XXXX is the decimal value for the unicode character. You may find a list of Unicode characters and there encodings at www.unicode.org Please observe that the encoding in the lists are given in hexadecimal and these values must be converted to decimal.

Note: If You are working in an UTF-8 environment then the characters may be input directly.
Avatar billede dytti Novice
01. august 2011 - 12:49 #7
ronols - Det var den vej gerne selv ville, men kunne ikke lige overskue det.

Du fik mig på rette vej. Så smid et svar så lukker jeg ;-)
Avatar billede olsensweb.dk Ekspert
01. august 2011 - 13:57 #8
indtil du får rettet dine data i db er her en nødløsning
<?php
function dansk($str){
    $ar = array("AR"=>"&AElig;","OE"=>"&Oslash;", "AA"=>"&Araing;", "ae"=>"&aelig;", "oe"=>"&oslash;","aa"=>"&aring;");
    return strtr($str, $ar);   
}


$query  = "SELECT *  FROM mad WHERE mad_id='$_GET[mad_id]'";
$result = mysql_query($query) or die("Mysql Error: ".mysql_error());
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$mad=dansk($row['mad']);
}
?>
<?php echo $mad ;?>
Avatar billede olebole Juniormester
01. august 2011 - 14:56 #9
"Det er sgu *smukt*!" snøftede den gamle mand, rørt  *D
Avatar billede dytti Novice
02. august 2011 - 09:02 #10
Jeg elsker at se når folk kan deres kram :-)

Jeg takker og nejer.
Avatar billede olsensweb.dk Ekspert
02. august 2011 - 11:01 #11
tfp, og selvtak
jeg lærte også noget, jeg havde vist aldrig brugt strtr før, nogle gange smider ole et guldkorn man skal skynde sig at tage op, jeg fik da en function gjort merer simpel :), det er jo nok ikke sidste gang vi skal convaterer æøå, så længe alle ikke er gået over til UTF-8 hele vejen rundt

hvis du ikke vil opdaterer direkte via phpmyadmin (*) er her et script der gør det for dig
<?php
    $conn = mysql_connect ("localhost", "root", "", true);
    if (! $conn )     die( 'Could not connect: ' . mysql_error ());
    mysql_select_db("test") or die('Could not select database ');
    mysql_set_charset('utf8',$conn);
   
    function convert($str){
        $ar = array("ae"=>"æ", "oe"=>"ø","aa"=>"å");
        return strtr($str, $ar); 
    }
?>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
    </style>
    <script type="text/javascript">
    </script>
</head>
<body>
<?php   
    $sql = "select * from mad";
    $rs = mysql_query($sql, $conn);    
    while ($row = mysql_fetch_assoc($rs)){     
        $mad = convert($row['mad']);     
        $id = $row['mad_id'];       
       
        $sql1 = "update mad  set mad = '$mad' where mad_id = '$id'";       
        $rs1 = mysql_query($sql1, $conn);       
    }   
?>
</body>
</html>


db
CREATE TABLE IF NOT EXISTS `mad` (
  `mad_id` int(11) NOT NULL AUTO_INCREMENT,
  `mad` text NOT NULL,
  PRIMARY KEY (`mad_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;



data før afvikling af script
INSERT INTO `mad` (`mad_id`, `mad`) VALUES
(1, 'maelk'),
(2, 'aeble'),
(3, 'roedgroed'),
(4, 'kaal');


data efter afvikling af script
INSERT INTO `mad` (`mad_id`, `mad`) VALUES
(1, 'mælk'),
(2, 'æble'),
(3, 'rødgrød'),
(4, 'kål');


* læs http://www.eksperten.dk/spm/943684 #12
Avatar billede olebole Juniormester
02. august 2011 - 11:28 #12
Tak, ronols. Ja, det er en dejlig, lille funktion (jeg håber sq ikke, der er psykologer, der måtte læse med i vores formuleringer!). Den kan bruges til allehånde strengoversættelser ... smilies er et andet oplagt eksempel
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

IT-JOB