Avatar billede onlinemanden Nybegynder
27. april 2008 - 14:45 Der er 8 kommentarer og
1 løsning

Bruge variabel UDENFOR while løkke

Et udtræk af navne fra min MYSQL DB giver ca. 10 navne!
Jeg bruger WHILE til, at gennemløbe  rækkerne og får også ovennænvte ca. 10 navne placeret i en popup som det er meningen! Jeg ønsker nu, at arbejde videre med disse navne således, at når jeg vælger navnet på popup´en og trykker "hent oplysninger" finder den Databasens oplysninger om den enkelte person! Men i mit nedenfor viste eksempel henter den bare oplysninger om den senest indtastede person! Hvorfor og hvordan retter jeg dette! Det går galt ligeså snart jeg skal bruge variablerne "$name og $id" udenfor while løkken! Hjælp ønskes!


<html>

<head></head>

<body>
<?

$db = mysql_connect ("xxxx","xxxx","xxxx") or die (mysql_error());
mysql_select_db ("xxxx", $db);

$hent = mysql_query("SELECT * FROM resultater_lifterdata");
echo "<form action='$PHP_SELF' method='post' name='postlifterdata'>";
echo "Nuværende medlemmer i DB - se popup!<p>";
echo "<select name='lifterselection' size='1'>";
while ($vis = mysql_fetch_row($hent)) {

$name = $vis[1];
$id = $vis[0];

echo "<option value='$id'>$name</option>";
}
echo "</select><br>";
echo "<input type='submit' name='submitlifterdata' value='hent oplysninger'>";
echo"</form>";

if ($submitlifterdata) {

$hent = mysql_query("SELECT * FROM resultater_lifterdata WHERE id = $id ");
while ($vis = mysql_fetch_row($hent)) {
echo "<br>$vis[1]<br>";
}
}

?>


</body>


</html>
Avatar billede erikjacobsen Ekspert
27. april 2008 - 14:53 #1
Du skal vel bare

$hent = mysql_query("SELECT * FROM resultater_lifterdata WHERE id =  $submitlifterdata");

Men du skal simpelthen ikke lægge det på nettet før du ved alt om sql-injection - meget meget usikker kode.
Avatar billede schaefner Juniormester
27. april 2008 - 14:56 #2
Du skal vel bare bruge $lifterselection i din SQL i stedet.

Din kode virker dog ikke særlig sikker.
Avatar billede erikjacobsen Ekspert
27. april 2008 - 14:58 #3
Ja, selvfølgelig:

$hent = mysql_query("SELECT * FROM resultater_lifterdata WHERE id =  $lifterselection");
Avatar billede schaefner Juniormester
27. april 2008 - 15:02 #4
<?php
$db = mysql_connect("xxxx","xxxx","xxxx") or die (mysql_error());
mysql_select_db("xxxx", $db);

echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">";
echo "Nuværende medlemmer i DB - se popup!<p>";
echo "<select name=\"lifterselection\" size='1'>";

$hent = mysql_query("SELECT * FROM `resultater_lifterdata`");

while ($vis = mysql_fetch_row($hent))
{
    echo "<option value=\"".$vis[0]."\">".$vis[1]."</option>";
}

echo "</select><br>";
echo "<input type=\"submit\" value=\"Hent oplysninger\">";
echo "</form>";

if (isset($_POST['lifterselection']))
{
    $hent = mysql_query("SELECT * FROM `resultater_lifterdata` WHERE `id` = ".intval($_POST['lifterselection']));
    $vis = mysql_fetch_row($hent);

    echo "<br>".$vis[1]."<br>";
}
?>
Avatar billede g1mzee Nybegynder
27. april 2008 - 15:05 #5
$hent = mysql_query("SELECT * FROM resultater_lifterdata WHERE id = $_POST['lifterselection'] ");
da det er en post du sender. ellers skal du difinere den til noget andet, og så sige det.
Avatar billede onlinemanden Nybegynder
27. april 2008 - 15:43 #6
Tak for de hurtige svar!
Det var jo "$lifterselection" jeg skulle bruge i dette tilfælde!
Men, at koden skulle være så usikker var jeg ikke klar over - jeg må jo prøve, at søge på "sql-injection" på google eller her for, at finde noget om emnet som erik Jacobsen foreslår! Hvor er det iøvrigt, at koden bliver så usikker og den kode som schaefner viser - er den sikker?
Vil I begge (erikjacobsen og schaefner) være tilfredse med 100 points til hver - læg da venligst et svar! Tak for hjælpen!
Avatar billede erikjacobsen Ekspert
27. april 2008 - 16:22 #7
Jeg samler slet ikke på point, tak. Læs blot videre om sql-injection ;)
Avatar billede schaefner Juniormester
27. april 2008 - 21:04 #8
Jeg vil da mene at min burde være nogenlunde sikker :)

Du kan læse lidt om SQL injection her:

http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php

Du kan også bruge lidt her fra: http://dk.php.net/register_globals
Avatar billede onlinemanden Nybegynder
27. april 2008 - 21:19 #9
Tak for svarene endnu engang! Da Erik Jacobsen ikke samler på points går alle 200 points naturligvis til schaefner!
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

IT-JOB

BEC Financial Technologies

Business analyst (senior)

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Lead Data Platform Architect