Avatar billede orkiderejser Novice
07. april 2014 - 12:36 Der er 17 kommentarer og
1 løsning

fejl i opsætning mysqli

Hej eksperter.

Jeg har nu prøvet alt. (undtagen det rigtige) :-)
Jeg er ved at ændre fra mysql til mysqli og er nu kommet til min søgning i tabellerne.

Her får jeg følgende fejlmeddelse: Fatal error: Call to a member function query() on a non-object in /home/u12ctg6/www/soegdb.php on line 389

Den relevante kode er her:

<?php
$mysqli = new mysqli("localhost", "bruger", "kode", "db");

/* Tjek, om der opstod en fejl */
if (mysqli_connect_errno()) {
    echo 'Der opstod en fejl ved forbindelsen: ' . mysqli_connect_error();
    exit();
}
echo 'hej';
?>
<?php   
$soegeord=$_POST["soegeord"];
search_db("rundrejser",$soegeord);
search_db("destinationer",$soegeord);
search_db("dagtildag",$soegeord);
search_db("kataloger",$soegeord);
search_db("gaestebog",$soegeord);
search_db("hotel",$soegeord);
search_db("sevaerdigheder",$soegeord);
search_db("rederi",$soegeord);
search_db("skibe",$soegeord);
?>
<?php
//
// søgefunktion
// parametre search_db([tabelnavn],[søgetekst])
//
function search_db($tabel,$var) {
        $trimmed = trim($var);
    if ($trimmed == "")
{
            echo "<div class='undertekst'><p>Udfyld s&oslash;gefeltet.</p></div>";
            exit;
        }
        echo "<p>Du s&oslash;gte p&aring;: &quot; $var &quot</p>";
echo $tabel;
?>
<?php
    //rundrejser
$queryrundt = "SELECT * FROM ".$tabel." WHERE (verdensdel LIKE '%$trimmed%' OR land LIKE '%$trimmed%' OR overskrift LIKE '%$trimmed%' OR stat LIKE '%$trimmed%' OR ferietype LIKE '%$trimmed%' OR broedtekst LIKE '%$trimmed%') AND verdensdel NOT LIKE 'sider'";
        $rundtResult = $mysqli->query($queryrundt);
        $rowrundt = $rundtResult->fetch_assoc();
?>
    <?php
        $overskrift = $rowrundt['overskrift'];
        $verdensdel = $rowrundt['verdensdel'];
        $land = $rowrundt['land'];
        $stat = $rowrundt['stat'];
        $ferietype = $rowrundt['ferietype'];
        $broedtekst = $rowrundt['broedtekst'];
        $billede = $rowrundt['billede'];
        $billede1 = $rowrundt['billede1'];
        $laes_mere = $rowrundt['laes_mere'];
        $target = $rowrundt['target'];
        $prisindh = $rowrundt['prisindh'];
        $pris = $rowrundt['pris'];
        $udloe = date('d m Y', strtotime($rowrundt['udloeb']));
      ?>
      <?php
        $rowrundt = $tureResult->fetch_assoc();
    while($tureResult = $mysqli->query($queryrundt)); {
        echo "<div class='hotelramme'>";
            echo "<div class='hoteloverskrift'>$overskrift<div style='float: right'>Rundrejser i  $verdensdel</div>
        <p align='center'>Udløb: $udloe</p>
                </div>
                <div class='topbilledehotel'><img src='/img/$billede' /><br />
        <br /><img src='/img/$billede1' /></div>";
        ?>
        <?php
        echo nl2br("<div class='topvtekst'>$broedtekst<br /><br />
        <a href= $laes_mere $target> $overskrift &nbsp; $prisindh &nbsp;kr  $pris,-</a></div>");
    echo "</div>";
}
  ?>











<?php
} ?>

På forhånd tak
Jan
Avatar billede arne_v Ekspert
07. april 2014 - 15:09 #1
$rundtResult = $mysqli->query($queryrundt) or die($mysqli->error);
Avatar billede arne_v Ekspert
07. april 2014 - 15:10 #2
Men er brug af mysqli uden parameters ikke lidt ligesom at skubbe en ferrari med haandkraft?
Avatar billede orkiderejser Novice
07. april 2014 - 15:22 #3
hej arne_v

Jeg er ved at prøve at forstå brugen af mysqli og endnu er jeg ikke kommet længere, men jeg håber det kommer. :-)

Jeg får dog stadig samme fejlmeddelelse.

http://www.orkiderejser.dk/soegdb.php
Avatar billede Slettet bruger
07. april 2014 - 16:21 #4
For din egen nemheds skyld, du behøver ikke afslutte din streng i:
$queryrundt = "SELECT * FROM ".$tabel." WHERE ...

Du kan bare skrive $queryrundt = "SELECT * FROM $tabel WHERE ...

Kan du ikke præcis finde ud af hvilken linie det går galt i?
Du kører en query to steder.

