KjellSpell Skrevet 6. april 2007 Del Skrevet 6. april 2007 God dag. Jeg har nå drevet med php 2-3 uker, og jobber med og få nyhetene til og bli printet med nyhet?id=*et nummer* koden jeg nå bruker er: <?php //Her har jeg en inkludert fil(toppen av designet) $con = mysql_connect("localhost","bruker","passord"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("news", $con); $id = $_GET['id']; // nyheter.php?id=12 (eller et annet tall) $result = mysql_query("SELECT * FROM nyheter WHERE id='$id'"); while($row = mysql_fetch_array($result)) { echo '<b>'; echo $row['Titel']; echo '</b>'; echo "<br />"; echo $row['Nyhet']; //Det jeg vil skal bli skrevet på siden echo '<br />'; echo $row['nyhets']; echo '<br />'; echo '<div id="fortid">Skrevet av: '; echo $row['Forfater']; echo ' den '; echo $row['Dato']; echo '</div>'; } mysql_close($con); //Her og har jeg en inkludert fil(bunden av designet) ?> Faktisk vett jeg ikke om jeg er inne på noe men uansett får jeg denne feilen: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampp\htdocs\php\nyhet.php on line 11 Er jeg inne på noe? Vist ja, hva er galt? Lenke til kommentar
Ståle Skrevet 6. april 2007 Del Skrevet 6. april 2007 Er du sikker på at tabellen heter nyheter? Lenke til kommentar
KjellSpell Skrevet 6. april 2007 Forfatter Del Skrevet 6. april 2007 Ja det er jeg. Dobbel sjekte og. Lenke til kommentar
cyclo Skrevet 6. april 2007 Del Skrevet 6. april 2007 Endre denne: $result = mysql_query("SELECT * FROM nyheter WHERE id='$id'"); Til denne: $result = mysql_query("SELECT * FROM nyheter WHERE id='$id'") or die (mysql_error()); Så får du sett hva som er feil med sql koden din Lenke til kommentar
tehextinct Skrevet 6. april 2007 Del Skrevet 6. april 2007 Den erroren der betyr vel at denne setningen: $result = mysql_query("SELECT * FROM nyheter WHERE id='$id'"); er feil så enten Heter ikke tabelln nyheter som ståle sa eller så er den problemer å connecte til databasen(ute lukk den for som regel vil det kommet en anne error da) Jeg tror at du ikke har skrevet nyhet.php?id=5 eller noe sånt for vis du skriver nyhet?id=5 og tabellen er tom(tabellen har ikke en row med id 5) Da får du en error for databasen kan ikke outputte noe den ikke har Prøv å legge in noe i databasen først? eller har du det? Vis du har det så har du ikke brukt riktig id=?? bak nyhet.php eller så har du gått direkte inn på nyhet.php Lenke til kommentar
Anders Moen Skrevet 6. april 2007 Del Skrevet 6. april 2007 (endret) <?php mysql_connect("localhost", "bruker", "pass"); mysql_select_db("database"); $id = $_GET['id']; if (!mysql_num_rows(mysql_query("SELECT * FROM nyheter WHERE id = '$id'"))) { echo 'Nyheten finnes ikke'; die(''); } $r = mysql_query("SELECT * FROM nyheter WHERE id = '$id'"); while($row = mysql_fetch_array($r)) { echo '<b>'; echo $row['Titel']; echo '</b>'; echo "<br />"; echo $row['Nyhet']; //Det jeg vil skal bli skrevet på siden echo '<br />'; echo $row['nyhets']; echo '<br />'; echo '<div id="fortid">Skrevet av: '; echo $row['Forfater']; echo ' den '; echo $row['Dato']; echo '</div>'; } mysql_close(); ?> Den die() som er oppå der, skal stoppe feilmeldinga fra å komme opp...men har lagt merke til at den slår feil noen ganger hos meg, men... Selve koden er ikke forandret (nesten), utenom at da får du bort den feilmeldinga hvis ID'en ikke finnes eller noe sånt. Edit: Fiksa hele koden, pga errors Endret 6. april 2007 av Anders-Moen Lenke til kommentar
KjellSpell Skrevet 6. april 2007 Forfatter Del Skrevet 6. april 2007 Takk, Anders. Denne funket utmerket. Lenke til kommentar
loathsome Skrevet 6. april 2007 Del Skrevet 6. april 2007 echo '<b>';echo $row['Titel']; echo '</b>'; echo "<br />"; echo $row['Nyhet']; //Det jeg vil skal bli skrevet på siden echo '<br />'; echo $row['nyhets']; echo '<br />'; echo '<div id="fortid">Skrevet av: '; echo $row['Forfater']; echo ' den '; echo $row['Dato']; echo '</div>'; ? Ditt rotehue. Du kan med fordel (både med tanke på semantikk og fart) gjøre det om til følgende; PHP <?php echo '<p><strong>'.$row['Titel'].'</strong><p><p>'.$row['Nyhet'].'</p><p>'.$row['nyhets'].'</p><div id="fortid">Skrevet av: '.$row['Forfater'].' den '.$row['Dato'].'</div>'; ?> loathsome+ Lenke til kommentar
KjellSpell Skrevet 6. april 2007 Forfatter Del Skrevet 6. april 2007 (endret) Fore trekker min ver. til nå jeg. Har bare holt på med php i 2-3 uker så. Endret 6. april 2007 av CissaM Lenke til kommentar
Anders Moen Skrevet 6. april 2007 Del Skrevet 6. april 2007 (endret) Egentlig burde to strippe slashes og gjøre om < og > til < og > og det kan være at du skal skrive over flere linjer óg, så da kan du bruke nl2br. For å få linker og sånn da, kan du bruke bbKoder (hjelper deg på MSN hvis du vil ha det) echo '<b>'; echo nl2br(htmlentities(stripslashes($row['Titel']))); echo '</b>'; echo "<br />"; echo nl2br(htmlentities(stripslashes($row['Nyhet']))); //Det jeg vil skal bli skrevet på siden echo '<br />'; echo nl2br(htmlentities(stripslashes($row['nyhets']))); echo '<br />'; echo '<div id="fortid">Skrevet av: '; echo nl2br(htmlentities(stripslashes($row['Forfater']))); echo ' den '; echo htmlentities(stripslashes($row['Dato'])); // Man vet aldri om Christian tar en tur i db og forandrer datoen til en eller annen kode vett :P echo '</div>'; Endret 6. april 2007 av Anders-Moen Lenke til kommentar
loathsome Skrevet 6. april 2007 Del Skrevet 6. april 2007 Fore trekker min ver. til nå jeg. Har bare holt på med php i 2-3 uker så. 8319978[/snapback] Så du foretrekker 10 linjer i stedet for en? Så du bryr deg ikke om optimalisering? Lenke til kommentar
Martin A. Skrevet 6. april 2007 Del Skrevet 6. april 2007 Når man først er inne på optimalisering bør man drope SELECT * FROM foo også. Spesifiser det du skal hente fra DB, ikke ta alt. Sikkerhet er også meget viktig når det kommer til userinput. Hvem som helst kan kjøre en SQL-injection slik du har det nå. Lenke til kommentar
shaker Skrevet 6. april 2007 Del Skrevet 6. april 2007 (endret) Egentlig burde to strippe slashes og gjøre om < og > til < og >og det kan være at du skal skrive over flere linjer óg, så da kan du bruke nl2br. For å få linker og sånn da, kan du bruke bbKoder (hjelper deg på MSN hvis du vil ha det) Man skal ikke bruke stripslashes på noe som leses ut av en database med mindre det som ligger i den har blitt addslashed 2 ganger. F.eks. hvis magic quotes er på og du addlasher i tilleg. Edit: Og ved å gjøre $id = intval($_GET['id']); blir det litt mere sikkert Endret 6. april 2007 av shaker Lenke til kommentar
Anders Moen Skrevet 6. april 2007 Del Skrevet 6. april 2007 (endret) Ikke det? Når jeg dropper og bruke stripslashes (når jeg bruker det sånn som jeg satt opp til Christian her), og jeg f. eks har en kode i databasen som settes inn via inputs, f. eks <?php echo "Hallo, verden!"; ?> så blir outputen sånn her på meg: <?php echo \"Hallo, verden!\"; ?> Altså i db så står det sånn som i outputen siden jeg ikke bruker stripslashes på output. Endret 6. april 2007 av Anders-Moen Lenke til kommentar
shaker Skrevet 6. april 2007 Del Skrevet 6. april 2007 Hva får du hvis du kjører det her? <?php echo get_magic_quotes_gpc(); ?> Fra php.net: Descriptionstring addslashes ( string $str ) Returns a string with backslashes before characters that need to be quoted in database queries etc. These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte). An example use of addslashes() is when you're entering data into a database. For example, to insert the name O'reilly into a database, you will need to escape it. Most databases do this with a \ which would mean O\'reilly. This would only be to get the data into the database, the extra \ will not be inserted. Having the PHP directive magic_quotes_sybase set to on will mean ' is instead escaped with another '. The PHP directive magic_quotes_gpc is on by default, and it essentially runs addslashes() on all GET, POST, and COOKIE data. Do not use addslashes() on strings that have already been escaped with magic_quotes_gpc as you'll then do double escaping. The function get_magic_quotes_gpc() may come in handy for checking this. Lenke til kommentar
loathsome Skrevet 8. april 2007 Del Skrevet 8. april 2007 Egentlig burde to strippe slashes og gjøre om < og > til < og >og det kan være at du skal skrive over flere linjer óg, så da kan du bruke nl2br. For å få linker og sånn da, kan du bruke bbKoder (hjelper deg på MSN hvis du vil ha det) echo '<b>'; echo nl2br(htmlentities(stripslashes($row['Titel']))); echo '</b>'; echo "<br />"; echo nl2br(htmlentities(stripslashes($row['Nyhet']))); //Det jeg vil skal bli skrevet på siden echo '<br />'; echo nl2br(htmlentities(stripslashes($row['nyhets']))); echo '<br />'; echo '<div id="fortid">Skrevet av: '; echo nl2br(htmlentities(stripslashes($row['Forfater']))); echo ' den '; echo htmlentities(stripslashes($row['Dato'])); // Man vet aldri om Christian tar en tur i db og forandrer datoen til en eller annen kode vett :P echo '</div>'; 8320012[/snapback] Herregud, er det med dere å gjøre ting så tungvint som mulig, da? PHP <?php $row = stripslashes(htmlentities(nl2br($row))); echo '<p><strong>'.$row['Titel'].'</strong><p><p>'.$row['Nyhet'].'</p><p>'.$row['nyhets'].'</p><div id="fortid">Skrevet av: '.$row['Forfater'].' den '.$row['Dato'].'</div>'; ?> Lenke til kommentar
Anders Moen Skrevet 8. april 2007 Del Skrevet 8. april 2007 Fungerer det der? Hvis ja, så lærte jeg óg noe nytt i dag Lenke til kommentar
Ståle Skrevet 8. april 2007 Del Skrevet 8. april 2007 Prøv det.. og hvis det virker, så har du lært noe nytt idag. Lenke til kommentar
tehextinct Skrevet 8. april 2007 Del Skrevet 8. april 2007 Genialt! virker jør d og taKK! Lenke til kommentar
loathsome Skrevet 8. april 2007 Del Skrevet 8. april 2007 Fungerer det der? Hvis ja, så lærte jeg óg noe nytt i dag 8336456[/snapback] Selvfølgelig funker det. $row er en array, og man kan bruke de funksjonene man vil på arrays. 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å