Avatar billede dstjulle Nybegynder
19. juni 2009 - 10:43 Der er 10 kommentarer og
1 løsning

DB backop i php

Hej jeg har i tankeren at lave en php svcript som kan tage backup af DB og så sende det på mail men ved ikke helt hvordan jeg skal komme i gang kan i give nogle lig til noget hjælp eller måske lidt kode så jeg kan starte ?

manget tak for hjælpen
Avatar billede martinbk Nybegynder
19. juni 2009 - 11:42 #1
hvad er det præcist du søger hjælp til ?

at hente tabel structure fra php?
at hente tabel data fra php?
at sende en mail fra php?
Avatar billede dstjulle Nybegynder
19. juni 2009 - 11:52 #2
jeg kan godt lave det med mail men er lidt lost med hvordna jeg henter alt i min db så det er nok mest det jeg skal bruge noget hjælp til
Avatar billede martinbk Nybegynder
19. juni 2009 - 12:10 #3
bikser lige et eksempel sammen når jeg kommer tilbage fra frokost
Avatar billede martinbk Nybegynder
19. juni 2009 - 12:52 #4
følgende funktion skulle hente definitionen for en given tabel

$db er self. din database
$table din table
$crlf er carriage return line feed (for flexibilitet så du kan ændre den nemt alt efter hvilket OS klienten anvender)

  function get_table_definition($db, $table, $crlf)
  {
    $schema_create = "";
    $schema_create .= "DROP TABLE IF EXISTS $table; CREATE TABLE $table ($crlf";

    $result = mysql_db_query($db, "SHOW FIELDS FROM $table") or die(mysql_error());
    while($row = mysql_fetch_array($result))
    {
      $schema_create .= "  $row[Field] $row[Type]";

      if(isset($row["Default"]) && (!empty($row["Default"]) || $row["Default"] == "0"))
        $schema_create .= " DEFAULT '$row[Default]'";
      if($row["Null"] != "YES")
        $schema_create .= " NOT NULL";
      if($row["Extra"] != "")
        $schema_create .= " $row[Extra]";
      $schema_create .= ",$crlf";
    }
    $schema_create = ereg_replace(",".$crlf."$", "", $schema_create);
    $result = mysql_db_query($db, "SHOW KEYS FROM $table") or die(mysql_error());
    while($row = mysql_fetch_array($result))
    {
      $kname = $row['Key_name'];
      if(($kname != "PRIMARY") && ($row['Non_unique'] == 0))
        $kname = "UNIQUE|$kname";
      if(!isset($index[$kname]))
        $[$kname] = array();
      $index[$kname][] = $row['Column_name'];
    }

    foreach($index as $x => $columns)
    {
      $schema_create .= ",$crlf";
      if($x == "PRIMARY")
        $schema_create .= "  PRIMARY KEY (" . implode($columns, ", ") . ")";
      elseif (substr($x,0,6) == "UNIQUE")
        $schema_create .= "  UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")";
      else
        $schema_create .= "  KEY $x (" . implode($columns, ", ") . ")";
    }

at hente selve data'en ud burde være trivielt nogle

SELECT * FROM $table

og så benyt mysql_field_name() til at finde feltnavnene
Avatar billede martinbk Nybegynder
19. juni 2009 - 12:55 #5
argh copy paste er en svær manøvre

mangler lige et par linier, kommmer her:

    $schema_create .= "$crlf)";
    return (stripslashes($schema_create));
  }
Avatar billede dstjulle Nybegynder
19. juni 2009 - 13:05 #6
ok hvordan skal den entra line du har nederst sættes ind ? :-S
Avatar billede dstjulle Nybegynder
19. juni 2009 - 13:17 #7
har fundet uf af det men er ikke helt sikker på hvad jeg skal bruge $crlf til da jeg køre på mysql ( skal det bare være mysql eller hvad ?)
Avatar billede martinbk Nybegynder
19. juni 2009 - 13:48 #8
nej

$crlf = carriage return line feed

på en windows klient = "\r\n";
på en *NIX klient = "\n";
Avatar billede dstjulle Nybegynder
19. juni 2009 - 13:51 #9
ok det køre jeg linux ( regner med det er en NIX klient :-D

så må du gerne lave en svar tror god tjeg kan lave resten selv
Avatar billede martinbk Nybegynder
19. juni 2009 - 13:59 #10
det kommer an på browseren på klienten IKKE hvad du din webhost kører webserveren på

et eksempel:

$client = getenv("HTTP_USER_AGENT");
if(ereg('[^(]*\((.*)\)[^)]*',$client,$regs))
{
  $os = $regs[1];
  if (eregi("Win",$os))
    $crlf="\r\n";
  else
    $crlf="\n";
}

henter HTTP_USER_AGENT strengen fra klientens browser og undersøger om det er en windows klient
Avatar billede dstjulle Nybegynder
19. juni 2009 - 14:02 #11
ok super manget tak
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