ponas91 Skrevet 22. november 2016 Del Skrevet 22. november 2016 (endret) Det jeg prøver å få til er å vise data fra en bestemt id hentet fra id'en som allerede ligger i linken. // edit: jeg får ikke opp noen feilmeldinger, men jeg får heller ikke opp noe resultat <?php include "funksjoner.inc.php"; echo "<div id='header'>"; echo navigasjon(); echo "</div>"; echo "<div id='innhold'>"; $db = kobleTil(); $sql = "SELECT * FROM oppdrag"; $resultat = $db->query($sql); while($nesteRad = $resultat->fetch_assoc()) { echo "<hr />"; echo "<table id='resultat'>"; echo "<tr><th>Navn</th><th>Type</th><th>Startdato</th><th>Sluttdato</th><th>Antall timer</th><th>Aktiv</th></tr>"; echo "<tr>"; echo "<td>" . $nesteRad['navn'] . "</td>"; echo "<td>" . $nesteRad['type'] . "</td>"; echo "<td>" . $nesteRad['startDato'] . "</td>"; echo "<td>" . $nesteRad['sluttDato'] . "</td>"; echo "<td>" . $nesteRad['timer'] . "</td>"; echo "<td>" . $nesteRad['aktiv'] . "</td>"; echo '<td><a href="endre.php?id=' . $nesteRad['oppdrID'] . '">Endre</a></td>'; echo '<td><a href="slett.php?id=' . $nesteRad['oppdrID'] . '">Slett</a></td>'; echo "</tr></table>"; echo "<hr />"; } echo "</div>"; ?> <?php include "funksjoner.inc.php"; echo "<div id='header'>"; echo navigasjon(); echo "</div>"; echo "<div id='innhold'>"; $db = kobleTil(); if (isset($_GET['oppdrID']) && is_numeric($_GET['oppdrID']) && $_GET['oppdrID'] > 0) { $id = $_GET['oppdrID']; $sql = "SELECT * FROM oppdrag WHERE oppdrID = $id or die(mysql_error());"; $resultat = $db->query($sql); if($nesteRad) { while($nesteRad = $resultat->fetch_assoc()) { echo "<hr />"; echo "<table id='resultat'>"; echo "<tr><th>Navn</th><th>Type</th><th>Startdato</th><th>Sluttdato</th><th>Antall timer</th><th>Aktiv</th></tr>"; echo "<tr>"; echo "<td>" . $nesteRad['navn'] . "</td>"; echo "<td>" . $nesteRad['type'] . "</td>"; echo "<td>" . $nesteRad['startDato'] . "</td>"; echo "<td>" . $nesteRad['sluttDato'] . "</td>"; echo "<td>" . $nesteRad['timer'] . "</td>"; echo "<td>" . $nesteRad['aktiv'] . "</td>"; echo "</tr></table>"; echo "<hr />"; } } } echo "<form action='kjoer2.php' method='post'>"; echo "<table id='leggInn'><tr><td> <label for='startTid'>Starttid</label></td><td><input type='datetime-local' name='startTid' id='skjemaLeggInn'></td></tr> <tr><td> <label for='slutTid'>Sluttid</label></td><td><input type='datetime-local' name='slutTid' id='skjemaLeggInn'></td></tr> <tr><td> <label for='merknad'>Merknad</label></td><td><textarea name='merknad' rows='10' cols='30' id='skjemaLeggInn'></textarea></td></tr> <tr><td> <label for='antTimer'>Antall Timer</label></td><td><input type='text' name='antTimer' id='skjemaLeggInn'> </td></tr> <tr><td><input type='submit' value='Legg inn'> </td></tr> </form>"; echo "</div>"; ?> Endret 22. november 2016 av ponas91 Lenke til kommentar
Thorbear Skrevet 22. november 2016 Del Skrevet 22. november 2016 $sql = "SELECT * FROM oppdrag WHERE oppdrID = $id or die(mysql_error());"; Her ble jammen alt sammen feil på én gang gitt. Om vi begynner bakerst, så vil jeg gjette på at mysql_error() ikke returnerer noe fornuftig, da det ser ut som du benytter en eller annen form for objekt-orientert tilgang til databasen, du burde sikkert bytte ut det med $db->error() eller noe (avhenger litt av hva slags objekt som ligger i $db). Også er "or die(mysql_error())" PHP-kode, ikke SQL setninger, så det skal stå utenfor anførselstegn, og gjør mest nytte i form av $db->query($sql) or die($db->error()); Selv om jeg vil anbefale å bytte ut die() med f.eks. en bedre formatert feilmelding og at selve feilen skrives til en logg. Til slutt så er det, med et objekt-orientert API, stor sannsynlighet for at du har støtte for "prepared statements", slik at du bør bytte ut "oppdrID = $id" med "oppdrID = ?" for så å angi $id når den forberedte spørringen kjøres. Jeg ser at du allerede sjekker at variabelen er numeric osv, men med "prepared statements" så er du heeeelt sikker på at det ikke lurer seg inn noe rusk der, enten fra din egen kode eller fra en ondsinnet bruker. Lenke til kommentar
ponas91 Skrevet 24. november 2016 Forfatter Del Skrevet 24. november 2016 (endret) pr. nå har jeg endret til dette, men det viser fortsatt ikke det jeg vil ha $db = kobleTil(); if (isset($_GET['oppdrID']) && is_numeric($_GET['oppdrID']) && $_GET['oppdrID'] > 0) { $id = $_GET['id']; $sql = "SELECT * FROM oppdrag WHERE oppdrID = ?"; $statement = $db->prepare($sql); $statement->execute(); $statement->bind_result($id); $antall = 0; while ($nesteRad = $statement->fetch()){ echo "<hr />"; echo "<table id='resultat'>"; echo "<tr><th>Navn</th><th>Type</th><th>Startdato</th><th>Sluttdato</th><th>Antall timer</th><th>Aktiv</th></tr>"; echo "<tr>"; echo "<td>" . $nesteRad['navn'] . "</td>"; echo "<td>" . $nesteRad['type'] . "</td>"; echo "<td>" . $nesteRad['startDato'] . "</td>"; echo "<td>" . $nesteRad['sluttDato'] . "</td>"; echo "<td>" . $nesteRad['timer'] . "</td>"; echo "<td>" . $nesteRad['aktiv'] . "</td>"; echo "</tr></table>"; $antall++; $statement->close(); Endret 24. november 2016 av ponas91 Lenke til kommentar
Crowly Skrevet 24. november 2016 Del Skrevet 24. november 2016 $statement->fetch() returnerer en boolean: http://php.net/manual/en/mysqli-stmt.fetch.php Ta en titt på getResult() og sjekk ut eksemplet, det viser deg hva du skal gjøre: http://php.net/manual/en/mysqli-stmt.get-result.php Lenke til kommentar
ponas91 Skrevet 24. november 2016 Forfatter Del Skrevet 24. november 2016 (endret) Kom noen skritt nærmere. Dette er det jeg har nå: $db = kobleTil(); if (isset($_GET['oppdrID']) && is_numeric($_GET['oppdrID']) && $_GET['oppdrID'] > 0) { $id = $_GET['oppdrID']; $sql = "SELECT * FROM oppdrag WHERE oppdrID = ?"; $stmt = $db->stmt_init(); if ($stmt->prepare($sql)) { $stmt->bind_param("i", $id); $stmt->execute(); $resultat = $stmt->get_result(); while ($nesteRad = $resultat->fetch_array(MYSQLI_NUM)){ echo "<hr />"; echo "<table id='resultat'>"; echo "<tr><th>Navn</th><th>Type</th><th>Startdato</th><th>Sluttdato</th><th>Antall timer</th><th>Aktiv</th></tr>"; echo "<tr>"; echo "<td>" . $nesteRad['navn'] . "</td>"; echo "<td>" . $nesteRad['type'] . "</td>"; echo "<td>" . $nesteRad['startDato'] . "</td>"; echo "<td>" . $nesteRad['sluttDato'] . "</td>"; echo "<td>" . $nesteRad['timer'] . "</td>"; echo "<td>" . $nesteRad['aktiv'] . "</td>"; echo "</tr></table>"; $stmt->close(); Den nederste delen skaper trøbbel tho. tror ikke det er på den måten jeg skal skrive ut dataene. Endret 24. november 2016 av ponas91 Lenke til kommentar
Crowly Skrevet 24. november 2016 Del Skrevet 24. november 2016 Først så må du slutte å ukritisk kopiere kode uten å forstå hva den gjør. Finn ut hva fetch_array(MYSQLI_NUM) gjør, spesielt MYSQLI_NUMhttp://php.net/manual/en/mysqli-result.fetch-array.php Punkt 2, lær deg litt debugging. Den enkleste formen er å legge til noe midlertidig kode for å se hvilke verdier som faktisk ligger i variablene, print_r() og var_dump() er kjekke funksjoner til dette. Skal du ha det enda bedre så installerer/legger du til en debugger som f.eks. xdebug og tar i bruk ett IDE (netbeans, phpstorm osv), da får du mulighet til å legge til break points i koden, og kan single steppe deg igjennom og følge med på hva som skjer. Lenke til kommentar
ponas91 Skrevet 26. november 2016 Forfatter Del Skrevet 26. november 2016 Først så må du slutte å ukritisk kopiere kode uten å forstå hva den gjør. Finn ut hva fetch_array(MYSQLI_NUM) gjør, spesielt MYSQLI_NUMhttp://php.net/manual/en/mysqli-result.fetch-array.php Punkt 2, lær deg litt debugging. Den enkleste formen er å legge til noe midlertidig kode for å se hvilke verdier som faktisk ligger i variablene, print_r() og var_dump() er kjekke funksjoner til dette. Skal du ha det enda bedre så installerer/legger du til en debugger som f.eks. xdebug og tar i bruk ett IDE (netbeans, phpstorm osv), da får du mulighet til å legge til break points i koden, og kan single steppe deg igjennom og følge med på hva som skjer. mer skulle ikke til! danke 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å