Avatar billede onlineman Nybegynder
24. september 2003 - 17:28 Der er 11 kommentarer

DB udtræk array og løkke

Har en DB med tabel(brugere) som bl.a indeholder felterne brugernavn og password!
Ved logon skal felterne brugernavn og password checkes!
Bemærk, at både felterne brugernavn og password indeholder mange navne og passwords!
Mit problem er, at scriptet kun får fat i den sidst indtastede kombination af brugernavn og password!
Hvor sætter man en løkke ind i det nedenfor viste script så alle brugernavne og passwords checkes?:

$hent_data = mysql_query("SELECT * FROM brugere") or die (mysql_error());
while ($vis_data = mysql_fetch_row($hent_data)) {

$db_brugernavn = $vis_data[8];
$db_password = $vis_data[9];
}


if (($brugernavn == $db_brugernavn) && ($password == $db_password)) {
echo "Du er logget in!<p>";

//BLA-BLA-BLA OSV.
}

else {
echo "Prøv igen";
}
Avatar billede riversen Nybegynder
24. september 2003 - 17:30 #1
strukturer din database ordentligt, så der kun er et brugernavn og pass i hver række
Avatar billede detox Nybegynder
24. september 2003 - 17:36 #2
Normalt vil man bare checke det i forespørgslen:

$hent_data = mysql_query("SELECT * FROM brugere WHERE brugernavn='$brugernavn' AND password='$password'") or die (mysql_error());
if (mysql_num_rows($hent_data) == 1) {
  //du er logget ind
}else
  //whatever
}
Avatar billede onlineman Nybegynder
24. september 2003 - 17:37 #3
læs venligst hvad der står!
Der ER kun et brugernavn og password i hver række MEN felterne brugernavn og password indholder hver især mange brugernavne og password! F.eks. indeholder række 1 denne kombination (brugernavn=hans, password=56HJK89)- række 2 (brugernavn=helle, password=34er5kl) OSV.
Avatar billede detox Nybegynder
24. september 2003 - 17:39 #4
Ja, den er jeg med på.
Avatar billede onlineman Nybegynder
24. september 2003 - 17:41 #5
min seneste kommentar : "læs hvad der står!..." - var møntet på riversen!!
Avatar billede detox Nybegynder
24. september 2003 - 17:44 #6
Ok da, men det er klart det nemmeste at checke det, som jeg beskrev. Frem for at hive alle rækkerne ud og checke det i php.
Avatar billede onlineman Nybegynder
24. september 2003 - 17:57 #7
Detrox> Du har nok ret! Men hvis jeg nu insisterer på, at gøre det på min facon og forestillede os, at det array som udtrækkes indeholdt andre værdier som f.eks. fodboldspiller_navne og antal_troeje_vaske hvorledes skulle jeg så skrive det således, at jeg kunne placere de udtrukne informationer i en <table> UDEN for løkken! Håber du forstår!?
Avatar billede solja Nybegynder
24. september 2003 - 18:01 #8
Det er klart at dit script kun fanger den sidst indtastede kombination, da du først efter loopen checker om brugeren er logget ind. Da vil dine varibler indeholde den sidste indtastede kombination.

Prøv med

$loggetInd = "Prøv igen!<p>";

$hent_data = mysql_query("SELECT * FROM brugere") or die (mysql_error());
while ($vis_data = mysql_fetch_row($hent_data)) {

$db_brugernavn = $vis_data[8];
$db_password = $vis_data[9];

if (($brugernavn == $db_brugernavn) && ($password == $db_password)) {
$loggetInd = "Du er logget in!<p>";
//BLA-BLA-BLA OSV.
}
}

echo $loggetInd;


//solja
Avatar billede detox Nybegynder
24. september 2003 - 18:14 #9
Ja, nu er jeg lidt i tvivl om, hvad det er du vil. Hvis det bare er data fra den samme række gør det ingen forskel:

$hent_data = mysql_query("SELECT * FROM brugere WHERE brugernavn='$brugernavn' AND password='$password'") or die (mysql_error());
if (mysql_num_rows($hent_data) == 1) {
  //du er logget ind
  $vis_data = mysql_fetch_row($hent_data);
  // udskriv data i tabel
}else{
//osv...
}

Ellers må du lige forklare lidt nærmere, hvad det er du vil.
Avatar billede onlineman Nybegynder
24. september 2003 - 18:32 #10
Detrox > Det virker fint som du har beskrevet - tak! Men når vi nu er igang ville jeg gerne om jeg også kunne få en "bid" mere med, da jeg ofte har stået i en situation med et problem der "ligner" - så her kommer igen:

Forestil dig, at jeg har en tabel med id,fodboldspiller_navne,troejevask! Jeg vil nu gerne lave en pæn designet <table> med det udtræk som kommer fra DB. Jeg gør som følger:

$hent_data = mysql_query("SELECT * FROM vask") or die (mysql_error());
while ($vis_data = mysql_fetch_row($hent_data)) {

$db_fodboldspiller = $vis_data[1]; //navn på fodboldspiller
$db_troejevask = $vis_data[2]; //antal trøjevaske
}

//Det vil jeg nu gerne have puttet ind i en pænt formatteret <table>

echo "<table><tr>";
echo "<td>Spiller navn</td><td>Antal vaske</td>";
echo "</tr><tr>";
echo "<td>$db_fodboldspiller</td><td>$db_troejevask</td>";
echo "</tr></table>";

Ovennævnte virker selvfølgelig ikke! Men jeg ville altså gerne have, at hele
arrayets indhold af $db_fodboldspiller stod pænt i tabellen under "Spiller navn" og at arrayets indhold af $db_troejevask står under Antal vaske!

Håber du forstår hvad jeg mener!?
Avatar billede solja Nybegynder
24. september 2003 - 18:50 #11
echo "<table><tr>";
echo "<td>Spiller navn</td><td>Antal vaske</td>";
echo "</tr>";

$hent_data = mysql_query("SELECT * FROM vask") or die (mysql_error());
while ($vis_data = mysql_fetch_row($hent_data)) {

$db_fodboldspiller = $vis_data[1]; //navn på fodboldspiller
$db_troejevask = $vis_data[2]; //antal trøjevaske

echo "<tr><td>$db_fodboldspiller</td><td>$db_troejevask</td></tr>";
}

echo "</table>";


Er det ikke det du mener?
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