Gå til innhold

Feil i script, prøver å lære


Anbefalte innlegg

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>

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

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 av Slettet+142
Lenke til kommentar

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 av kakkle
Lenke til kommentar
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 av crowly
Lenke til kommentar
Gjest Slettet+142

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 :)

Lenke til kommentar
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

Lenke til kommentar

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.

Lenke til kommentar
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 '... :)

Lenke til kommentar

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

Lenke til kommentar

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.

Lenke til kommentar
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 av idos
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å
×
×
  • Opprett ny...