Avatar billede Fiber Bjørn Juniormester
10. marts 2011 - 23:38 Der er 14 kommentarer og
1 løsning

Hvilket udsagn er sandt?

Jeg vil på en eller anden måde gerne kunne se hvilket udsagn der er sandt. Altså kunne se om det er
(foraldre_email1 = '$email' AND foraldre_kodeord1 = '$kodeord')
der passer sammen eller om det er
(foraldre_email3 = '$email' AND foraldre_kodeord3 = '$kodeord')
der passer sammen.

$rigtig_email = ?????
$rigtig_kode = ?????
eller hvordan det nu lige skal gøres.

her er det kode der tester om email og kode passer sammen

$query1 = mysql_query ("SELECT * FROM hold WHERE (email = '$email' AND kodeord = '$kodeord') OR (foraldre_email = '$email' AND foraldre_kodeord = '$kodeord') OR (foraldre_email1 = '$email' AND foraldre_kodeord1 = '$kodeord') OR (foraldre_email2 = '$email' AND foraldre_kodeord2 = '$kodeord') OR (foraldre_email3 = '$email' AND foraldre_kodeord3 = '$kodeord') LIMIT 1");
Avatar billede jaze Nybegynder
10. marts 2011 - 23:51 #1
Tænker du på hvilken af dine udsagn der ender op som sande.

Hvis ja så returner en boolsk værdi som true og send vædelsens fra den
Avatar billede Fiber Bjørn Juniormester
11. marts 2011 - 00:07 #2
Ja det er det jeg tænker på men så er det også der jeg står af. Jeg ved ikke hvordan den kode skal se ud, det har jeg ikke prøvet før. Kan du give et eksempel?
11. marts 2011 - 07:35 #3
Jeg skal lige vaere sikker paa at jeg forstaar hvad du er ude efter.

Din forespoergsel traekker en raekke ud af tabellen 'hold' hvor en af email/kodeord kombinationerne matcher med $email og $kodeord.  Hvis du faar et resultat, saa ved du at der var en match og du kender den rigtige email og det rigtige kodeord, nemlig det der staar i $email og $kodeord.  Hvad er det saa du vil vide mere?

Vil du vide om matchen nu var med email/kodeord eller med foralder_email/foralder_kodeord eller med foralder1_email/foralder1_kodeord eller ...?  I saa fald behoever du kun at finde enten emailen eller kodeordet, for hvis det var foralder_email2 der matchede saa maa det ogsaa have vaeret foralder_kodeord2 der matchede.

Hvis du for eksempel vil vide hvilken af emailerne der matchede kunne du goere saaledes:

while($row = mysql_fetch_array($query1))
{
    $rigtig_email = '';
    if($row['email'] == $email) $rigtig_email = $row['email'];
    elseif($row['foraldre_email'] == $email) $rigtig_email = $row['foraldre_email'];
    elseifif($row['foraldre_email1'] == $email) $rigtig_email = $row['foraldre_email1'];
    elseifif($row['foraldre_email2'] == $email) $rigtig_email = $row['foraldre_email2'];
    else $rigtig_email = $row['foraldre_email3'];
    echo $rigtig_email;
}
Avatar billede repox Seniormester
11. marts 2011 - 09:02 #4
Det der er ikke forsvarligt - hvor mange forskellige muligheder er der for den samme person at logge ind i en forespørgsel?
11. marts 2011 - 09:36 #5
repox, ja der er problemer i forbindelse med spoergsmaalet saasom hvor $email og $kode kommer fra (om det er et login system eller hvad), databasestrukturen (adskillige parallelle vaerdi-par), hvad informationen skal bruges til, o.s.v.  Jeg taenkte foerst paa (og var igang med) i mit indlaeg at kommentere, men jeg valgte i foerste omgang at proeve at svare paa det direkte spoergsmaal (hvis jeg har forstaaet det rigtigt).  Det var saa min hensigt, naar det var afklaret, at diskutere de andre emner med spoergsmaalsstilleren.

