webForumDet fria alternativet

SQL-hämtning och function

4 svar · 277 visningar · startad av filipbh

filipbhMedlem sedan juli 2002405 inlägg
#1

Hej... Varför skrivs inte värdena ut i formuläret?

//Hämtar info
$link = mysql_connect ("localhost","$u","$p");
$database = mysql_select_db("$db");
$sql = "SELECT * FROM gastbok WHERE id='".$_GET[inlagg]."'";
$result = mysql_query($sql);

while($info=mysql_fetch_array($result)){ 
$info_namn = $info['namn'];

function doform(){
echo "<form action=\"admin.php?save=1\" method=\"post\">";
echo "<input type=\"hidden\" name=\"do_hidden_id\" value=\"".$_GET['inlagg']."\"><input type=\"hidden\" name=\"do_hidden_typ\" value=\"".$_GET['do']."\">";
echo "<table>";
echo "<tr><td>Namn:</td><td><input type=\"text\" name=\"do_namn\" class=\"form\" value=\"" . $info['namn'] . "\"></td></tr>";
echo "<tr><td>E-post:</td><td><input type=\"text\" name=\"do_epost\" class=\"form\"></td></tr>";
echo "<tr><td colspan=\"2\">Meddelande:</td></tr>";
echo "<tr><td colspan=\"2\"><textarea name=\"do_meddelande\" class=\"form\" rows=\"10\" cols=\"50\">" . $info['meddelande'] . "</textarea></td></tr>";
echo "<tr><td colspan=\"2\"><input type=\"submit\" name=\"do_submit\" class=\"form\" value=\"Skicka\"></td></tr>";
echo "</table>";
echo "</form>";
 }
}

Hade först SQL-hämtningen och funktionen för sig men testade så här om det skulle göra någon skillnad. Det gjorde det dock inte så därför ber jag om hjälp.. Om man gör om de två gömda fälten till "text" så visas GET-texterna.

aasahMedlem sedan mars 20034 471 inlägg
#2

Hiddenvärden syns aldrig i sidan. Syns de inte i källa heller?

Dies_IraeMedlem sedan aug. 2001145 inlägg
#3
  1. Ta bort doform funktionen helt och skriv ut raderna direkt i loopen, att definiera en funtion innanför while scopen borde ge massa felmedelanden om nu inte php försöker hitta på någon ny standard.

  2. Eller, flytta ut doform funktionen från while och anropa funktionen innanför och använd global $info för att kunna läsa variablar innanför funktioner.

Exempel:

$link = mysql_connect ("localhost","$u","$p");
$database = mysql_select_db("$db");
$sql = "SELECT * FROM gastbok WHERE id='".$_GET[inlagg]."'";
$result = mysql_query($sql);

while($info=mysql_fetch_array($result)){

	$info_namn = $info['namn']; // <- Denna variabeln använder du inte.

	// Ta bort functionen
	// För att göra de mer lättläst kan du hoppa ur php när du skriver ut så här mycket html.
	
	?>

	<form action="admin.php?save=1" method="post">
	<input type="hidden" name="do_hidden_id" value="<?= $_GET['inlagg']; ?>"><input type="hidden" 	name="do_hidden_typ" value="<?= $_GET['do'] ?>">
	<table>

		<tr><td>Namn:</td><td><input type="text" name="do_namn" class="form" value="<?= $info['namn'] ?>"></td></tr>
		<tr><td>E-post:</td><td><input type="text" name="do_epost" class="form"></td></tr>
		<tr><td colspan="2">Meddelande:</td></tr>
		<tr><td colspan="2"><textarea name="do_meddelande" class="form" rows="10" cols="50"><?= $info['meddelande'] ?></textarea></td></tr>
		<tr><td colspan="2"><input type="submit" name="do_submit" class="form" value="Skicka"></td></tr>
	</table>
	</form>

<? }  ?>

Notera att detta kanske inte funkar exakt som de är då jag bara skrev rakt av

filipbhMedlem sedan juli 2002405 inlägg
#4

De är åtskilda nu igen.. Anledningen till att jag la formuläret i en function var för att kunna anropa det flera gånger. Sparar in lite rader i filen...

Dies_IraeMedlem sedan aug. 2001145 inlägg
#5

Om du använder funktionen på fler ställen än i den while loopen så är de ju bra att göra en funktion av de hela, men inte skapa den inuti loopen (blir fortfarande förvånad att php inte säger till)

Lägg tex funktionen högs upp på sidan och anropa den som man ska i loopen.

function doform($info) {
	// Om du inte vill skicka in info som parameter måste du använda "global" för att kunna läsa variablar utanför scopet.
	// global $info;

	?>
	<form action="admin.php?save=1" method="post">
	<input type="hidden" name="do_hidden_id" value="<?= $_GET['inlagg']; ?>"><input type="hidden" 	name="do_hidden_typ" value="<?= $_GET['do'] ?>">
	<table>

		<tr><td>Namn:</td><td><input type="text" name="do_namn" class="form" value="<?= $info['namn'] ?>"></td></tr>
		<tr><td>E-post:</td><td><input type="text" name="do_epost" class="form"></td></tr>
		<tr><td colspan="2">Meddelande:</td></tr>
		<tr><td colspan="2"><textarea name="do_meddelande" class="form" rows="10" cols="50"><?= $info['meddelande'] ?></textarea></td></tr>
		<tr><td colspan="2"><input type="submit" name="do_submit" class="form" value="Skicka"></td></tr>
	</table>
	</form>
	<?

}

$link = mysql_connect ("localhost","$u","$p");
$database = mysql_select_db("$db");
$sql = "SELECT * FROM gastbok WHERE id='".$_GET[inlagg]."'";
$result = mysql_query($sql);

while($info=mysql_fetch_array($result)) {
	doform($info);

}
138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)