$rowrundt = $tureResult->fetch_assoc();
while($tureResult = $mysqli->query($queryrundt)); {

Det der ser bare mærkeligt ud. Du forsøger at hente et array, før du kører din forespørgsel.
Du har dog allerede tidligere kørt forespørgslen.

Anywho, det ser mærkeligt ud.
Avatar billede orkiderejser Novice
07. april 2014 - 16:39 #5
Jeg skal vel have hele min SELECT med for at fortælle hvor der skal hentes om det søgte ord indeholdes i tabellen.
Der kommer at der skal søges i 9 tabeller.

Fejlen kommer i:
$rowrundt = $tureResult->fetch_assoc();

<?php
    //rundrejser
$queryrundt = "SELECT * FROM ".$tabel." WHERE (verdensdel LIKE '%$trimmed%' OR land LIKE '%$trimmed%' OR overskrift LIKE '%$trimmed%' OR stat LIKE '%$trimmed%' OR ferietype LIKE '%$trimmed%' OR broedtekst LIKE '%$trimmed%') AND verdensdel NOT LIKE 'sider'";
        //  $rundtResult = $mysqli->query($queryrundt) or die($mysqli->error);
        // $rundtResult = $mysqli->query($queryrundt);
      // $rowrundt = $rundtResult->fetch_assoc();
?>
    <?php
        $overskrift = $rowrundt['overskrift'];
        $verdensdel = $rowrundt['verdensdel'];
        $land = $rowrundt['land'];
        $stat = $rowrundt['stat'];
        $ferietype = $rowrundt['ferietype'];
        $broedtekst = $rowrundt['broedtekst'];
        $billede = $rowrundt['billede'];
        $billede1 = $rowrundt['billede1'];
        $laes_mere = $rowrundt['laes_mere'];
        $target = $rowrundt['target'];
        $prisindh = $rowrundt['prisindh'];
        $pris = $rowrundt['pris'];
        $udloe = date('d m Y', strtotime($rowrundt['udloeb']));
      ?>
      <?php
        $rowrundt = $tureResult->fetch_assoc();
    while($tureResult = $mysqli->query($queryrundt)); {
Avatar billede Slettet bruger
07. april 2014 - 16:46 #6
$rowrundt = $tureResult->fetch_assoc();
    while($tureResult = $mysqli->query($queryrundt)); {

Hvad med:

$rowrundt = $mysqli->query($queryrundt);
while($tureResult = $rowrundt->fetch_assoc())
{
...
Avatar billede orkiderejser Novice
07. april 2014 - 16:49 #7
Stadig samme fejl i samme linie. ;-)
Avatar billede Slettet bruger
07. april 2014 - 16:51 #8
echo $queryrundt;

Vil gerne lige se, om sqlstrengen bliver noget der kan bruges.
Avatar billede orkiderejser Novice
07. april 2014 - 16:58 #9
Udskriften ser sådan ud. Det første ord er db navn så det får den da.


Prag og Spa-ophold  Special tilbud »

Rejse spørgsmål  Ris og ros
Rejse spørgsmål  Har du 2 min ?
Nyhedsbrev
Tilmeld
Navn    
Email    
     
Afmeld
Email   
   
Tilføj os til din adressebog
Orkiderejser Rådyrvænget 130
5800 Nyborg
tlf.: 65 31 30 25
Få nyheder førstOrkiderejser på facebook





I søgninger kan der være ture der er for gamle, men lignende kan bookes op som individuelle rejser.

Du søgte på: " ankomst bali "
rundrejserSELECT * FROM rundrejser WHERE (verdensdel LIKE '%ankomst bali%' OR land LIKE '%ankomst bali%' OR overskrift LIKE '%ankomst bali%' OR stat LIKE '%ankomst bali%' OR ferietype LIKE '%ankomst bali%' OR broedtekst LIKE '%ankomst bali%') AND verdensdel NOT LIKE 'sider'
Fatal error: Call to a member function query() on a non-object in /home/u12ctg6/www/soegdb.php on line 411
Avatar billede orkiderejser Novice
07. april 2014 - 16:59 #10
der kom lige lidt rigeligt med
Avatar billede Slettet bruger
07. april 2014 - 17:02 #11
echo $queryrundt;

Før du laver en query, efter at selve queryrundt er defineret.
Og så lav en søgning og kopier det som eho $queryrundt udskriver.
Avatar billede Slettet bruger
07. april 2014 - 17:03 #12
Nevermind, ser det er det du har gjort.
Avatar billede Slettet bruger
07. april 2014 - 17:04 #13
SELECT * FROM rundrejser WHERE (verdensdel LIKE '%ankomst bali%' OR land LIKE '%ankomst bali%' OR overskrift LIKE '%ankomst bali%' OR stat LIKE '%ankomst bali%' OR ferietype LIKE '%ankomst bali%' OR broedtekst LIKE '%ankomst bali%') AND verdensdel NOT LIKE 'sider'

Kør eventuelt det der direkte i phpMyAdmin og meddelt om der kommer en SQL error og hvad den er.
Avatar billede orkiderejser Novice
07. april 2014 - 17:12 #14
Jeg skiftede til andet søgeord der fandtes i tabellen.
phpadmin returnerer de ønskede  rækker.
Avatar billede erikjacobsen Ekspert
07. april 2014 - 20:41 #15
Sproget PHP er lidt underligt, men har du en $mysqli variabel, der er lavet udenfor en funktion, skal du skrive

  function search_db($tabel,$var) {
  global $mysqli;
   
for at se den inde i funktionen (eller tage den med som parameter)
Avatar billede orkiderejser Novice
07. april 2014 - 21:03 #16
Jeg takker. Jeg kan ikke se mere på det i aften. Kommer igen i morgen. :-)

Vh
Jan
Avatar billede orkiderejser Novice
08. april 2014 - 09:03 #17
Hej igen
Nu får jeg formatering frem, men der bliver ikke hentet data fra tabeller?
Avatar billede orkiderejser Novice
20. oktober 2014 - 16:29 #18
Jeg må hellere lukke dette
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