Avatar billede m_smiszek Nybegynder
17. november 2004 - 11:10 Der er 21 kommentarer og
1 løsning

søgning i mysql tabel

Hej


Jeg har et lidt lille problem, som jeg ved i kan svare på (har ikke lige selv kunne se mig ud af det)

Jeg har for sjov lavet et script til at styre mine subdomains. Og det virker næsten, jeg har dog kun et problem, scriptet går ind i min database (mysql) og tjekker om subdomainet er oprettet. og derefter smider den vidre til et locatioin, problemet er at den kun finder den nyesta data i databasen og ikke kigger alle tables igennem, Som i nok kan gætte gør dette at der kun kan være et registeret subdomain ad gangen.

Jeg paster her mit kode til scriptet. Håber der er nogle der har en ide.

//m_smiszek

#Kigger i databasen efter subdomain, hvis den findes send den da til Location. Hvis ikke gå til error.php

    $sql = "select * from subdomains";

    $servername=$_SERVER['HTTP_HOST'];

    aabn_forbindelse_og_vaelgdb();
    $resultat = sql_spoerg_og_faa_svar($sql);
    luk_forbindelse();
                               
        if(count($resultat) < 1) {

              echo "There are no Subdomains !";

        } else {

              for($i=0;$i<count($resultat);$i++) {

                        extract($resultat[$i]);
                    }
                }       
                                           

if($servername == $subdomain || $servername == "www.$subdomain") {
    header("Location: $location");
exit;
} else {
header("Location: /error.php");
exit;
}
?>
Avatar billede schaefner Juniormester
17. november 2004 - 11:22 #1
Du tjekker jo ikke $subdomain op mod de poster du har i databasen?

<?php
$subdomain = "gallery"; // Ved f.eks. gallery.domain.tld
$path = "http://domain.tld/subdomains/";

$result = mysql_query("SELECT COUNT(*) FROM `subdomains` WHERE subdomain='".$subdomain."'") or die(mysql_error());

if (mysql_result($result, 0) == 1) {
  header("Location: ".$path.$subdomain);
} else {
  header("Location: error.php");
}
?>

Det er et skud i tågen da jeg ikke ved preæcis hvad din egen egentlig skal gøre godt for.
Avatar billede schaefner Juniormester
17. november 2004 - 11:30 #2
Nu ved jeg heller hvad dine forskellige variabler ($location, $servername etc.) indeholder. I mit eksempel indeholder $subdomain det subdomæne du gerne vil teste om findes i databasen.

$path er stien til dine såkaldte "subdomæner". Hvis man f.eks. bruger gallery.domain.tld, ryger man til domain.tld/subdomains/gallery

Den tester i øvrigt op mod en kolonne kaldet `subdomain` i tabellen `subdomains`. Hvis din tabelstruktur er anderledes skal du selvfølgelig bare huske at ændre det :)

Med venlig hilsen
Jesper Sørensen
Avatar billede m_smiszek Nybegynder
17. november 2004 - 11:40 #3
Det er fordi jeg ikke har mulighed for at lave dns ændreinger derfor har jeg måtte benytte mig af dette script..
Avatar billede schaefner Juniormester
17. november 2004 - 11:43 #4
ja ja, men virker det jeg har postet? :)
Avatar billede m_smiszek Nybegynder
17. november 2004 - 11:44 #5
Det den skal gøer er at tjekke om test.domaine.dk existere i databasen hvis den gør dette har jeg i databasen lavet en location som f.eks peger på domain.dk/test/..

derefter skal scripet automatisk sende brugeren til domain.dk/test/....

hvis ikke test.domain.dk findes i databasen skal den gå til error.php
Avatar billede m_smiszek Nybegynder
17. november 2004 - 11:50 #6
Nej det virker ikke..


den laver nøjagtigt samme nummer, man kan kun komme ind på det domæne der står sidst i databasen..

//m_smiszek
Avatar billede schaefner Juniormester
17. november 2004 - 11:51 #7
Hvordan ser din tabel-struktur ud og hvilke data har du i den?
Avatar billede m_smiszek Nybegynder
17. november 2004 - 11:53 #8
Jeg har

id, subdomain, location

id = siger sigselv
subdomain = her skriver jeg det subdomain som jeg gerne vil have til at virke f.eks test.domæne.dk
location = her skriver jeg den komplette stig til hvis den skal sende brugeren hen, f.eks domæne.dk/test/

