Avatar billede denniswiencken Nybegynder
17. april 2010 - 22:36 Der er 13 kommentarer og
1 løsning

2 tabeller

Jeg står nu og skal have et resultat frem,

min database:

Elever:
-id
-Fornavn
-Efternavn
-Stregkode
-Klasse
-Email
-Billede

Lektion:
-id
-LokaleID
-Emne
-Nr
-Dag
-Uge
-Elever

Jeg skal når fx det er mandag kl 8.55-9.40 og der findes en række hvor LokaleID=$_POST['lokaleid'], Uge=15, Dag=1 og Nr=2 skal den se hvad feltet 'elever' hedder og finde de rækker i tabelen 'elever' er li med feltet 'klasse' fra overstående tabel,

Ved ikke om det er ordentligt forklaret men ellers så skriv, håber i kan hjælpe :)

<?php
include("menu.php");
$link = mysql_connect ('localhost', 'root', '') or die(mysql_error());
mysql_select_db('HTX') or die('Could not select database');

$dag=date('w');
$time=date('H');
$min=date('i');
$lokaleid=$_POST['lokaleid'];
$uge=('15');


if ($dag == 1 && 8*60+10 <= $time*60+$min && $time*60+$min <= 8*60+55) {
    echo "Mandag 8.55-9.40";

}
elseif ($dag == 1 && 8*60+55 <= $time*60+$min && $time*60+$min <= 9*60+40) {
    echo "Mandag 8.55-9.40";
    $result = mysql_query("SELECT * FROM Lektion WHERE LokaleID='$lokaleid' AND Uge='$uge' AND Dag='1' AND Nr='2'") or die(mysql_error());
while($row = mysql_fetch_array($result))
{

    echo " <table border='1'><tr><td><img src=" . $row[Billede] . " height='120' width='100'></td></tr><br>";
echo " <tr><td> " . $row['Fornavn'] . " " . $row['Efternavn'] . " <br> " . $row['Stregkode'] . " " . $row['Klasse'] . " <br " . $row['Email'] . " </td></tr></table>";
}
}
else {
  echo "Ingen lektioner i dette lokale på nuværende tidspunkt";
}

mysql_close($link);
?>
Avatar billede zynzz Praktikant
18. april 2010 - 09:05 #1
Altså jeg går ud fra at cellen "Elever" i tabellen Lektion er elevernes unike ID?

Eksempel: 1,2,3,4,5,6,7 osv...

$result = mysql_query("SELECT * FROM Elever WHERE id IN ('".$row['Elever']."')");
18. april 2010 - 09:45 #2
Jeg proever igen.

Hvis du vil have informationer om elever saa skal din SELECT vaere fra tabellen Elever.  Eftersom du vil vaelge eleverne ud fra kriteria i tabellen Lektion skal du bruge en Join query saa som:

SELECT Elever.* FROM Lektion JOIN Elever ON Lektion.Elever = Elever.Klasse.

Jeg forstaar saa at du vil lave tabeller over eleverne for hver kombination af lokale, uge, dag, og nr.  I din query bruger du kun en variabel, $_POST['lokaleid'] hvorimod du "hardkoder" uge, dag, og nr.  Jeg vil foreslaa at du bruger variabler for alle fire saa din kode virker uanset hvilke uger, dage, og numre du vil have.

Saa foreslaar jeg at du putter ugedagene i en array $ugedag saa $ugedag[1] giver "Mandag" o.s.v. eller for at tage det en tand videre, $ugedag[$dag] giver ugedage-navne svarende til ugedage-numre.  Tilsvarende foreslaar jeg en array $tidsrum for lektions-tiderne saa $lektion[1] giver "8.00-8.45" o.s.v. og $lektion[$Nr] giver tidsrum svarende til lektionsnumre.  Eftersom arrays starter ved [0] og du ikke har dag- og Nr-numre 0 saa har jeg indsat en "" i begge arrays.

Jeg har for test genbrugt tabellen dennis for lektioner fra et tidligere spoergsmaal og har lavet tabellen dennisE for elever og jeg har fyldt vaerdier i tabellerne saasom Elev1, email1, billede1, o.s.v.

Det virker paa mit system, saa jeg haaber, for det foerste, at det ogsaa virker hos dig og for det andet at jeg havde forstaaet dit spoergsmaal korrekt.

