Avatar billede netkoen Nybegynder
14. oktober 2008 - 13:23 Der er 4 kommentarer og
1 løsning

Fatter intet

Først og fremmest ser det hele nok lidt forvirrende ud. Men problemet er meget simpelt..

Første funktion henter hotelnavnet på de hotelnavne der er indrammet i <hotel></hotel>.

Sender dernæst hotelnavnet videre til den anden funktion, hvor det hele går galt. Udskriver jeg SQL sætningen (bare som tekst) og sætter den ind i PHPmyAdmin fungere den fint, men sætningen returnerer ikke nogen rækker.
Bytter jeg variablen $hotel_name ud med ren tekst fx Ambassador Hotel, så fungere det upåklageligt.

Nogen der kan se hvad jeg gør galt?

//FØRSTE FUNKTION
function udskriv(){
    $helper = new helper();
   
   
    $text = "Velkommen til Filippinerne, du skal bo på: <hotel>Ambassador Hotel</hotel> <hotel>Siam Heritage</hotel>";
    $text_ny = "";
   
    preg_match_all('%<hotel[^>]*>(.*?)</hotel>%', $text, $hotel_result, PREG_PATTERN_ORDER);
    $hotel_result = $hotel_result[0];
   
    for($i = 0; $i < count($hotel_result); $i++){
        if($i == 0 ){
            $hotel_setup = $helper->make_hotel_setup($hotel_result[$i]);
            echo $hotel_setup;
            echo "<br /><br />";                                                               
            $text_ny = str_replace("<hotel>$result[$i]</hotel>", $hotel_setup, $text);
        }else if($i > 0){
            $hotel_setup = $helper->make_hotel_setup($hotel_result[$i]);                               
            $hotel_setup = "Ønsker du et andet hotel, kan vi tilbyde:<br/>".$hotel_setup;
            echo $hotel_setup;
            $text_ny = str_replace("[hotel]".$result['$i']."[/hotel]", $hotel_setup, $text_ny);                               
        }                           
    }
   
    echo $text_ny;
    }
    udskriv();



//ANDEN FUNKTION
function make_hotel_setup($hotel_name){

        echo $hotel_name; //Navnet udskrives fint
        $sql = "SELECT h.*, c.name as country_name FROM CC_hotel h, CC_country c WHERE h.name like '".$hotel_name."' AND h.country_id = c.id"; //Denne sætning returnere ikke noget, selvom SQL sætningen fungere fint nok. Er testet med PHPmyAdmin.
        echo $sql;
        $hotel_result = mysql_query($sql) or die("Fejl opstået ".mysql_error());
        echo mysql_num_rows($hotel_result);
        while($row = mysql_fetch_array($hotel_result)){
            $sql_name = $row['name'];
            $sql_link = $row['link'];
            $sql_image_link = $row['image_link'];
            $sql_country = $row['country_name'];
            $sql_description = $row['travelplan_description'];
       
        }
        $result = "</p><p class='hotelnavn'>$sql_name";
        //$result = "link: ".$row['link'];
       

            if(strlen($sql_link) > 0){
                $link = " - <a href='http://$sql_link' target='blank' >$sql_link</a></p>";
                $result = $result."".$link;
            }else{
                $result = $result."</p>";
            }
            if(strlen($sql_image_link) > 0){
                $picture = "<p class='alm'><img src='http://www.cctravel.dk/html/hotels/$sql_country/$sql_image_link]' /><br />";
                $result = $result."".$picture;
            }
            if(strlen($sql_description) > 0){               
                $result = $result."".$sql_description;
            }
        //$result = htmlspecialchars(stripslashes($result));
        return $result;
       
    }
Avatar billede w13 Novice
14. oktober 2008 - 13:29 #1
Nu viser du jo intet vedr. din forbindelse til databasen. Fejlen kunne måske ligge her, når du siger, det virker fint i PHPMyAdmin? Men så burde den selvfølgelig nok returnere en mysql_error(). Hmm.

Men i PHPMyAdmin har du selvfølgelig heller ikke variablen $hotel_name, som jo sættes ind i din SQL-sætning, og du siger selv, at det virker når du skriver noget tekst i stedet for variablen, så det er vel her, der sker en fejl? Hvordan ser det f.eks. ud, når sql-sætningen bliver echo'et?
Avatar billede w13 Novice
14. oktober 2008 - 13:29 #2
I øvrigt ikke en særlig beskrivende titel. :P
Avatar billede netkoen Nybegynder
14. oktober 2008 - 13:41 #3
Beklager titlen, men fatter ikke hvad jeg skal skrive..

Hvis jeg echo SQL sætningen og smider den ind i PHPmyAdmin fungerer det fint.. Derfor forstår jeg ikke hvorfor den ikke returnerer noget i selve PHP koden.
Avatar billede w13 Novice
14. oktober 2008 - 14:03 #4
Og du er sikker på, at der henvises korrekt til den rigtige database?

Ang. det med titlen, så skriver jeg det kun, fordi folk jo skal bruge titlen til at vurdere, om de mener at kunne hjælpe med dit problem. "Fatter intet" siger derfor intet om, hvilke kompetencer man skal have for at hjælpe dig. =)
Derimod kunne en mere beskrivende titel f.eks. være:
"SQL-sætning virker i PHPmyAdmin men ikke på siden"

Bare til næste gang. =)

(Der er rigtig mange, der kalder deres spørgsmål for "Hjælp!!", men alle spørgere vil selvfølgelig have hjælp, så det kan vi jo ikke bruge til så meget.)
Avatar billede netkoen Nybegynder
16. oktober 2008 - 17:38 #5
Jeg fandt selv ud af det..

$hotel_result = $hotel_result[0]; skulle ændret fra 0 til 1.. Ved 0 får jeg også HTML koden ud, som man ikke kan se når man printer i browseren.
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