Avatar billede busschou Praktikant
31. marts 2003 - 17:01 Der er 22 kommentarer og
1 løsning

drop down menu

Jeg er lidt newbie på mysql og php så jeg har brug for lidt hjælp
Jeg har en database i mysql indeholde diverse person oplysninger (fornavn, efternavn, adresse, telefon mm..)
Jeg har lavet en side hvor man via en drop down menu gerne skulle kunne få vist informationerne for en given bruger ud i en tabel på samme side
Menu punkterne i drop down menuen er således person navnene taget ud fra databasen

Her er min kode:

<?

mysql_connect("mysql.blabla.dk", "", "");
mysql_select_db("");

  $q = mysql_query("SELECT * FROM tabel ORDER BY 'fornavn'");

echo "    <form action=\"navne_menu.php\" method=\"post\">
    <input type=\"submit\" value=\"Vis\" name=\"vis\">
    <select>";

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

echo "<option value=\"$row[fornavn]\"> $row[fornavn] $row[efternavn]</option>";
}

echo "</select></form>";


if ($vis) {
  $y = mysql_query("select * tabel where fornavn = '$fornavn'");
  $row = mysql_fetch_array($y);
echo "

<center><b><font size=\"5\">Bruger oplysninger: </font></b>
    <table border=\"1\" width=\"50%\">
      <tr><td width=\"50%\">Brugernavn:    </td>
          <td width=\"50%\">$row[login]    </td></tr>
      <tr><td width=\"50%\">Password:      </td>
          <td width=\"50%\">$row[password]  </td></tr>
      <tr><td width=\"50%\">Fornavn:        </td>
          <td width=\"50%\">$row[fornavn]  </td></tr>
      <tr><td width=\"50%\">Efternavn:      </td>
          <td width=\"50%\">$row[efternavn] </td></tr>
      <tr><td width=\"50%\">Adresse:        </td>
          <td width=\"50%\">$row[adresse]  </td></tr>
      <tr><td width=\"50%\">PostNr:        </td>
          <td width=\"50%\">$row[postnr]    </td></tr>
      <tr><td width=\"50%\">By:            </td>
          <td width=\"50%\">$row[by]        </td></tr>
      <tr><td width=\"50%\">Telefon:        </td>
          <td width=\"50%\">$row[telefon]  </td></tr>
      <tr><td width=\"50%\">Mobil:          </td>
          <td width=\"50%\">$row[mobil]    </td></tr>
      <tr><td width=\"50%\">Arbejds tlf:    </td>
          <td width=\"50%\">$row[arbtlf]    </td></tr>
      <tr><td width=\"50%\">Email:          </td>
          <td width=\"50%\">$row[email]    </td></tr>
      <tr><td width=\"50%\">Arbejds mail:  </td>
          <td width=\"50%\">$row[arbmail]  </td></tr>
      <tr><td width=\"50%\">Fødselsdag:    </td>
          <td width=\"50%\">$row[fødselsdag]</td></tr>
    </table>
  </center>";
}

?>


</body>

</html>

Det virker ikke helt
Problemet ligger i værdien af det valgte navn i menuen - dvs i linjen: <option value=\"$row[fornavn]\">
Samt når der submittes i forespørgslen hvor jeg skal bruge oplysningerne - dvs i linjen: mysql_query("select * from phpSP_users where fornavn = '$fornavn'");
Den finder ikke noget navn med værdien $fornavn

Er der nogen som kan hjælpe mig med hvordan min value og query skal se ud ?

Håber jeg har udtrykt mig nogenlunde forståeligt
Avatar billede swaxi Nybegynder
31. marts 2003 - 17:07 #1
prøv med :
    echo "<option value=\"".$row['login']."\">".$row['fornavn']." ".$row['efternavn']."</option>";

... eftersom flere brugere jo nok kan have det samme fornavn ...
Avatar billede swaxi Nybegynder
31. marts 2003 - 17:12 #2
... og din select skal have et name ... altså :

<?

mysql_connect("mysql.blabla.dk", "", "");
mysql_select_db("");

  $q = mysql_query("SELECT * FROM `tabel` ORDER BY `fornavn`");

echo "    <form action=\"navne_menu.php\" method=\"post\">\n";
echo "    <input type=\"submit\" value=\"Vis\" name=\"vis\">\n";
echo "    <select name=\"login\">\n";

while ($row = mysql_fetch_array($q)) {
    echo "        <option value=\"".$row['login']."\">".$row['fornavn']." ".$row['efternavn']."</option>\n";
}
echo "    </select></form>\n";