Koden foelger nedenfor.  Du kan se resultatet (med et tomt felt for billede) paa http://christianjorgensen.be/dennis2.php .

I koden har jeg fyldt tal ind for $lokale, $uge, $dag, og $nr som i dit system nok kommer fra en html form.

<?
$ugedag = array("", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag");
$tidsrum = array("", "8.00-8.45", "8.55-9.40", "9.50-10.40", "10.50-11.50", "12.15-13.00");
$lokale = 57;
$uge = 15;
$dag = 1;
$nr = 1;
echo $ugedag[$dag] . " " . $tidsrum[$nr] . "<br/>";
$link = mysql_connect ('xxxxx', 'yyyyy', 'zzzzz') or die(mysql_erorr());
mysql_select_db('qqqqq') or die('Could not select database');
$result = mysql_query("SELECT dennisE.* FROM dennis JOIN dennisE ON Elever = Klasse WHERE LokaleID = $lokale AND Uge = $uge AND Dag = $dag AND Nr = $nr") or die(mysql_error());
mysql_close($link);
if(mysql_num_rows($result) == 0) echo "Ingen lektioner i dette lokale paa nuvaerende tidspunkt<br/>";
else
while($row = mysql_fetch_array($result))
{
  echo " <table border='1'><tr><td><img src=" . $row[Billede] . " height='120' width='100'></td></tr><br>";
echo " <tr><td> " . $row['Fornavn'] . " " . $row['Efternavn'] . " <br> " . $row['Stregkode'] . " " . $row['Klasse'] . " <br " . $row['Email'] . " </td></tr></table>";
}
?>
Avatar billede denniswiencken Nybegynder
18. april 2010 - 09:46 #3
Nej det er navnet på klassen, og jeg ved ikke hvordan jeg skal hente alle elever med klassen 09htx13a frem fra tabellen elever, hvis rækken i tabellen lektion ser sådan her ud

LokaleID: 53
Emne: Dansk
Nr: 2
Dag: 1
Uge: 1
Elever: 09htx13b
Avatar billede denniswiencken Nybegynder
18. april 2010 - 09:52 #4
hov fik ikke set dit svar, prøver lige
Avatar billede denniswiencken Nybegynder
18. april 2010 - 10:17 #5
Så kommer jeg så til at miste den funktion at den vælger ud efter hvad klokkeslet og dag vi er i, og det var lidt det der var det vigtige i det,
18. april 2010 - 11:19 #6
Det er saa det jeg ikke forstod.  Saa maa du forklare lidt mere.

(1)  Er outputtet korrekt, for et ugenummer, en ugedag, et "Nr", og et lokale en liste med elever?

(2)  Hvad input giver du saa til din query?  Hvad er det der er kendt?  Siger du at ugedagens navn er kendt og derfra skal ugedagens nummer beregnes saa de rigtige data kan udtraekkes fra sql tabellerne og at et klokkeslet er kendt og ud fra klokkeslettet skal tidsrummet beregnes (for eksempel hvis klokkeslettet er 9.00 skal "8.55-9.40" vises) og skal "Nr" beregnes (hvis klokkeslettet er 9.00 skal Nr vaere 2?)

(3)  Hvis det er saaledes, hvordan fortaeller du saa php filen hvad lokalenummeret, ugenummeret, ugedagens navn, og klokkeslettet er?  Har du paa en anden php side en html form du fylder ud med en "submit" knap saa php siden modtager for eksempel en $_POST['ugedagensNavn'], en $_POST['klokkeslet'] o.s.v.

Fortael, saa skal jeg proeve igen.  Ogsaa hvis der er noget andet jeg der skal tages i betragtning.
Avatar billede zynzz Praktikant
18. april 2010 - 11:54 #7
Lav det således:

<?php
$link = mysql_connect ('localhost', 'root', '') or die(mysql_error());
mysql_select_db('HTX') or die('Could not select database');


function FindLektion($LektionStart, $LektionSlut){

    //TJEKKER OM LEKTIONERNE PASSER SAMMEN OG ER AF TYPEN ARRAY
    if(!is_array($LektionStart) && !is_array($LektionSlut) && count($LektionStart) == count($LektionSlut)){
    return 0;
    }

    //KIGGER ALLE LEKTIONER GENNEM
    foreach ($LektionStart as $Key => $Value) {

        if($Key != 0){

            $TidStart = explode(".", $Value);
            $TidSlut = explode(".", $LektionSlut[$Key]);

            if(mktime($TidStart[0], $TidStart[1], date("s"), date("n"), date("j"),date("Y")) < time() && mktime($TidSlut[0], $TidSlut[1], date("s"), date("n"), date("j"),date("Y")) > time()){
                return $Key;
            }
       
        }
    }

    return 0;
}


//INPUT
$Dage = array("","Mandag","Tirsdag","Onsdag","Torsdag","Fredag");
$LektionStart = array("","8.10","8.55","9.55","10.40","11.55","12.40","13.35","14.20");
$LektionSlut = array("","8.55","9.40","10.40","11.25","12.40","13.25","14.20","15.05");

$Dag = date('w');
$LokaleID = 53;
$uge = 15;
$Lektion = FindLektion($LektionStart,$LektionSlut);

$result = mysql_query("SELECT Elever.*, Lektion.* FROM Lektion JOIN Elever ON Lektion.Elever = Elever.Klasse WHERE Lektion.LokaleID = ".$LokaleID." AND Lektion.Dag = '".$Dag."' AND Lektion.Nr = '".$Lektion."'") or die(mysql_error());

if(mysql_num_rows($result) != 0){

    echo $Dage[$Dag]."Lektion: ".$Lektion." - ".$LektionStart[$Lektion]."-".$LektionSlut[$Lektion]."\n\n";

    while($row = mysql_fetch_array($result))
    {
            echo "<table border='1'>";
        echo "<tr><td><img src=" . $row[Billede] . " height='120' width='100'></td></tr><br>";
        echo "<tr><td> " . $row['Fornavn'] . " " . $row['Efternavn'] . " <br> " . $row['Stregkode'] . " " . $row['Klasse'] . " <br " . $row['Email'] . " </td></tr>";
        echo "</table>";
    }

}else{
    echo "Ingen lektioner i dette lokale på nuværende tidspunkt";
}

mysql_close($link);
?>
Avatar billede denniswiencken Nybegynder
18. april 2010 - 11:55 #8
Præcis sådan zynzz! post et svar :)
20. april 2010 - 12:17 #9
Hvad saa, er det lukketid?  Du angiver at have faaet problemet loest, saa du boer "rydde op" saa spoergsmaalet ikke bliver staaende som aabent.  Eftersom mit svar ikke syntes at vaere til nytte (fordi jeg ikke havde forstaaet dit behov) og du ikke fik oprettet det svar du bad om maa du nok selv oprettet et svar og acceptere det (og derved tage pointene tilbage.)  Skulle der saa senere komme bud om points har du den mulighed at oprette et spoergsmaal: "Points til xxxx".  See dette udsnit af "Frequent Asked Questions:"

