Gå til innhold

må jeg spørre databasen 2 ganger?


Anbefalte innlegg

jeg skal lage et skjema til å redigere innhold som ligger i en database.

jeg har da et skjema med noen tekstfelt og en rullgardinmeny.

slik som jeg har satt det opp må jeg spørre databasen 2 ganger om den samme informasjonen. en gang til tekstfeltene og en gang til rullgardinmenyen.

 

dette virker litt for dumt så derfor spør jeg:

er det en måte å gjøre dette annerledes på, slik at jeg lipper å spørre databasen 2 ganger??

 

her er koden min...

 

 

<?php
require_once("../inc/connection.php");

if (isset($_REQUEST['id'])) {
  $user_id = $_REQUEST['id'];
}

// Perform database query
$result = mysql_query("SELECT * FROM vt_users  WHERE id = $user_id", $connection);
if (!$result) {
	 die("Database query failed: " . mysql_error());
}

// Use returned data
while ($row = mysql_fetch_array($result)) {
 $u_id = $row['id'];
 $first_name = $row['first_name'];
 $last_name = $row['last_name'];
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Rediger bruker</title>
</head>

<body>
<form name="edit_frm" method="post" action="commit.php?action=edit">
 <p><label for="first_name_fld">Fornavn</label>
<input name="first_name_fld" type="text" value="<?php echo $first_name; ?>" /></p>
 <p><label for="last_name_fld">Etternavn</label>
<input name="last_name_fld" type="text" value="<?php echo $last_name; ?>" /></p>
 <select name="list">
	 <?php
	 // Perform another database query
	 $result2 = mysql_query("SELECT * FROM vt_users", $connection);
	 if (!$result2) {
			 die("Database query failed: " . mysql_error());
	 }
	 // Use returned data
	 while ($row2 = mysql_fetch_array($result2)) {
		 $id = $row2['id'];
		 $f_name = $row2['first_name'];
		 echo "<option value='$id'>$f_name</option>";
	 }
	 ?>
 </select>
 <p><input name="edit_btn" type="submit" value="Oppdater" /></p>
</form>
</body>
</html>

 

 

Endret av cyclo
Kode i spoiler
Lenke til kommentar
Videoannonse
Annonse

Hei, hvis du inistialiserer en variabel utenfor whileløkka og legger arrayen du får fra databasen der, så skal den kunne brukes flere steder.

 

Prøv noe sånt:

$row = mysql_fectch_array($result);

 

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

$u_id = $row['id'];

$first_name = $row['first_name'];

$last_name = $row['last_name'];

}

 

Så mener jeg at den arrayen $row skal kunne brukes det andre stedet du kjører en ny spørring.

 

Håper det var til hjelp.

Endret av cyclo
Fjernet unødvendig quote
Lenke til kommentar

Aloha

 

En ide som burde fungere, har ikke testet (har programmert for mye i java i det siste)

den er heller ikke klar, men kommentere med hva som burde gjøres videre.

 

mvh

thegreatone

 

 

<?php
require_once("../inc/connection.php");

if (isset($_REQUEST['id'])) {
  $user_id = $_REQUEST['id'];
}

// Perform database query
$result = mysql_query("SELECT * FROM vt_users", $connection);
if (!$result) {
	 die("Database query failed: " . mysql_error());
}

$result_array = array();
// Use returned data
while ($row = mysql_fetch_array($result)) {

	 //ENDRING ENDRING ENDIRNG


 $result_array[] = array( $row['id'],$row['first_name'],$row['last_name']);

 // $u_id = $row['id'];
 //$first_name = $row['first_name'];
 //$last_name = $row['last_name'];

	 //SLUTT ENDRING ENDRING ENDIRNG

}

	 //ENDRING ENDRING ENDIRNG

for($result_array as $user){
  $user_array = $user;
  if($user_array[0] ==  $_REQUEST['id']){
   //set fornavn etternavn osv
   //samt at du kan loppe igjennom samme array ($result_array) når du trenger alle brukere
  }

}

	 //SLUTT ENDRING ENDRING ENDIRNG
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Rediger bruker</title>
</head>

<body>
<form name="edit_frm" method="post" action="commit.php?action=edit">
 <p><label for="first_name_fld">Fornavn</label>
<input name="first_name_fld" type="text" value="<?php echo $first_name; ?>" /></p>
 <p><label for="last_name_fld">Etternavn</label>
<input name="last_name_fld" type="text" value="<?php echo $last_name; ?>" /></p>
 <select name="list">
	 <?php
	 // Perform another database query
	 $result2 = mysql_query("SELECT * FROM vt_users", $connection);
	 if (!$result2) {
			 die("Database query failed: " . mysql_error());
	 }
	 // Use returned data
	 while ($row2 = mysql_fetch_array($result2)) {
		 $id = $row2['id'];
		 $f_name = $row2['first_name'];
		 echo "<option value='$id'>$f_name</option>";
	 }
	 ?>
 </select>
 <p><input name="edit_btn" type="submit" value="Oppdater" /></p>
</form>
</body>
</html>

 

Endret av cyclo
Kode i spoiler
Lenke til kommentar
  • 1 måned senere...

Her har du en kode som gjør at du bare behøver å spørre databasen 1 gang ;)

Og i tillegg bare spørr om dataen du trenger, id, first_name og last_name

Fant ut det var litt unødvendig å spørre om *(allt) når du bare bruker de 3 feltene.

 

 

<?php

require_once("../inc/connection.php");

 

if (isset($_REQUEST['id'])) {

$user_id = $_REQUEST['id'];

}

 

// Perform database query

$result = mysql_query("SELECT id, first_name, last_name FROM vt_users", $connection);

if (!$result) {

die("Database query failed: " . mysql_error());

}

 

// Use returned data

$brukere = array();

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

if($row['id'] == $user_id) {

// Her er det snakk om brukeren vi redigerer nå, så la oss ta vare på informasjonen

$u_id = $row['id'];

$first_name = $row['first_name'];

$last_name = $row['last_name'];

 

// Om du skal ha med denne brukeren i arrayet/listen under må du uncommente denne linjen

#$brukere[$row['id']] = $row['first_name'];

 

} else {

// Legg alle andre brukere i et array

$brukere[$row['id']] = $row['first_name'];

}

 

}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Rediger bruker</title>

</head>

 

<body>

<form name="edit_frm" method="post" action="commit.php?action=edit">

<p><label for="first_name_fld">Fornavn</label>

<input name="first_name_fld" type="text" value="<?php echo $first_name; ?>" /></p>

<p><label for="last_name_fld">Etternavn</label>

<input name="last_name_fld" type="text" value="<?php echo $last_name; ?>" /></p>

<select name="list">

<?php

 

foreach($brukere as $id => $f_name) {

echo "<option value='$id'>$f_name</option>";

}

?>

</select>

<p><input name="edit_btn" type="submit" value="Oppdater" /></p>

</form>

</body>

</html>

 

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...