steffenbloch, hvordan vil du gribe det an?  Har du kikket paa mit indlaeg? og har jeg forstaaet spoergsmaalet korrekt saa langt som det gaar? og er min kode til hjaelp?
Avatar billede Fiber Bjørn Juniormester
12. marts 2011 - 14:00 #6
Det er helt rigtigt forstået at jeg gerne vil kunne gemme hvem der er logget ind af forældrene. Hjemmesiden er lavet til gymnaster i DGI Sydvest og de gymnaster har jo også nogle forældre. Der er nogle af disse forældre der er skilt og kan ikke finde ud af at dele dette login til hjemmesiden sammen med deres barn og alle forældrene. Login giver adgang til interne info på holdet, så som , adresse liste, kalender, gæstebog osv. Derfor er jeg nu i gang med at lave det sådan at 4 forældre også får login til hjemmesiden og få adgang til deres barns holds interne informationer.

Koden som den ser ud lige nu

if( isset($_GET["action"]) && $_GET["action"] == "login")
  {
$email = mysql_real_escape_string($_POST["skriv_email"]);
$kodeord = mysql_real_escape_string($_POST["skriv_kodeord"]);
   
if($_POST['skriv_email'] == "" || $_POST['skriv_kodeord'] == "")
{    }
else {

$sql11 = mysql_query ("SELECT * FROM hold WHERE email = '".$email."' LIMIT 1");
$res11 = mysql_query($sql11);
$row11 = mysql_fetch_array($res11);{
       
$errors = 0;
                   
if ($row11["email"] = "") {
$error_list = "Den indtastede E@mail findes ikke:<br />\n";
$errors++;
}   
}       


$query1 = mysql_query ("SELECT * FROM hold WHERE (email = '$email' AND kodeord = '$kodeord') OR (foraldre_email = '$email' AND foraldre_kodeord = '$kodeord') OR (foraldre_email1 = '$email' AND foraldre_kodeord1 = '$kodeord') OR (foraldre_email2 = '$email' AND foraldre_kodeord2 = '$kodeord') OR (foraldre_email3 = '$email' AND foraldre_kodeord3 = '$kodeord') LIMIT 1");

også er der en masse info fra personen jeg gemmer sådan

$_SESSION["person_email"] = $row["email"];
$_SESSION["person_hold"] = $row["hold"];
$_SESSION["person_navn"] = $row["navn"];
$_SESSION["person_id"] = $row["id"];
$_SESSION["person_status"] = $row["brugerstatus"];
$_SESSION["person_godkendt"] = $row["godkendt"];
$_SESSION["hold_gruppe"] = $row["hold_gruppe"];
       
$_SESSION["hold"] = $row["hold"];
$_SESSION["forside"] = $row["hold"]."_forside_intern";
$_SESSION["setup"] = $row["hold"]."_setup";
$_SESSION["counter"] = $row["hold"]."_counter";
$_SESSION["online"] = $row["hold"]."_online";
$_SESSION["musik"] = $row["hold"]."_musik";
       
$antal_login_nu = $row["antal_login"] + "1";



Jeg ved ikke om det er en helt forkert måde at gøre det på?
12. marts 2011 - 15:01 #7
Spoergsmaalet er dette:  For hver 'account' er der fem personer der hver har en log-in.  Naar der er logged ind vil du, ved hjaelp af query1, finde ud af hvem der loggede ind.  Saadan forstod jeg det, og jeg foreslog i #3 en loesning.  Fik du kikket paa den?  Kunne du bruge det?  For nemheds skyld gentager jeg forslaget her:

$query1 = mysql_query ("SELECT * FROM hold WHERE... [din query]

while($row = mysql_fetch_array($query1))
{
    $rigtig_email = '';
    if($row['email'] == $email) $rigtig_email = $row['email'];
    elseif($row['foraldre_email'] == $email) $rigtig_email = $row['foraldre_email'];
    elseifif($row['foraldre_email1'] == $email) $rigtig_email = $row['foraldre_email1'];
    elseifif($row['foraldre_email2'] == $email) $rigtig_email = $row['foraldre_email2'];
    else $rigtig_email = $row['foraldre_email3'];
    echo $rigtig_email;
}
14. marts 2011 - 15:13 #8
steffenblock, fik du mit sidste indlaeg, #7?  Hvordan kommer vi videre med spoergsmaalet?  Du opstillede 10/3 et problem hvortil jeg naeste morgen foreslog en loesning.  Jeg er spaendt paa din reaktion paa min loesning.  Har jeg misforstaaet problemet og er den foreslaaede loesning derfor ubrugelig?  I saa fald forklar hvor jeg gik galt.  Eller er min foreslaaede loesning et skridt i den rigtige retning men ikke tilstraekkelig?  I saa fald fortael hvor den kommer til kort.  Eller loeser mit forslag problemet saaledes at jeg kan oprette et svar til accept og lukning af spoergsmaalet?
Avatar billede Fiber Bjørn Juniormester
14. marts 2011 - 17:25 #9
Hej Christian.

Jeg har været lidt uheldig at komme til at overskrive den jeg arbejdede i og kom til at lave noget forkert jeg ikke kunne finde fejle i igen. Derfor har jeg været nød til at lave noget nyt login som virkede og er af den grund ikke kommet videre med at indsætte dit forslag igen. Nu skal der vist laves en backup af filen inden jeg går igang :)
Jeg skal nok sende dig en melding på og dit forslag virkede.
16. marts 2011 - 20:27 #10
steffenbloch, den gik i staa igen.  Ved du hvad, jeg opretter dette indlaeg som svar idet jeg mener at mine indlaeg er en hjaelp til det spoergsmaal du stillede.  Hvis du mener det samme, saa accepter venligst spoergsmaalet.  Hvis i mellemtiden spoergsmalet er lige meget, saa luk det igen ved selv at oprette et svar og acceptere det.  Hvis du vil videre med spoergsmaalet og har problemer, saa fortael.  Men lad mig ikke blive haengende.  Please.
16. marts 2011 - 20:28 #11
Det skulle have vaeret et svar.
Avatar billede Fiber Bjørn Juniormester
17. marts 2011 - 01:48 #12
Sådan ser min kode ud men der kommer kun et 1 tal retur i
echo $_SESSION["rigtig_email"];

og jeg har prøvet at login med flere forskellige bruger. Jeg kan bare ikke se hvor den får det 1 tal fra? Der er da ikke noget der siger 1 det kan da kun være en email adresse?????
hvis jeg udskriver $email kommer mail adressen godt nok.

$query1 = mysql_query ("SELECT * FROM hold WHERE (email = '".$email."' AND kodeord = '".$kodeord."') OR (foraldre_email = '".$email."' AND foraldre_kodeord = '".$kodeord."') OR (foraldre_email1 = '".$email."' AND foraldre_kodeord1 = '".$kodeord."') OR (foraldre_email2 = '".$email."' AND foraldre_kodeord2 = '".$kodeord."') OR (foraldre_email3 = '".$email."' AND foraldre_kodeord3 = '".$kodeord."')");
   
while($getter1 = mysql_fetch_array($query1))
{
if($getter1["email"] = '".$email."' || $getter1["kodeord"] = '".$kodeord."')       
{   
$rigtig_email = '';
if($getter1['email'] == $email) $rigtig_email = $getter1['email'];
elseif($getter1['foraldre_email'] == $email) $rigtig_email = $getter1['foraldre_email'];
elseif($getter1['foraldre_email1'] == $email) $rigtig_email = $getter1['foraldre_email1'];
elseif($getter1['foraldre_email2'] == $email) $rigtig_email = $getter1['foraldre_email2'];
else $rigtig_email = $getter1['foraldre_email3'];
$_SESSION["rigtig_email"] = $rigtig_email;

} else { echo "Dette er en fejl";
$error_list = "Den indtastede E@mail findes ikke:<br />\n";
$errors++;
}}

PS: Undskyld forsinkelsen
17. marts 2011 - 06:41 #13
Din kode giver saaledes ikke det forventede resultat.  Der er forskellige ting du kan goere for at undersoege hvor problemet ligger.

(1)  Du kan foerst faa mysql til at fortaelle om der er en syntaks fejl i forespoergslen (for eksempel hvis en af felterne i tabellen er stavet anderledes) ved at bruge 'or die(mysql_error())', altsaa:

$query1 = mysql_query("SELECT * FROM hold ..... '".$kodeord."')") or die(mysql_error());

(2)  Hvis du ikke faar en fejlmelding saasom "There is an error in your ...." saa kan mysql forstaa forespoergslen, men det kan vaere mysql ikke finder nogen resultater.  Den test du har placeret i koden er ikke optimal.  Jeg synes det er nemmere at bruge mysql_num_rows for at taelle hvor mange resultater mysql finder, altsaa:

$query1 = .......;
if(mysql_num_rows($query1) <= 0)
{
  echo "Dette er en fejl....."
}
else
{
  while($getter1 = mysql_fetch_array($query1))
  ....
}

(3)  Og saa proev at udskrive $rigtig_email direkte, altsaa:

.....
else $rigtig_email = $getter1['foraldre_email3'];
echo "Rigtig email = $rigtig_email";

Naar det hele virker efter hensigten kan du saa placere $rigtig_email i $_SESSION['rigtig_email'] hvis du har brug for det.

Summa summarum: naar ovenstaaende bliver indsat i din kode bliver det til:


$query1 = mysql_query ("SELECT * FROM hold WHERE (email = '".$email."' AND kodeord = '".$kodeord."') OR (foraldre_email = '".$email."' AND foraldre_kodeord = '".$kodeord."') OR (foraldre_email1 = '".$email."' AND foraldre_kodeord1 = '".$kodeord."') OR (foraldre_email2 = '".$email."' AND foraldre_kodeord2 = '".$kodeord."') OR (foraldre_email3 = '".$email."' AND foraldre_kodeord3 = '".$kodeord."')");

if(mysql_num_rows($query1) <= 0)
{
  echo "Dette er en fejl....."
}

else
{
  while($getter1 = mysql_fetch_array($query1))
  {
    $rigtig_email = '';
    if($getter1['email'] == $email) $rigtig_email = $getter1['email'];
    elseif($getter1['foraldre_email'] == $email) $rigtig_email = $getter1['foraldre_email'];
    elseif($getter1['foraldre_email1'] == $email) $rigtig_email = $getter1['foraldre_email1'];
    elseif($getter1['foraldre_email2'] == $email) $rigtig_email = $getter1['foraldre_email2'];
    else $rigtig_email = $getter1['foraldre_email3'];
    echo "Rigtig email = $rigtig_email <br>";
  }
}

Proev det af og fortael mig hvad du faar.
19. marts 2011 - 06:52 #14
steffenbloch, hvis du kom for skade at oprette spoergsmaalet paa et tidspunkt hvor du har for travlt til at foelge op, kan du saa ikke godt lukke det her og saa koere videre i en ny traad naar tiderne bliver bedre?  Hvis du mener at jeg har vaeret til hjaelp saa accepter mit svar, i modsat fald opret selv et svar og accepter det.  Alternativt hvis der er mere jeg kan goere idag (og som du er i stand til at foelge op paa) saa sig til.  Men lad mig ikke blive haengende.  Please.
Avatar billede Fiber Bjørn Juniormester
19. marts 2011 - 10:44 #15
#14
Jeg haft tid til at kigge på det igen og har rettet til efter dine anvisninger. Dette gav pote :)

Så nu ser kode sådan ud og virker :)

$query1 = mysql_query ("SELECT * FROM hold WHERE ..... .$kodeord."')")or die(mysql_error());

while($getter1 = mysql_fetch_array($query1))
        {
if(mysql_num_rows($query1) <= 0)
{
  echo "Dette er en fejl.....";
}
else
{
    $rigtig_email = '';
    if($getter1['email'] == $email) $rigtig_email = $getter1['email'];
    elseif($getter1['foraldre_email'] == $email) $rigtig_email = $getter1['foraldre_email'];
    elseif($getter1['foraldre_email1'] == $email) $rigtig_email = $getter1['foraldre_email1'];
    elseif($getter1['foraldre_email2'] == $email) $rigtig_email = $getter1['foraldre_email2'];
    else $rigtig_email = $getter1['foraldre_email3'];
    $_SESSION["rigtig_email"] = $rigtig_email;
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