id nummret skickas till visa.php som med hjälp av sql satsen:
$fråga = "SELECT * FROM artikel WHERE id = $_GET[id]";
och innehållet i den artikeln visas. På samma sida (visa.php) har jag även en "editera" länk som länkas till sidan andra.php och som i sin tur innehåller ett formulär med textfält...
men mitt textfält är tomt? om jag förstår det rätt så skickas id numret för artikeln från min index.php till visa.php (som visar artikeln) men däremot skickas inte id med till den tredje sidan när jag trycker på "editera"...
jag försöker i visa.php skriva in följande efter länken:
Felsök lite granna. Lägg till en "echo $_GET['id']" på sistnämnda sidan, så att du vet om det är SQL-satsen det är fel på eller om det är variabeln som inte skickas till sidan.
detta är tredje sidan man kommer till... första sidan fungerar och listar alla artiklar i databasen, och trycker man på tex artikel nr 2 visas denna... dock när jag sedan på sida 2 (där artikeln visas) trycker på ändra knappen, fungerar det inte... då är det nedanstående kod som visas...
ok... jag har ändrat sql satsen till det du föreslog, men får då felet...
Warning: Supplied argument is not a valid MySQL result resource in /home3/mt02_project/group1/www/php/artiklar/change.php on line 21
rad 21 = min while loop...
id:<?=$id?><br> osv... testar jag bara att skriva ut variablarna för att se om de innehåller något... den enda som innehåller något är fråga... den innehåller sql raden SELECT * FROM artikel WHERE id =
de övriga är tomma, så det verkar som om den inte väljer rätt id nummer....
Array-variabler i en sträng (inom citationstecken) ska antingen anges med "måsvingar" runt omkring eller, som K@llen föreslog, brytas ur strängen. Använder du måsvingar/klamrar så bli det så här:
$fråga = "SELECT * FROM artikel WHERE id = {$_GET['id']}";
// Skriv ut sql-frågan för att kolla att variabler kommit in
echo $fråga."<br>";
// Lägger till felmeddelande från mysql
$resultat = mysql_query($fråga) or die(mysql_error());
$rad = mysql_fetch_array($resultat);
// echo $_GET['id'];
Vart får du $id ifrån? Du har ju inte fört över värdet från $_get['id'] till $id. Så den förstår jag lite varför den är tom när du skriver ut för att kolla om den finns.
$resultat är väl arrayen som du lagrar allt du hämtat från databasen i väl? Isåfall borde det som skrivs ut vara typ:
resultat: Array
Om man däremot testar med <?= $resultat[0] ?> kanske det händer något.
$fråga funkar ju, även om inte heller jag tycker det är tillrådligt med "konstiga" tecken i variabelnamn.
$rad borde funka tycker jag, ser ju rätt ut, även om jag själv hade viljat se måsvingar runt din while-sats.
Men vart kommer $email variabeln ifrån? Varifrån får den sitt värde? Och likadant $author, $date och $text som ligger inbäddade i html koden. Är det värden som ligger i databasen?
Array-variabler i en sträng (inom citationstecken) ska antingen anges med "måsvingar" runt omkring eller, som K@llen föreslog, brytas ur strängen. Använder du måsvingar/klamrar så bli det så här:
$fråga = "SELECT * FROM artikel WHERE id = {$_GET['id']}";
// Skriv ut sql-frågan för att kolla att variabler kommit in
echo $fråga."<br>";
// Lägger till felmeddelande från mysql
$resultat = mysql_query($fråga) or die(mysql_error());
$rad = mysql_fetch_array($resultat);
// echo $_GET['id'];
Det man kan önska mer i koden ovan är en koll om sql-frågan returnerade något.
$fråga = "SELECT * FROM artikel WHERE id = {$_GET['id']}";
// Skriv ut sql-frågan för att kolla att variabler kommit in
echo $fråga."<br>";
// Lägger till felmeddelande från mysql
$resultat = mysql_query($fråga) or die(mysql_error());
if( mysql_num_rows( $resultat ) < 1 ) {
print "Inget returnerades";
}
else {
// gör vad som ska göras
$rad = mysql_fetch_array($resultat);
// echo $_GET['id'];
}
Men som matte redan konstaterat fattas det ett värde i din sql-fråga. Därför kan det vara bra att validera variabler som kommer från adressraden. Inte minst för att de kan innehålla tecken/värde som man inte förväntar sig.
jag includerar alla mina sidor, så kanske ni förstår bättre vad jag försöker att göra...
databasen ser ut enligt följande:
id - head - text - author - date - email
filen: index.php = visar alla artiklar i databasen och gör så att jag kan klicka på dem, skickar id nummret vidare till sidan visa.php
filen: visa.php = visar artiklar som jag tryckte på i index.php
filen: andra.php = om jag tryckte på knappen ändra/editera i filen visa.php så skall informationen fyllas i formuläret... det är denna fil ni har försökt få fungera...
filen: spara.php = har jag inte gjort ännu, då andra.php inte fungerar... men det är väll bara att göra en update?
index.php
********
<?
/* We have now connected, unless you got an error message */
$connection = @mysql_connect("localhost","xxx","xxx")
or die("Kunde inte ansluta till MySQL");
$databasen = mysql_select_db("xxx");
$fråga ="SELECT * FROM artikel ORDER BY datum";
$resultat = mysql_query($fråga);
?>
<p></p>
<table width="350" border="1" cellspacing="2" cellpadding="0" align="left">
<tr>
<td bgcolor="#9dbeda"><b>Rubrik</b></td>
<td bgcolor="#9dbeda"><b>Artikel</b></td>
<td bgcolor="#9dbeda"><b>Författare</b></td></tr>
<?
/* Here we fetch the result as an array */
while ($rad = mysql_fetch_array($resultat))
{
/* This bit sets our data from each row as variables, to make it easier to display */
$id = $rad["id"];
$head=$rad["head"];
$text["text"];
$author=$rad["author"];
/* Now lets display result */
echo "<tr><td><a href=\"visa.php?id=".$rad['id']."\">".$rad[1]."</td><td><a href=\"visa.php?id=".$rad['id']."\">".$rad[2]."</td><td><a href=\"visa.php?id=".$rad['id']."\">".$rad[3]."</td></tr>";
}
mysql_close($connection);
?>
visa.php
*******
<?php
/* We have now connected, unless you got an error message */
$connection = @mysql_connect("localhost","xxx","xxx")
or die("Kunde inte ansluta till MySQL");
$databasen = mysql_select_db("xxx");
$fråga = "SELECT * FROM artikel WHERE id = $_GET[id]";
$resultat = mysql_query($fråga);
while($rad=mysql_fetch_array($resultat))
{
/* This bit sets our data from each row as variables, to make it easier to display */
$id = $rad["id"];
$head=$rad["head"];
$text["text"];
$author=$rad["author"];
}
/* Now lets display result */
echo"
$head
$author
$text
<form action=\"andra.php?id=" .$rad['id']."\" method=get>
<input type=submit name=change value=edit border=0></form>
";
mysql_close($connection);
?>
andra.php
********
<?php
/* We have now connected, unless you got an error message */
$connection = @mysql_connect("localhost","xxx","xxx")
or die("Kunde inte ansluta till MySQL");
$databasen = mysql_select_db("xxx");
$fråga = "SELECT * FROM artikel WHERE id = {$_GET['id']}";
// Skriv ut sql-frågan för att kolla att variabler kommit in
echo $fråga."<br>";
// Lägger till felmeddelande från mysql
$resultat = mysql_query($fråga) or die(mysql_error());
$rad = mysql_fetch_array($resultat);
// while($rad=mysql_fetch_array($resultat))
?>
<?php
{
/* This bit sets our data from each row as variables, to make it easier to display */
$id = $rad["id"];
$head=$rad["head"];
$text["text"];
$author=$rad["author"]
}
/* Now lets display result */
echo "
<table width=100% border=1 cellspacing=2 cellpadding=0>
<tr>
<td bgcolor=#9dbeda colspan=3>Ändra student</td>
</tr>
</table>
<form action=spara.php method=get name=sparastudent>
<div align=center>
<table border=0 cellspacing=0 cellpadding=0 align=center>
<tr>
<td width=200>Rubrik:<br>
</td>
<td width=10></td>
<td width=300>Författare</td>
</tr>
<tr>
<td width=200><input type=\"text\" name=\"head\" value=\"$head\" size=\"24\" border=\"0\"><br>
<br>
</td>
<td width=10></td>
<td width=300><input type=\"text\" name=\"author\" value=\"$author\" size=\"24\" border=\"0\"><br>
<br>
</td>
</tr>
<td width=10></td>
<td rowspan=3 width=300><textarea name=\"text\" value=\"$text\" rows=\"5\" cols=\"45\"></textarea><br>
</td>
</tr>
</table>
<input type=submit name=spara value=Spara border=0>
</form>
</body>
";
?>