Visar inlägg med etikett MySQL. Visa alla inlägg
Visar inlägg med etikett MySQL. Visa alla inlägg

lördag 26 mars 2011

Flytta lokal Wordpress

Vill du flytta din lokala Wordpress-blogg till en annan dator? Jag har min Wordpress-blogg tillsammans med en lokal Apache server - XAMPP lite med en MySQL-databas.

Jag köpte en ny dator och behövde flytta min blogg. Först installerade jag servern och Wordpress lokalt på datorn. Sedan kopierade jag mappen wordpress som jag hittade I c:\XAMPP\xampplite\htdocs. Sedan kopierade jag mappen wordpress som fanns I C:\XAMPP\xampplite\mysql\data. Eftersom jag har lösenord på databasen fick jag via phpmyAdmin ställa in det på min databas. Sedan fungerade allt som vanligt!

måndag 12 juli 2010

PHP sidbläddring / pagination med MySQL RAND()

Ibland vill man ha sidbläddring av slumpmässigt valda poster från en databastabell. För att det ska fungera kan man skapa ett slumptal och spara i en session. Slumptalet används sedan i queryn.

if (!isset($_SESSION['random_number'])) {
srand ((double) microtime( )*1000000);
$random_number = rand( );
$_SESSION['random_number'] = $random_number;
} else {
$random_number = $_SESSION['random_number'];
}

För att inte samma "slumpade" poster ska visa sig när man besökt en annan sida och sedan gått tillbaka måste man ta bort sessionen mellan besöken. För att särskilja de olika sidornas sessioner lägger jag till sidans unika id till sessions-namnet. Skriv såhär istället:

//array med id för de sidor som har slumpad sidbläddring
$page_ids[]=1;
$page_ids[]=2;
$page_ids[]=3;

foreach ($page_ids as &$value) {
if($page_id<>$value){
if (isset($_SESSION['random_number'.$value])) {
unset($_SESSION['random_number'.$value]);//tar bort de andra sidornas sessioner
}
}
}

if (!isset($_SESSION['random_number'.$page_id])) {
srand ((double) microtime( )*1000000);
$random_number = $page_id.rand( );
$_SESSION['random_number'.$page_id] = $random_number;
} else {
$random_number = $_SESSION['random_number'.$page_id];
}

I SQL-queryn, lägg till:
$query.=" ORDER BY RAND(".$random_number.") ";

Se hur sidbläddring / pagination med php fungerar i mitt tidigare inlägg Pagination / Sidbläddring med PHP & Mysql

Pagination / Sidbläddring med PHP & Mysql

Ska man hämta och visa många poster från databasen, t ex nyheter, kan man dela upp resultatet på flera sidor. Då sparar man sidladdningstid och besökaren slipper skrolla så mycket. Här är ett exempel på hur man skriver kod för att bläddra mellan sidor (på engelska "pagination").

<?php

//**** Öppna databasen ****

// Antal poster per sida
$rowsperpage=10;

// Aktuell sida
$pageSide=(isset($_GET["ps"]) && is_numeric($_GET["ps"]) && $_GET["ps"]>0 ? $_GET["ps"] : 1);

// Startpost
$offset=($pageSide>1 ? ($pageSide-1)*$rowsperpage : 0 );

// Visa posterna
$query="SELECT * FROM news LIMIT $offset, $rowsperpage"; 
$result=mysql_query($query);
while($row=mysql_fetch_array($result)){
echo $row['post'] . '<br>';}

// Totala antalet poster i tabellen
$query="SELECT COUNT(id) FROM news";
$result=mysql_query($query);
$row=mysql_fetch_array($result);
$total = $row[0];

// Totala antalet sidor
$maxpage=ceil($total/$rowsperpage);

// Visa navigeringen
?><div class="news_nav">
    <ul>
        <?php if($pageSide>1){?>
            <li><a href="?"><<</a></li>
            <li><a href="?ps=<?= $pageSide-1 ?>"><</a></li>
       <?php }else{ ?>
           <li class="inactive_page"><<</li>
           <li class="inactive_page"><</li>
       <?php } ?>
      <?php
        for($i=1; $i<=$maxpage; $i++){
          if($pageSide==$i)
             echo "<li class=\"current_page\">".$i."</li>";
          else
             echo '<li><a href="?ps='.$i.'">'.$i.'</a></li>';
        }
      ?>
     <?php if($pageSide<$maxpage){?>
        <li><a href="?ps=<?= $pageSide+1 ?>">></a></li>
        <li><a href="?ps=<?= $maxpage ?>"> >></a></li>
     <?php }else{ ?>
        <li class="inactive_page">>></li>
        <li class="inactive_page">></li>
      <?php } ?>
    </ul>
</div>

.news_nav ul {
display:block;
border:none;
text-transform:uppercase;
}
.news_nav ul li {
list-style:none;
float:left;
border:1px solid #FFF;
text-decoration:none;
margin:0 5px 0 0;
padding:0 5px;
}
.news_nav ul li:hover {
border:1px solid #000;
}
.news_nav ul li.current_page {
border:1px solid #000;
color:#000;
font-weight:bold;
background-color:#FFF;
}
.news_nav ul li.inactive_page, .news_nav ul li.inactive_page:hover {
border:1px solid #666;
color:#666;
}
.news_nav ul li a{line-height:normal;}

