mikael_aMedlem sedan mars 2000475 inlägg jag har en MySQL tabell som innehåller en massa artiklar, dessa skriver jag ut i en tabell...
Nu kan man klicka på varje artikel genom raden:
echo "<tr><td><a href=\"visa.php?id=".$rad['id']."\">".$rad[2]."</td><td><a href=\"visa.php?id=".$rad['id']."\">".$rad[1]."</td>
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...
dessa skriver jag ut på följande sätt
<td width=300><input type=\"text\" name=\"författare\" value=\"$författare\" size=\"24\" border=\"0\"><br>
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:
<form action=\"andra.php?id=" .$rad['id']."\" method=get>
<input type=submit name=change value=Ändra border=0></form>
och sedan:
$fråga = "SELECT * FROM artikel WHERE id = '".$_GET['id']."'";
men resultatet är tomt innehåller inget...
någon som orkar hjälpa mig?
(visste inte om jag skulle posta detta under php eller i MySQL)
ThACRoWMedlem sedan dec. 2001314 inlägg 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.
mikael_aMedlem sedan mars 2000475 inlägg hmmm
vad betyder
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'
MatteMedlem sedan aug. 20002 975 inlägg Du har fel i en sträng någonstans.
Brukar oftast betyda att du har ett citationstecken för mycket, för litet eller felplacerat.
Hur ser koden ut på de rader du får den? Visa gärna några rader innan också, då felet ofta kan ligga där.
mikael_aMedlem sedan mars 2000475 inlägg ok... här kommer koden:
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...
orkar någon annars visa en enkel kod snutt?
<?php
/* We have now connected, unless you got an error message */
//require('../dbfunc.inc.php');
//$records =& dbFetchRecords('artikel');
$connection = @mysql_connect("localhost","xxx","xxx")
or die("Kunde inte ansluta till MySQL");
$databasen = mysql_select_db("xxx");
//$fråga = "SELECT * FROM artikel";
$fråga = "SELECT * FROM artikel WHERE id = $_GET[id]";
$resultat = mysql_query($fråga);
while($rad=mysql_fetch_array($resultat))
echo "$_GET['id']";
?>
id: <?$id?><br>
resultat: <?$resultat?><br>
fråga: <?$fråga?><br>
rad: <?$rad?><br>
email: <?$email?><br><br>
<?php
/* Now lets display result */
echo "
<table width=100% border=1 cellspacing=2 cellpadding=0>
<tr>
<td bgcolor=#9dbeda colspan=3>&</td>
</tr>
</table>
<form action=spara.php method=get name=spara>
<div align=center>
<table border=0 cellspacing=0 cellpadding=0 align=center>
<tr>
<td width=200>författare:<br>
</td>
<td width=10></td>
<td width=300>datum</td>
</tr>
<tr>
<td width=200><input type=\"text\" name=\"author\" value=\"$author\" size=\"24\" border=\"0\"><br>
<br>
</td>
<td width=10></td>
<td width=300><input type=\"text\" name=\"date\" value=\"$date\" size=\"24\" border=\"0\"><br>
<br>
</td>
</tr>
<tr>
<td width=10></td>
<td rowspan=3 width=300><textarea name=\"text\" value=\"$text\" rows=\"5\" cols=\"45\"></textarea><br>
</td>
</tr>
<input type=submit name=spara value=Spara border=0> <a href=index.php>Tillbaka</a></div>
</form>
</body>
";
?>
K@llenMedlem sedan mars 20032 667 inlägg Två möjliga fel:
-
Använd aldrig konstiga tecken i ett variabelnamn likt å, ä, ö
-
byt:
$fråga = "SELECT * FROM artikel WHERE id = $_GET[id]";
mot
$fråga = "SELECT * FROM artikel WHERE id = " . $_GET['id'] . "";
Under förutsättning att id är numeriskt.
K@llenMedlem sedan mars 20032 667 inlägg Vad vill du att nedanstående ska göra, definiera variablerna?
id: <?$id?><br>
resultat: <?$resultat?><br>
fråga: <?$fråga?><br>
rad: <?$rad?><br>
email: <?$email?><br><br>
ThACRoWMedlem sedan dec. 2001314 inlägg Jag tror det är så här han menar...
id: <?=$id?><br>
resultat: <?=$resultat?><br>
fråga: <?=$fråga?><br>
rad: <?=$rad?><br>
email: <?=$email?><br><br>
mikael_aMedlem sedan mars 2000475 inlägg 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....
MatteMedlem sedan aug. 20002 975 inlägg 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'];
mikael_aMedlem sedan mars 2000475 inlägg ok.. tack...
hmmmm nu får jag följande fel:
SELECT * FROM artikel WHERE id =
You have an error in your SQL syntax near '' at line 1
MatteMedlem sedan aug. 20002 975 inlägg Det tyder på att du inte har någon variabel id i din URL, eller att värdet är tomt.
Hur ser koden ut som skickar till detta skript (sidan innan) ?
Vad står det i adressfältet?
Patrik81Medlem sedan okt. 2001538 inlägg Hejsan.
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?
Hoppas jag hjälpt på något sätt =)
MVH Patrik
K@llenMedlem sedan mars 20032 667 inlägg
Matte skrev:
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.
mikael_aMedlem sedan mars 2000475 inlägg 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>
";
?>
tack för all hjälp
MatteMedlem sedan aug. 20002 975 inlägg Ditt formulär i visa.php:
<form action=\"andra.php?id=" .$rad['id']."\" method=get>
<input type=submit name=change value=edit border=0></form>
Ändra det till
<form action=\"andra.php\" method=\"get\">
<input type=\"hidden\" name=\"id\" value=\"{$rad['id']}\">
<input type=\"submit\" name=\"change\" value=\"edit\" border=\"0\">
</form>
Så tror jag det ska fungera.
mikael_aMedlem sedan mars 2000475 inlägg jag får fortfarande felet:
SELECT * FROM artikel WHERE id =
You have an error in your SQL syntax near '' at line 1
MatteMedlem sedan aug. 20002 975 inlägg För att veta om var vi ska leta, titta i den genererade HTML-koden i din webbläsare, vad det står där för:
<form action=\"andra.php\" method=\"get\">
<input type=\"hidden\" name=\"id\" value=\"{$rad['id']}\">
<input type=\"submit\" name=\"change\" value=\"edit\" border=\"0\">
</form>
mikael_aMedlem sedan mars 2000475 inlägg du menar visa källa???
då står det endast ovanstående fel...
MatteMedlem sedan aug. 20002 975 inlägg Japp, visa källa.
Men jag menar filen visa.php där formuläret finns.