Nøttemix Skrevet 22. april 2017 Del Skrevet 22. april 2017 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
Emancipate Skrevet 22. april 2017 Del Skrevet 22. april 2017 Legg til en ny linje til slutt, den skal se slik ut: var_dump($resultat); Det vil gi deg ekstra informasjon. Lenke til kommentar
Zash Skrevet 22. april 2017 Del Skrevet 22. april 2017 (endret) Jeg kan ikke noe php, men vil anta at $resultat er en klasse som inneholder mye forskjellig. Derfor må du peke til hva du vil skrive ut. Se https://www.w3schools.com/php/php_mysql_select.asp og http://php.net/manual/en/class.mysqli-result.php Endret 22. april 2017 av Zash Lenke til kommentar
Nøttemix Skrevet 22. april 2017 Forfatter Del Skrevet 22. april 2017 Legg til en ny linje til slutt, den skal se slik ut: var_dump($resultat); Det vil gi deg ekstra informasjon. Da fikk jeg dette C:\wamp64\www\php\kobling.php:29:boolean false Lenke til kommentar
Emancipate Skrevet 22. april 2017 Del Skrevet 22. april 2017 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 Lenke til kommentar
Nøttemix Skrevet 22. april 2017 Forfatter Del Skrevet 22. april 2017 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
Nøttemix Skrevet 22. april 2017 Forfatter Del Skrevet 22. april 2017 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
Emancipate Skrevet 22. april 2017 Del Skrevet 22. april 2017 Du må nok lese boka nøyere hvis du tror database og tabell er det samme. Tydeligvis heter tabellen fjell. Lenke til kommentar
Nøttemix Skrevet 22. april 2017 Forfatter Del Skrevet 22. april 2017 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
minekawa Skrevet 22. april 2017 Del Skrevet 22. april 2017 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
cyanid1 Skrevet 22. april 2017 Del Skrevet 22. april 2017 Du mangler linjene som skal presentere spørringen. Sjekk ut videoene til aschehoug. Lenke til kommentar
Nøttemix Skrevet 23. april 2017 Forfatter Del Skrevet 23. april 2017 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
codecat Skrevet 24. april 2017 Del Skrevet 24. april 2017 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå