stclem Skrevet 20. august 2007 Skrevet 20. august 2007 Følger denne guiden for å prøve å lære meg php og mysql, men får feilmelding på følgende script. link Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /hsphere/local/home/osv on line 29 <html> <body> <?php $db = mysql_connect("host", "bruker", "passord"); mysql_select_db("mydb",$db); if ($id) { // query the DB $sql = "SELECT * FROM employees WHERE id=$id"; $result = mysql_query($sql); $myrow = mysql_fetch_array($result); ?> <form method="post" action="<?php echo $PHP_SELF?>"> <input type=hidden name="id" value="<?php echo $myrow["id"] ?>"> First name:<input type="Text" name="first" value="<?php echo $myrow["first"] ?>"><br> Last name:<input type="Text" name="last" value="<?php echo $myrow["last"] ?>"><br> Address:<input type="Text" name="address" value="<?php echo $myrow["address"] ?>"><br> Position:<input type="Text" name="position" value="<?php echo $myrow["position"] ?>"><br> <input type="Submit" name="submit" value="Enter information"> </form> <?php } else { // display list of employees $result = mysql_query("SELECT * FROM employees",$db); while ($myrow = mysql_fetch_array($result)) { printf("<a href=\"%s?id=%s\">%s %s</a><br>\n", $PHP_SELF, $myrow["id"], $myrow["first"], $myrow["last"]); } } ?> </body> </html>
Gjest Slettet+142 Skrevet 20. august 2007 Skrevet 20. august 2007 (endret) Det er tydeligvis noe gale med SQLen eller at query ikke retunrer noen rader. Ellers ser jeg at du ikke definerer $id noen steder... Prøv med dette: PHP <html> <body> <?php $db = mysql_connect("host", "bruker", "passord"); mysql_select_db("mydb",$db); $id = mysql_real_escape_string($_GET["id"]); // Antar at $id skal hentes fra $_GET(URL) og sikrer den. if ($id) { // query the DB $sql = "SELECT * FROM employees WHERE id=$id"; $result = mysql_query($sql); if(!$result) die("Feil i SQL: ".mysql_error()); if(mysql_num_rows($result) < 1) die("Ingen rader i resultat."); $myrow = mysql_fetch_array($result); ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>"> <input type=hidden name="id" value="<?php echo $myrow["id"] ?>"> First name:<input type="Text" name="first" value="<?php echo $myrow["first"] ?>"><br> Last name:<input type="Text" name="last" value="<?php echo $myrow["last"] ?>"><br> Address:<input type="Text" name="address" value="<?php echo $myrow["address"] ?>"><br> Position:<input type="Text" name="position" value="<?php echo $myrow["position"] ?>"><br> <input type="Submit" name="submit" value="Enter information"> </form> <?php } else { // display list of employees $result = mysql_query("SELECT * FROM employees",$db); while ($myrow = mysql_fetch_array($result)) { printf("<a href="%s?id=%s">%s %s</a><br> ", $_SERVER["PHP_SELF"], $myrow["id"], $myrow["first"], $myrow["last"]); } } ?> </body> </html> edit: Jeg likte ikke den tutorialen du linket til... Endret 20. august 2007 av Slettet+142
kakkle Skrevet 20. august 2007 Skrevet 20. august 2007 (endret) Hvis du fortsetter å følge denne php/mysql guiden, så husk at den er skrevet utifra at Register Globals er satt til "on" i php.ini. Dette er en sikkerthetsrisiko, og Register Globals bør være off. Den er satt som default off i versjoner av php etter 4.2.0. Dersom det er plasser hvor du skal ha variabler fra GET (url) eller POST (form, skjema), så må du endre litt. f.eks. i denne koden (fra tutorial page 6): <html> <body> <?php $db = mysql_connect("localhost", "root"); mysql_select_db("mydb",$db); if ($submit) { // here if no ID then adding else we're editing if ($id) { Her vil $submit og $id være ukjent dersom Register Globals er slått av. For å få tak i disse variablene, så kan du bruke: $submit = $_POST["submit"]; $id = $_GET["id"] // Så fremst det hentes fra url $_POST["id"] hvis fra form Det kan virke som om denne tutorialen er litt gammel, og litt utdatert. Endret 20. august 2007 av kakkle
idos Skrevet 20. august 2007 Skrevet 20. august 2007 vet ikke om det er nødvendig.. men jeg bruker alltid: $con = mysql_connect($h,$u,$p); mysql_select_db('myDb',$con); $result = mysql_query($sql,$con); // $con = tilkoblinsdata
stclem Skrevet 20. august 2007 Forfatter Skrevet 20. august 2007 edit: Jeg likte ikke den tutorialen du linket til... 9319777[/snapback] Forslag til noen bedre?
Crowly Skrevet 20. august 2007 Skrevet 20. august 2007 (endret) vet ikke om det er nødvendig.. men jeg bruker alltid: $con = mysql_connect($h,$u,$p); mysql_select_db('myDb',$con); $result = mysql_query($sql,$con); // $con = tilkoblinsdata 9320248[/snapback] Det ikke nødvendig å oppgi $con på mysql_query så lenge det kun er en database link som er aktiv, da finner php den selv. Forslag til noen bedre? Du kan jo prøve å ta en titt på de to jeg har i signaturen min. Endret 20. august 2007 av crowly
idos Skrevet 20. august 2007 Skrevet 20. august 2007 edit: Jeg likte ikke den tutorialen du linket til... 9319777[/snapback] Forslag til noen bedre? 9320825[/snapback] http://www.w3schools.com har mange gode tutorials..
Gjest Slettet+142 Skrevet 20. august 2007 Skrevet 20. august 2007 stclem, har du prøvd koden jeg postet? Den vil skrive ut en feilmelding for deretter å stoppe skriptet.. Og med feilmeldingen kan vi finne ut hva som er galt
Martin A. Skrevet 20. august 2007 Skrevet 20. august 2007 edit: Jeg likte ikke den tutorialen du linket til... 9319777[/snapback] Forslag til noen bedre? 9320825[/snapback] http://www.w3schools.com har mange gode tutorials.. 9321000[/snapback] Og ikke minst linken jeg har i min signatur. Videotutorials > Teksttutorial
stclem Skrevet 21. august 2007 Forfatter Skrevet 21. august 2007 stclem, har du prøvd koden jeg postet?Den vil skrive ut en feilmelding for deretter å stoppe skriptet.. Og med feilmeldingen kan vi finne ut hva som er galt 9321664[/snapback] Parse error: syntax error, unexpected '=' in /hsphere/local/home/osvosv/site.php on line 34
stclem Skrevet 21. august 2007 Forfatter Skrevet 21. august 2007 Noen som kan anbefale noen bøker eller nettsider som enkelt kan skrives ut. Liker å kunne lese på papir. Liker slike bøker der det er oppgaver og forklaringer slik at jeg kan gjøre konkrete oppgaver til de forskjellige "kodene" jeg lærer, og ikke bare en masse oppramsing av koder som jeg ikke skjønner hvor jeg skal plassere. Har grunleggende kjennskap til html/php, og har rotet en del i ferdige mysql databaser via phpmyadmin.
idos Skrevet 21. august 2007 Skrevet 21. august 2007 stclem, har du prøvd koden jeg postet?Den vil skrive ut en feilmelding for deretter å stoppe skriptet.. Og med feilmeldingen kan vi finne ut hva som er galt 9321664[/snapback] Parse error: syntax error, unexpected '=' in /hsphere/local/home/osvosv/site.php on line 34 9327296[/snapback] bytt ut :"<a href="%s?id=%s"> med: "<a href='%s?id=%s'> altså bytt ut " med '...
stclem Skrevet 21. august 2007 Forfatter Skrevet 21. august 2007 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /hsphere/local/home/jaujau/site.php on line 33
idos Skrevet 21. august 2007 Skrevet 21. august 2007 ok. prøv: if(!$result = mysql_query("SELECT * FROM employees",$db)){ die(mysql_error()); } i stedet for bare: $result = mysql_query("SELECT * FROM employees",$db); du vil da få opp mysql feilen , så kan en tadet derfra
stclem Skrevet 21. august 2007 Forfatter Skrevet 21. august 2007 Kommer bare følgende da: No database selected
stclem Skrevet 21. august 2007 Forfatter Skrevet 21. august 2007 Latterlig av meg ja. Glemte å skrive inn databasenavn i mysql_select_db("mydb",$db); og da funket jo alt fra starten av
Gjest Slettet+142 Skrevet 21. august 2007 Skrevet 21. august 2007 Hehe, alle har sine tabber Men husk å velg db neste gang da ^^
stclem Skrevet 21. august 2007 Forfatter Skrevet 21. august 2007 Men er nok noe feil med id, da jeg legger inn en ny "ansatt" via form tidligere laget i testen, så kommer den som id 0, når jeg prøver å legge inn en til så går ikke det, det skjer ikke noe. Samme problemet er det når jeg prøver å endre en som er lagt inn tidligere. Derimot direkte i databasen er det ikke noe problem å endre.
idos Skrevet 21. august 2007 Skrevet 21. august 2007 (endret) Men er nok noe feil med id, da jeg legger inn en ny "ansatt" via form tidligere laget i testen, så kommer den som id 0, når jeg prøver å legge inn en til så går ikke det, det skjer ikke noe. Samme problemet er det når jeg prøver å endre en som er lagt inn tidligere. Derimot direkte i databasen er det ikke noe problem å endre. 9329478[/snapback] kjør: echo $_GET['id']."<br>"; // før mysql_real_escape_string og echo $id; // etter mysql_real_escape_string se hva du får som respons.. NB!! har du sett id til autoincrement ?? ellers så legger den bare inn id = Endret 21. august 2007 av idos
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å