Gå til innhold
Trenger du skole- eller leksehjelp? Still spørsmål her ×

Spørringer fra nettside til database


Anbefalte innlegg

Hei,

 

Så jeg har IT-1-eksamen neste torsdag, og har lest flittig gjennom hele boken, gjort alle oppgavene, alt er fryden og gammen. Unntatt 4 kapitler av boken der jeg skal gjøre spørringer fra en database til en nettside.

 

Jeg har skrevet koden akkurat som den skal skrives i følge boken, ingen syntaksfeil, og jeg skal nå få resultater fra en database jeg har laget. Den handler da om fjell, personer og hvilke fjell hvilke personer har gått på. Får ikke lastet opp databasefilen her dessverre. Laget den i mysql workbench.

 

Så nå skal jeg lage en kode for å få frem informasjonen i databasen på en nettside.

<?php
$tjener = "localhost";
$brukernavn = "root";
$passord = "";
$database = "fjelltur";

$kobling = new mysqli($tjener, $brukernavn, $passord, $database);

if ($kobling->connect_error) {
die("Noe gikk galt: " . $kobling->connect_error);
} else {
echo "Koblingen virker.";
}

$kobling->set_charset("utf8");

$sql = "SELECT * FROM fjelltur";
$resultat = $kobling->query($sql);

echo "$sql ga $resultat";
?>

Når jeg skriver dette, så får jeg bare resultatet 

 

 

Koblingen virker.SELECT * FROM fjelltur ga

 

og det er alt. Jeg har skrevet inn informasjon i alle tabellene.

 

Hva har jeg gjort feil? Det er litt krise når det er noe grums som det er umulig å finne ut av som gjør at jeg ikke får øvd på denne delen av pensum

Lenke til kommentar
Videoannonse
Annonse

false betyr sikkert at spørringen har mislyktes. Det er ikke så veldig mye som kan gå galt i en sånn spørring, men det kan hende at tabellen fjelltur ikke finnes.

 

Manual: http://php.net/manual/en/mysqli.quickstart.statements.php

 

Skjønner dessverre ingenting av det som står på den nettsiden.

 

Men jeg fant ut noe annet:

 

Når jeg skriver koden

$sql = "SELECT * FROM fjell";
$resultat = $kobling->query($sql);

echo "$sql ga $resultat->num_rows rader";

var_dump($resultat);
//skrive <?php include kobling.php; og de siste symbolene i dette dokumentet
?>
</body>
</html>

Fordi databasenavnet er "fjelltur", som jeg trodde skulle være det jeg gjorde SELECT-spørringen om. Men "fjell" er en av tabellene.

 

Skriver jeg spørringen i OP om "fjell" får jeg en feilmelding. Men når jeg skriver koden over får jeg:

 

 

 

Koblingen virker.SELECT * FROM fjell ga 2 rader
C:\wamp64\www\php\kobling.php:29:

object(mysqli_result)[2]

public 'current_field' => int 0

public 'field_count' => int 3

public 'lengths' => null

public 'num_rows' => int 2

public 'type' => int 0

Lenke til kommentar

 

false betyr sikkert at spørringen har mislyktes. Det er ikke så veldig mye som kan gå galt i en sånn spørring, men det kan hende at tabellen fjelltur ikke finnes.

 

Manual: http://php.net/manual/en/mysqli.quickstart.statements.php

 

Skjønner dessverre ingenting av det som står på den nettsiden.

 

Men jeg fant ut noe annet:

 

Når jeg skriver koden

$sql = "SELECT * FROM fjell";
$resultat = $kobling->query($sql);

echo "$sql ga $resultat->num_rows rader";

var_dump($resultat);
//skrive <?php include kobling.php; og de siste symbolene i dette dokumentet
?>
</body>
</html>

Fordi databasenavnet er "fjelltur", som jeg trodde skulle være det jeg gjorde SELECT-spørringen om. Men "fjell" er en av tabellene.

 

Skriver jeg spørringen i OP om "fjell" får jeg en feilmelding. Men når jeg skriver koden over får jeg:

 

 

 

Koblingen virker.SELECT * FROM fjell ga 2 rader
C:\wamp64\www\php\kobling.php:29:

object(mysqli_result)[2]

public 'current_field' => int 0

public 'field_count' => int 3

public 'lengths' => null

public 'num_rows' => int 2

public 'type' => int 0

 

Så den finner radene. Men jeg får den ikke til å skrive ut hva den finner i radene

Lenke til kommentar

Du må nok lese boka nøyere hvis du tror database og tabell er det samme. Tydeligvis heter tabellen fjell.

 

Jeg trodde bare man kunne gjøre en SELECT-spørring både om rader i tabeller og når man bruker * så siden man spør om all informasjonen så bruker man databasenavnet.

 

Men takk for hjelpen, sikkert

Lenke til kommentar
Vet ikke om du kan hente ut hele tabellen slik, det vanlige er hvertfall å hente ut rad for rad. $resultat er jo nå et objekt.

Så når du har hentet resultatet, kan du for eksempel finne antall rader:

$affectedRows = $db->affected_rows;

 

          for($i = 0; $i < $affectedRows; $i++){


                $rad = $resultat->fetch_object(); 

                $verdi = $rad->Kolonnenavn;

 

                echo $verdi;

            }

I denne linjen:

$verdi = $rad->Kolonnenavn;

må du da bytte ut Kolonnenavn med den riktige kolonnen såklart... som må ha samme navn som i tabellen.

Vet ikke om dette er den beste måten å gjøre det på... men da henter du ut en verdi fra en kolonne i en rad.

Lenke til kommentar

 

Vet ikke om du kan hente ut hele tabellen slik, det vanlige er hvertfall å hente ut rad for rad. $resultat er jo nå et objekt.
Så når du har hentet resultatet, kan du for eksempel finne antall rader:
$affectedRows = $db->affected_rows;
 
          for($i = 0; $i < $affectedRows; $i++){
                $rad = $resultat->fetch_object(); 
                $verdi = $rad->Kolonnenavn;
 
                echo $verdi;
            }
I denne linjen:
$verdi = $rad->Kolonnenavn;
må du da bytte ut Kolonnenavn med den riktige kolonnen såklart... som må ha samme navn som i tabellen.
Vet ikke om dette er den beste måten å gjøre det på... men da henter du ut en verdi fra en kolonne i en rad.

 

Finne antall rader kan jeg når jeg skriver $resultat->num_rows. Da står det 2 rader, som er riktig

Lenke til kommentar

 

 

Vet ikke om du kan hente ut hele tabellen slik, det vanlige er hvertfall å hente ut rad for rad. $resultat er jo nå et objekt.
Så når du har hentet resultatet, kan du for eksempel finne antall rader:
$affectedRows = $db->affected_rows;
 
          for($i = 0; $i < $affectedRows; $i++){
                $rad = $resultat->fetch_object(); 
                $verdi = $rad->Kolonnenavn;
 
                echo $verdi;
            }
I denne linjen:
$verdi = $rad->Kolonnenavn;
må du da bytte ut Kolonnenavn med den riktige kolonnen såklart... som må ha samme navn som i tabellen.
Vet ikke om dette er den beste måten å gjøre det på... men da henter du ut en verdi fra en kolonne i en rad.

 

Finne antall rader kan jeg når jeg skriver $resultat->num_rows. Da står det 2 rader, som er riktig

 

Jojo, men prøvde du med for-løkken? Da itererer man gjennom antall rader og lagrer hver rad som et rad-objekt. Deretter henter ut verdien som vist.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...