söndag 1 november 2009

ÅÄÖ från databasen blir konstiga tecken

Visst är det hopplöst när våra svenska tecken inte visas korrekt på hemsidan. Det kan t ex hända om man hämtar text från en databas. För att undvika problemet testa att:

- Ange meta content-type: <meta http-equiv="content-type" content="text/html;charset=UTF-8">

- Spara dina php-filer i utf-8: Modify -> Page Properties -> Title/Encoding: Encoding: Unicode (UTF-8) (i Dreamweaver)

- Ange efter databaskopplingen:
mysql_query( "SET NAMES utf8"); (default kan också ställas in direkt i databasservern, http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html )

mysql_query( "SET CHARACTER SET utf8");

- Använd utf-8 som teckenkodning och utf8_swedish_ci som kollationering på tabellerna i databasen.

söndag 6 september 2009

Radera poster efter datum

Ibland kanske man vill rensa bort poster i sin databas-tabell som är för gamla. Då kan man använda sig av följande SQL-sats:

DELETE FROM tabellnamn WHERE datum < (now( ) - INTERVAL 14 DAY);

(fältet datum är av typen datetime)
Väljer poster äldre än 14 dagar.

onsdag 5 augusti 2009

Generera slumptal

Generera slumptal med MySQL

SQL för att generera slumptal mellan 0 och 99:

SELECT floor(rand() * 100);

Funktionen rand() genererar ett decimaltal som är större än eller lika med 0 men mindre än 1. Sätt ett tak för slumptalet, här i exemplet 100. Använd funktionen floor() som avrundar nedåt för att få heltal.

För att generera slumptal mellan 10 och 20:

SELECT FLOOR(RAND()*20)+10;

Vill du ha ett slumptal med exakt 4 siffor skriv:

SELECT FLOOR(RAND()*1000)+9999;

Läs mer om funktionen rand() på den officiella hemsidan för MySQL


Generera slumptal med PHP

Genererar en integer:
echo rand();

Genererar ett slumptal mellan 5 och 15:
echo rand(5, 15);

Läs mer om PHP-funktionen rand() på PHP:s officiella webbplats

tisdag 17 februari 2009

onsdag 28 januari 2009

SQL för nyhetsfunktion

En SQL-sats som kan användas t ex för en enkel nyhetsfunktion då man vill visa utdrag från de senaste nyheterna. Visar de fem senaste nyheterna med titel, ingress (nedkortad till max 50 tecken med tre punkter efter) samt publiceringsdatum och –tid. Förutsätter att du har fälten id, titel, ingress och publiceringsdatumtid i din tabell.

SELECT id, titel, CASE WHEN length(ingress)>55 THEN concat(substring(ingress FROM 1 FOR 50),'...') ELSE ingress END as ingress, DATE_FORMAT(publiceringsdatumtid, '%Y-%m-%d %H:%m') as publiceringsdatumtid FROM nyheter ORDER BY publiceringsdatumtid DESC LIMIT 5

lördag 21 juni 2008

Sök & ersätt med MySQL

Med funktionen replace() kan du söka efter och ersätta data i din tabell.

SQL:

UPDATE Tabell SET Kolumn = replace(Kolumn,'sökord','ersätt med');

Ändra auto_increment värdet

bland vill man ändra startvärdet för auto_increment. Skriv såhär:

ALTER TABLE Tabell AUTO_INCREMENT = 100

Hitta dubletter i MySQL

För att hitta rader med dubletter kan du använda förljande SQL-fråga:

SELECT COUNT(*) as Antal, Kolumn1, Kolumn2 FROM Tabell
GROUP BY Kolumn1, Kolumn2
HAVING Antal>1;

För att undvika dubletter i din tabell så ange fältet som unikt:

ALTER TABLE Tabell ADD UNIQUE (Kolumn);

Detta gör att varje rad måste ha ett unikt värde för denna kolumnen. Försöker man lägga in ett värde som redan finns så får man ett felmeddelande.

onsdag 10 oktober 2007

Gör enkelt backup på din databas

Att göra backup regelbundet på sin hemsida och databasen som ligger bakom rekommenderar jag starkt. Det finns inget värre än att bli av med månaders, kanske års hårt arbete.

Hur man gör backup av en MySQL-databas via phpMyAdmin
  1. Klicka på Exportera
  2. Markera databasen i rutan Exportera
  3. Välj SQL strax under
  4. Kryssa i:
    - Struktur
    - Lägg till AUTO_INCREMENT-värde
    - Använd bakåtcitat runt tabell- och fältnamn
    - Data
    - Använd hexadecimalt för binära fält
    - Export-typ ska vara INSERT
  5. Kryssa i Spara som fil och klicka på Kör för att ladda hem databasfilen.
Så, nu kan du sova bättre om nätterna!

Återställa en backup i phpMyAdmin
  1. Klicka på SQL överst i vänster-menyn
  2. Klicka på Importera filer
  3. Bläddra fram din backup-fil
  4. Klicka på Kör för att ladda in din databasfil.