if ($_POST['vis']) {
  $y = mysql_query("SELECT * FROM tabel WHERE `login`='".addslashes($_POST['login'])."'");
  $row = mysql_fetch_array($y);

(...klip...)
Avatar billede postndk Nybegynder
31. marts 2003 - 17:13 #3
hvis du har et id med i din database, så ville jeg hellere bruge id som value i din <option da det er en unik værdi...derfor.
Avatar billede swaxi Nybegynder
31. marts 2003 - 17:13 #4
eh ... sorry ...
linien :
    if ($_POST['vis']) {

skiftes med :
    if (isset($_POST['vis'])) {

så skulle det vist virke
Avatar billede busschou Praktikant
31. marts 2003 - 17:27 #5
swaxi ... den viser stadig ingenting når jeg submitter desværre
Avatar billede swaxi Nybegynder
31. marts 2003 - 17:37 #6
hm ... hvordan ser html'en ud ? (bliver selectbox'en genereret korrekt ?)
Avatar billede swaxi Nybegynder
31. marts 2003 - 17:39 #7
prøv evt. at erstatte følgende linie :
    echo "    <input type=\"submit\" value=\"Vis\" name=\"vis\">\n";
med :
    echo "    <input type=\"hidden\" value=\"vis\" name=\"vis\">\n";
    echo "    <input type=\"submit\" value=\"Vis\">\n";
Avatar billede busschou Praktikant
31. marts 2003 - 17:45 #8
Det hjalp heller ikke...
Jeg får fint nok en boks frem på skærmen med samtlige navne og en knap til at vælge med
Og hvis jeg vælger fx:
$y = mysql_query("SELECT * FROM tabel WHERE login = 'palle'");
Så får jeg fint en tabel ud med "palles" oplysninger
Så der går noget galt ide den submittes tror jeg
Avatar billede busschou Praktikant
31. marts 2003 - 17:46 #9
foresten er det fint nok at bruge $login den er valgt unik
Avatar billede swaxi Nybegynder
31. marts 2003 - 17:53 #10
> foresten er det fint nok at bruge $login den er valgt unik

det regnede jeg osse med ... hvis du ser efter er det postndk der har skrevet den kommentar ...

prøv at erstatte linien :
    $y = mysql_query("SELECT * FROM tabel WHERE `login`='".addslashes($_POST['login'])."'");
med noget a la :
    $query = "SELECT * FROM tabel WHERE `login`='".addslashes($_POST['login'])."'";
    echo $query."<br>\n";
    $y = mysql_query("$query);

(...)

bare for at se hvad der går galt
Avatar billede swaxi Nybegynder
31. marts 2003 - 17:54 #11
hov
Avatar billede swaxi Nybegynder
31. marts 2003 - 17:55 #12
#¤%#%#¤%!!!
såddan her :
    $y = mysql_query("$query);
erstattes med :
    $y = mysql_query($query) or die(mysql_error());
Avatar billede busschou Praktikant
31. marts 2003 - 18:03 #13
ahh jeg får beskeden:
Unknown column 'login' in 'where clause'
Kom lige i tanke om at værdien $login i min mysql hedder "user" så jeg rettede linjen
$query = "SELECT * FROM tabel WHERE `login`='".addslashes($_POST['login'])."'";
til
$query = "SELECT * FROM tabel WHERE `user`='".addslashes($_POST['login'])."'";

Så kom der ingen fejl men stadig en tom tabel frem..
Avatar billede swaxi Nybegynder
31. marts 2003 - 18:05 #14
lav lige en :

    $query = "SELECT * FROM tabel WHERE `user`='".addslashes($_POST['login'])."'";
    $y = mysql_query($query) or die(mysql_error());
    $row = mysql_fetch_array($y) or die(mysql_error());
    var_dump($row)
Avatar billede swaxi Nybegynder
31. marts 2003 - 18:07 #15
og prøv osse lige at lave
    echo $query;

... bare for at se at værdien $_POST['login'] er sat ...
Avatar billede busschou Praktikant
31. marts 2003 - 18:15 #16
Hmm jeg fik en parse error
så jeg tilføjede et ; efter var_dump($row)

Herefter kom der slet ingen tabel frem
Før kom der trods alt en tom tabel frem

echo $query;
giver mig beskeden:
SELECT * FROM tabel WHERE `user`=''
Avatar billede busschou Praktikant
31. marts 2003 - 18:17 #17
hey det virker
Skulle selvfølgelig lige rette
<option value=\"".$row['user']."\">".....
til
<option value=\"".$row['user']."\">".....
Avatar billede busschou Praktikant
31. marts 2003 - 18:21 #18
swaxi >> tak for hjælpen
Selvom det var en "padde"-fejl fra min side så havde det nok ikke virket uden de ekstra tiltag du gav mig
Jeg husker i hvert fald lige at bruge "die(mysql_error());" noget mere

læg et svar så får du point :o)
Avatar billede busschou Praktikant
31. marts 2003 - 18:23 #19
Kom lige til at tænke på en ting som du måske ved
Kan man "auto"-submitte formen?
Jeg mener.. så bare det man vælger navnet i menuen så kommer tabellen uden at man klikker på knappen ?
Ville være fikst hvis man kunne det
Avatar billede swaxi Nybegynder
31. marts 2003 - 18:24 #20
> Jeg husker i hvert fald lige at bruge "die(mysql_error());" noget mere
brug den konsekvent, så risikerer du ikke mærkeligheder. og husk osse at bruge addslashes() når du bruger brugerinput til at smide i dine queries ...
Avatar billede swaxi Nybegynder
31. marts 2003 - 18:26 #21
<option name="login" onchange="this.form.submit()">
Avatar billede swaxi Nybegynder
31. marts 2003 - 18:30 #22
eh ...
echo "    <select name=\"login\" onchange=\"this.form.submit()\">\n";
Avatar billede busschou Praktikant
31. marts 2003 - 18:34 #23
kanon - tak for hjælpen og tipsne
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester