Avatar billede they Nybegynder
16. juli 2009 - 13:53 Der er 13 kommentarer

Surftown: Hvordan får jeg lov til at hive data ud af tabellerne? (PHP)

Hej folkens!

Jeg er igang med at lave en webside for en vens band. Siden er ved at være færdig, og jeg er nu ved at prøve at uploade den på deres domæne for at få den testet af. Her opstår problemet så.

Mens jeg har udviklet siden, har jeg arbejdet på min localhost via MAMP, eller på mit eget domæne, som ligger hos one.com. Der har ingen problemer været og det hele har kørt smooth.

Men det domæne som siden skal ligge på, er hostet af Surftown. Jeg har ingen erfaringer med dem i forvejen, og det ser ikke ud til at der er meget hjælp at hente hos dem.

TIL PROBLEMET:

Det er lykkedes mig at få oprettet en database, og det er også lykkedes mig at få importeret alle tabellerne som jeg har lavet. Så den del burde være på plads. Derudover er det også lykkedes mig at skabe forbindelse til databasen. Dette ved jeg, da jeg kører et tjek på om der er forbindelse, og hvis jeg ændrer f.eks passwordet, kommer min fejlbesked.
Det der bare er (i mine øjne) enormt underligt er, at på trods af, at der er forbindelse til databasen, bliver ingen af de data, der skal hentes ud af tabellerne vist. Dvs. intet af det, der ligger i databasen kommer frem.

Jeg er på herrens mark fordi jeg stadig er relativt ny til at arbejde med database, php og mySql, og dermed aner jeg ikke hvordan jeg skal fejlsøge.

Her er min connect fil:

<?php
  //Opret forbindelse til databasen.
  $db_link = mysql_connect('host', 'user', 'pass', 'database');
 
  //Check om forbindelsen blev etableret. Hvis ikke, s skriv fejl og stop programmet.
  if (!$db_link){
      die('Ingen forbindelse til databasen!');
  }
?>


Her er en typisk query, der altså ikke returnerer noget hos Surftown:

<?php       
  $sqlvis = "SELECT
        news_date,news_body,id
        FROM hv_news
        ORDER BY news_date DESC";
       
  $db_resultat = mysql_query($db_link,$sqlvis);

  while ($data = mysql_fetch_assoc($db_resultat)){
                       
    echo "<div class='news'>
        <h3 class='news_date'>".date('d/m/Y', "{$data['news_date']}")."</h3>
        <p class='news_text'>{$data['news_body']}</p>
              </div>";
  }
?>


Til sidst vil jeg lige nævne, at jeg startede ud med at benytte mysqli i mine forespørgsler, men da der kom lidt brok ud af det, har jeg slettet alle i'erne. Jeg skal helt ærligt sige at jeg ikke kender forskellen på de to. Det er bare mysqli som jeg har lært. Dermed ved jeg heller ikke om der er andet i den forbindelse som kan have noget at sige.


Håber meget at nogen kan hjælpe. Tusind tak!

-Rasmus
Avatar billede kdasummer Nybegynder
16. juli 2009 - 13:56 #1
hvordan ved du, at alle dine data fra din lokale database, er uploadet i den nye, når du ikke kan hive dem frem? har surftown er phpmyadmin interface, hvor du kan se dette?
Avatar billede they Nybegynder
16. juli 2009 - 14:03 #2
Ja det hele er klaret via phpmyadmin, hvor jeg også kan se at tabellerne ligger.
Avatar billede kpdk Nybegynder
16. juli 2009 - 14:58 #3
Jeg spotter at du har byttet rundt på query og link.

  $db_resultat = mysql_query($db_link,$sqlvis);

skal være:

  $db_resultat = mysql_query($sqlvis, $db_link);

Du behøver desuden heller ikke eksplicit at angive $db_link som parameter til mysql_query (selvom det er pænere, så helt fint!) - hvis der ikke er angivet noget $db_link antager mysql_query at den skal bruge det sidst åbnede link, hvilket naturligvis vil være $db_link :-)

Det burde løse problemet, men ellers er der et par andre plausible årsager:

Det er ikke så meget spørgsmål om at få lov, medmindre at du har lavet en ny database bruger. Hvis dine tabeller ligger under brugeren "a" men du opretter forbindelse til databasen som "b" vil du muligvis have problemer dér. Det kan løses ved at logge på som a og lave en "GRANT SELECT ON tabelnavn TO b". Hvis dette ikke er tilfældet, så ignorer ovenstående.

Ellers - kontrollér de tabeller du selecter ud fra. Én ting er at tabellerne er oprettet - er der oprettet/migreret data herind - hvis de er tomme. Hvis du har phpmyadmin hvilket det lyder til, så gå ind på de enkelte tabeller og "Vis" dem eller lav en "SELECT * FROM tabelnavn" i SQL vinduet og se om der kommer data frem - hvis ikke, så er de tomme og dataen skal derfor inporteres.

Forskellen på mysql og mysqli funktioner er at mysqli er en objektorienteret tilgangsvinkel, men man opnår det samme, så det er en vanesag :-)
Avatar billede they Nybegynder
16. juli 2009 - 15:19 #4
Tak for svaret!

Desværre er jeg ikke kommet videre :(

Jeg har forsøgt at bytte rundt på $db_link og $sqlvis. Dette gjorde ingen forskel. Det jeg studser over, er at den rækkefølge som jeg havde fra starten af, virker fint på min egen webside hos one.com.
I hvert fald løste det ikke problemet at bytte rundt.

Så har jeg tjekket lidt op mht. bruger og database. Jeg håber jeg har forstået det korrekt. Men den database som jeg har importeret tabellerne til hedder "hermes2_high_voltage", og til den database eksisterer der kun en enkelt bruger, "hermes2_hvad". Det er med den bruger jeg har oprettet forbindelse til den database. Så burde det være i orden ikke? Jeg har desuden været inde og ændre privilegier, så den bruger har tilladelse til alt hvad der er muligt... Stadig ingen effekt.

Til sidst har jeg tjekket tabellerne igen, og der er data i dem allesammen...

Tak for info om mysql og mysqli i øvrigt :)


Men øv bøv :(
Avatar billede mmnoergaard Nybegynder
16. juli 2009 - 16:18 #5
?php
  //Opret forbindelse til databasen.
  $db_link = mysql_connect('host', 'user', 'pass', 'database');

Du mangler vist noget i denne linje for at kunne få adgang.

Se evt. denne wiki side
Avatar billede mmnoergaard Nybegynder
16. juli 2009 - 16:18 #6
Avatar billede they Nybegynder
16. juli 2009 - 16:30 #7
Som sagt, så tyder det på at jeg fint får oprettet forbindelse til databasen. Jeg får bare ikke noget data ud af tabellerne?

Wiki siden hjælper ikke noget. Den er hovedsageligt fokuseret på asp.
Avatar billede mmnoergaard Nybegynder
17. juli 2009 - 09:32 #8
Jeg har bragt det videre til en med forstand på hos surftown og der bliver arbejdet på at få den del med i wikien. Men jeg vil forslå dig at skrive ind til vores support, så skal jeg nok få en til at kigge på dit konkrete problem. Skriv evt at du har snakket med Martin Nørgaard.

Bae husk at du skal beskrive problemt så meget så muligt, så ham der skal ordne det har alle de oplysninger han har brug for.

god weekend
Avatar billede they Nybegynder
17. juli 2009 - 14:05 #9
Hej Martin,

Tusind tak. Jeg vil skrive til Surftown. Så håber jeg det løser sig den vej.
Avatar billede they Nybegynder
17. juli 2009 - 21:59 #10
Hej allesammen.

Jeg ville bare lige gøre opmærksom på at jeg har fået løst problemet nu. Det viste sig at jeg var kommet til at bytte rundt på $db_link og $sqlvis lidt flere steder end jeg havde været opmærksom på i første omgang. Og et enkelt sted havde jeg på en eller anden måde fået lavet en forkert mysql_fetch_assoc, hvor jeg var kommet til at give 2 parametre med i stedet for kun et enkelt.

Så i virkeligheden nogle lidt pinligt dumme fejl fra min side, som jeg dog ikke havde fanget uden bla. jeres hjælp. Man lærer hele tiden, og det er sgu fedt at der er god respons herinde. Så tusind tak!

Ved ikke lige hvor jeg skal aflevere pointene, og om jeg idet hele taget skal aflevere dem? Hvordan plejer det at fungere med det herinde? (er rimelig ny bruger)
Avatar billede kpdk Nybegynder
18. juli 2009 - 14:21 #11
Det er godt at høre at du har fundet fejlene. Det er den eneste måde man lærer på :)

Det, du skal gøre er at læse posten igennem igen og finde frem til den eller de som har hjulpet dig på ret kurs og lade dem dele points hvis der er flere der har hjulpet dig på rette vej eller blot tildele dem til én.
Avatar billede they Nybegynder
20. juli 2009 - 12:58 #12
Hmm... 3 muligheder:

1. Jeg KAN jeg ikke tildele point til nogen der ikke har benyttet "svar" muligheden da jeg modtog et svar...

2. Jeg kan godt, men brugervenligheden og logikken gør at jeg ikke kan se hvor og hvordan..

3. Jeg kan godt, det er simpelt og logisk, og det er mig der er dum :D


Håber på nr. 1 :)
Avatar billede kpdk Nybegynder
20. juli 2009 - 18:23 #13
Jeg lægger gerne et svar og så må du selv vurdere om det har det dét som har hjulpet dig videre, evt. sammen med nogle af de andre :)
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
Computerworld tilbyder specialiserede kurser i database-management

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