"Hvordan giver jeg en anden bruger flere point?

Først skal vi have på plads at du ikke må udlove mere end 200 point for et spørgsmål, heller ikke fordelt over flere spørgsmål.

Metoden er forholdsvis simpel. Opret et nyt spørgsmål i samme kategori som det oprindelige spørgsmål og kald det "Point til [brugernavn]" hvor du erstatter [brugernavn] med navnet på den bruger du ønsker skal have point. Husk at skrive et link til spørgsmålet hvor du normalt skriver en længere beskrivelse af dit problem."
Avatar billede denniswiencken Nybegynder
20. april 2010 - 15:12 #10
Indtil svar kommer
Avatar billede zynzz Praktikant
21. april 2010 - 15:50 #11
Svar... !
Avatar billede denniswiencken Nybegynder
22. april 2010 - 14:12 #12
Har oprettet en trå point til zynzz
Avatar billede denniswiencken Nybegynder
22. april 2010 - 14:13 #13
tråd*
Avatar billede dkfire Nybegynder
22. april 2010 - 16:07 #14
Christian_Belgien: Hvad er lige ideen med at lukke et spørgsmål efter bare 2 dages venten ?
Kunne det tænkes at den som har besvaret spørgsmål er på ferie ??
Der er intet i reglerne som siger at spørgsmål skal lukkes efter 2 dage!

At "rydde op" i spørgsmål bør først ske med spørgsmål hvor intet er sket i flere uger.
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