er det nok eller vil du have sql sætningerne også ???
Avatar billede schaefner Juniormester
17. november 2004 - 11:54 #9
Ok, det hjalp jo lidt at få det med. Jeg prøver lige at lave et eksempel af en art.
Avatar billede m_smiszek Nybegynder
17. november 2004 - 12:01 #10
Det er bare iorden, jeg håber du er lidt kvikkere end mig.
Avatar billede schaefner Juniormester
17. november 2004 - 12:15 #11
<?php
/*
#
# Table structure for table `subdomains`
#

CREATE TABLE subdomains (
  id int(11) NOT NULL auto_increment,
  subdomain varchar(50) NOT NULL default '',
  location varchar(250) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

#
# Dumping data for table `subdomains`
#

INSERT INTO subdomains VALUES (1, 'js', 'http://schaefner.dk');
*/

mysql_connect("***", "***", "***");
mysql_select_db("***");

$domain = str_replace("www.", "", $_SERVER['HTTP_HOST']);
$subdomain = substr($domain, 0, strpos($domain, "."));

$result = mysql_query("SELECT `location` FROM `subdomains` WHERE `subdomain` = '".$subdomain."'") or die(mysql_error());

if (mysql_num_rows($result) == 1) {
    $data = mysql_fetch_array($result, MYSQL_ASSOC);
    header("Location: ".$data['location']);
} else {
    header("Location: /error.php");
}
?>
Avatar billede m_smiszek Nybegynder
17. november 2004 - 12:22 #12
stadig det samme...


den kan kun gå ind på den der er nyest i databasen
Avatar billede schaefner Juniormester
17. november 2004 - 12:29 #13
Den virker sjovt nok her. Har du prøvet den tabel-struktur  og data jeg har postet med koden?

Test:
http://deva.schaefner.dk/subdomain.php
http://exp.schaefner.dk/subdomain.php
Avatar billede m_smiszek Nybegynder
17. november 2004 - 12:38 #14
Hmm... det virker underligt nok ikke her..

Jeg har prøvet min din tabel struktur, den lignede næsten min egen, jeg ved sq ikke helt hvad der så er galt..
Avatar billede m_smiszek Nybegynder
17. november 2004 - 12:42 #15
How How....


jamen lige 2 sekunder, jeg sidder og retter i den forkerte fil... jeg prøver lige igen...
Avatar billede m_smiszek Nybegynder
17. november 2004 - 12:48 #16
Ja.. se det lavede lidt om på tingene..


dog kommer denne fejl Query was empty No Database Selected
Avatar billede m_smiszek Nybegynder
17. november 2004 - 12:50 #17
Jeg ved ikke helt hvor det går galt, men jeg er igang med at kigge på det
Avatar billede m_smiszek Nybegynder
17. november 2004 - 13:06 #18
Det virker stadig ikke, nu kan den slet ikke finde nogle af de domæner der er i databasen...


wierd
Avatar billede schaefner Juniormester
17. november 2004 - 13:08 #19
Hvad har du skrevet i tabellen i databasen?
Avatar billede m_smiszek Nybegynder
17. november 2004 - 13:11 #20
Ja, det var jo lige det, jeg skal selvfølgelig stave rigtigt for at få det til at virke..


Det virker nu.

1000 tak for hjælpen..

kan jeg på nogen måde give dig flere point end de 30 ? Det var jo en masse "dumme" fejl fra mig af.
Avatar billede schaefner Juniormester
17. november 2004 - 13:16 #21
Nu er det et stykke siden jeg selv har oprettet et spørgsmål, men jeg mener der er et punkt til det under "Funktioner" i menuen til venstre.

Med venlig hilsen
Jesper Sørensen
Avatar billede m_smiszek Nybegynder
17. november 2004 - 13:41 #22
Nå.. jeg havde lidt problmer med at kunne komme ind på domænet efter scriptet var lavet.

Så jeg byggede det lidt om...

mysql_connect("***", "***", "***");
mysql_select_db("***");   

$domain = str_replace("www.", "", $_SERVER['HTTP_HOST']);
$subdomain = substr($domain, 0, strpos($domain, "."));

$result = mysql_query("SELECT `location` FROM `subdomains` WHERE `subdomain` = '".$subdomain."'") or die(mysql_error());
   
if ($domain == "smiszek.dk") {
    header("Location: /ny/");
    exit;
} elseif (mysql_num_rows($result) == 1) {
    $data = mysql_fetch_array($result, MYSQL_ASSOC);
    header("Location: ".$data['location']);
    exit;
} else {
    header("Location: /error.php");
    exit;
}
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