Avatar billede presti Nybegynder
24. marts 2004 - 21:15 Der er 39 kommentarer og
1 løsning

Udskrift fra en bestemt tabel

Hvordan kan jeg vise hvilken sportsgren, den VALGTE elev er tilmeldt???

1.
<html>
<body>
<form action="?side=vis_tilmelding_elev_2" method="post">
Vælg elev:
<br>
<select name="elev" size="1">

<?php

$con = mysql_connect("localhost", "root", "");
mysql_select_db("idraetsdag", $con);

$result = mysql_query("select * from
                        elever");

  while($row = mysql_fetch_array($result)) {
  echo "<option value=\"$row[Elev_ID]\">$row[Efternavn], $row[Fornavn], $row[Klasse]</option>";
  }

?>
</select>
<p>
<p>
<input type="submit" value="Se tilmelding">
</form>

</body>

</html>

2.

<?php
mysql_connect("localhost", "root", "");
$DBnavn = mysql_select_db("idraetsdag");

$result = mysql_query("SELECT Elever.Fornavn, Elever.Efternavn, Elever.Klasse, Sportsgrene.Sportsgren
                        FROM Sportsgrene, Elever, Tilmeldinger_elever
                            WHERE Elever.Elev_ID=Tilmeldinger_elever.Elev AND Sportsgrene.Sportsgren_ID=Tilmeldinger_elever.Sportsgren");


while ($row = mysql_fetch_array($result))
{
    echo "<tr>";
    echo "<td>$row[Fornavn]</td>";
    echo "<td>$row[Efternavn]</td>";
    echo "<td>$row[Klasse]</td>";
    echo "<td>$row[Sportsgren]</td>";
    echo "</tr>";

}
echo "</table>";

?>

Den nederste viser jo ALLE elevernes tilmeldinger... men hvordan laver jeg den om, så den KUN viser den valgte elevs???

mvh . presti...
Avatar billede htm Nybegynder
24. marts 2004 - 21:24 #1
Din SQL laver du om til:

$result = mysql_query("SELECT Elever.Fornavn, Elever.Efternavn, Elever.Klasse, Sportsgrene.Sportsgren
                        FROM Sportsgrene, Elever, Tilmeldinger_elever
                            WHERE Elever.Elev_ID=Tilmeldinger_elever.Elev AND Sportsgrene.Sportsgren_ID=Tilmeldinger_elever.Sportsgren AND elever.Elev_ID=".$_POST['elev'];
Avatar billede presti Nybegynder
24. marts 2004 - 21:29 #2
Hmm... den viser ingenting?!?

Min kode:

<?php
mysql_connect("localhost", "root", "");
$DBnavn = mysql_select_db("idraetsdag");

$result = mysql_query("SELECT Elever.Fornavn, Elever.Efternavn, Elever.Klasse, Sportsgrene.Sportsgren
                        FROM Sportsgrene, Elever, Tilmeldinger_elever
                            WHERE Elever.Elev_ID=Tilmeldinger_elever.Elev AND Sportsgrene.Sportsgren_ID=Tilmeldinger_elever.Sportsgren AND Elever.Elev_ID=".$_POST['Elev'];

while ($row = mysql_fetch_array($result))
{
    echo "<tr>";
    echo "<td>$row[Fornavn]</td>";
    echo "<td>$row[Efternavn]</td>";
    echo "<td>$row[Klasse]</td>";
    echo "<td>$row[Sportsgren]</td>";
    echo "</tr>";

}
echo "</table>";

?>
Avatar billede htm Nybegynder
24. marts 2004 - 21:35 #3
Ups der mangler også en ) og så har jeg lige tilføjet or die

$result = mysql_query("SELECT Elever.Fornavn, Elever.Efternavn, Elever.Klasse, Sportsgrene.Sportsgren FROM Sportsgrene, Elever, Tilmeldinger_elever WHERE Elever.Elev_ID=Tilmeldinger_elever.Elev AND Sportsgrene.Sportsgren_ID=Tilmeldinger_elever.Sportsgren AND Elever.Elev_ID=".$_POST['Elev']) or die(mysql_error());
Avatar billede presti Nybegynder
24. marts 2004 - 21:47 #4
<?php
mysql_connect("localhost", "root", "");
$DBnavn = mysql_select_db("idraetsdag");

$result = mysql_query("SELECT Elever.Fornavn, Elever.Efternavn, Elever.Klasse, Sportsgrene.Sportsgren
                        FROM Sportsgrene, Elever, Tilmeldinger_elever
                            WHERE Elever.Elev_ID=Tilmeldinger_elever.Elev AND Sportsgrene.Sportsgren_ID=Tilmeldinger_elever.Sportsgren AND Elever.Elev_ID=".$_POST['Elev']) or die(mysql_error());

while ($row = mysql_fetch_array($result))
{
    echo "<tr>";
    echo "<td>$row[Fornavn]</td>";
    echo "<td>$row[Efternavn]</td>";
    echo "<td>$row[Klasse]</td>";
    echo "<td>$row[Sportsgren]</td>";
    echo "</tr>";

}
echo "</table>";

?>


HMM... nu sir den:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 ????
Avatar billede htm Nybegynder
24. marts 2004 - 21:52 #5
Du submitter til siden ?

Prøv dette:

if ( isset( $_POST['elev']) && !empty( $_POST['elev'] ) ) $elevid=$_POST['elev'];
else $elevid=1;

$result = mysql_query("SELECT Elever.Fornavn, Elever.Efternavn, Elever.Klasse, Sportsgrene.Sportsgren
                        FROM Sportsgrene, Elever, Tilmeldinger_elever
                            WHERE Elever.Elev_ID=Tilmeldinger_elever.Elev AND Sportsgrene.Sportsgren_ID=Tilmeldinger_elever.Sportsgren AND Elever.Elev_ID=".$elevid) or die(mysql_error());
Avatar billede presti Nybegynder
24. marts 2004 - 21:53 #6
YES!!! der var den!
Avatar billede presti Nybegynder
24. marts 2004 - 21:54 #7
kan man lave en query, så man kan tjekke om et navn findes i en tabel og derpå udskrive f.eks. "Du er ikke tilmeldt" . Findes der en sådan funktion??? Er nybegynder :)
Avatar billede htm Nybegynder
24. marts 2004 - 21:57 #8
$sql = "SELECT * FROM elever WHERE Fornavn='bestemtenavn'";
$result = mysql_query($sql);
if ( mysql_num_rows($result) > 1 )
{
  echo "Du er ikke tilmeldt";
}
else
{
  echo "du er tilmeldt";
}
Avatar billede presti Nybegynder
24. marts 2004 - 22:08 #9
hehe.. spørg nok dumt. Men kunne man vise en liste over ALLE dem som ikke har tilmeldt sig??? Uden at man behøver at vælge dem ??

tak for hjælpen forresten :)
Avatar billede htm Nybegynder
24. marts 2004 - 22:09 #10
æææh jo det kan man godt . men hvad afgører om de ikke er tilmeldt ? Forklar lidt om tabellerne så er det nemmere... :-)
Avatar billede presti Nybegynder
24. marts 2004 - 22:15 #11
Altså... jeg har en f.eks. en tabel, som indeholder sportsgren, elever og tilmeldinger. I tilmelding's tabellen har jeg: Tilmelding_elever_ID, Elev og Sportsgren. Jeg skal have lavet det sådan, så admin kan gå ind og se en liste over de elever, som endnu ikke har tilmeldt sig noget som helst...
Avatar billede htm Nybegynder
24. marts 2004 - 22:22 #12
Hvis du bruger MySQL 4.1 eller der over kan du bruge denne:

SELECT * FROM elever WHERE elev_ID NOT IN( SELECT  DISTINCT Tilmelding_elever_id FROM tilmelding)

Det er muligt det kan laves uden subselects men det kan jeg ikke lige overskue lige nu. Ulempen med subselects er at det krøæver minimum MySQL version 4.1
Avatar billede presti Nybegynder
24. marts 2004 - 22:25 #13
Er det version 1.4 du mener??
Avatar billede presti Nybegynder
24. marts 2004 - 22:25 #14
jeg tror nok jeg har 4.0.18
Avatar billede htm Nybegynder
24. marts 2004 - 22:29 #15
nej mener 4.1 :-)

Når du ikke har subselects til rådighed tror jeg du bliver nødt til at lave to SQL-sætninger en der hiver alle elever ud:
SELECT * FROM elever
og en der hiver alle de elever ud der optræder i tilmelding

SELECT DISTINCT elev_ID FROM tilmelding

og så sammenligne i php.
Avatar billede presti Nybegynder
24. marts 2004 - 22:30 #16
hmm... kan du gi et eksempel... pleeeaassee :D
Avatar billede htm Nybegynder
25. marts 2004 - 17:15 #17
$sql = "SELECT DISTINCT elev_ID FROM tilmelding";
$result = mysql_query($sql) or die(mysql_error());
$str = "";
while ( $row = mysql_fetch_array($result) )
{
    $str .= $row['elev_ID'] . ",";
}
$str =  substr($str,0,-1);
$sql = "SELECT * FROM elever WHERE elev_ID NOT IN(".$str.")";

$result = mysql_query($sql) or die(mysql_error());
while ( $row = mysql_fetch_array($result) )
{
    echo $row['elev_ID'] . "<br>"; //elever der ikke har tilmeldt sig noget...
}
Avatar billede presti Nybegynder
25. marts 2004 - 17:20 #18
hmm..... hva betyder $str = ""; bare en tom variabel eller hvad?
Avatar billede htm Nybegynder
25. marts 2004 - 17:28 #19
Sætter variablen til ingenting - Hvis error_reporting er sat til E_ALL vil det skabe en notice hvis den ikke er der. Så vil den nemlig brokke sig over at variablen $str ikke eksisterer første gang vi går ind i while løkken.

.= betyder nemlig tilføj til eksisterende variabel.
Avatar billede presti Nybegynder
25. marts 2004 - 17:28 #20
hehe... nu ser min fil således ud:

<?php

$con = mysql_connect("localhost", "root", "");
mysql_select_db("idraetsdag", $con);

$sql = "SELECT DISTINCT Elev_ID FROM Tilmeldinger_elever";
$result = mysql_query($sql) or die(mysql_error());
$str = "";
while ( $row = mysql_fetch_array($result) )
{
    $str .= $row['Elev_ID'] . ",";
}
$str =  substr($str,0,-1);
$sql = "SELECT * FROM Elever WHERE Elev_ID NOT IN(".$str.")";

$result = mysql_query($sql) or die(mysql_error());
while ( $row = mysql_fetch_array($result) )
{
    echo $row['Elev_ID'] . "<br>"; //elever der ikke har tilmeldt sig noget...
}


?>

aint working... den skriver bare:

1
2
5
6
7
8
9
10

Der er godt nok også 10 elever meeen... :)
kan du hilfe?
Avatar billede htm Nybegynder
25. marts 2004 - 17:31 #21
Er det ikke de numre der ikke har tilmeldt sig noget ? altså deres ID?

Ligenu er den bare sat til at udskrive deres ID. Lav det mere informativt med

echo $row['Fornavn'] . " " . $row['Efternavn'] . "<br>"; //elever der ikke har tilmeldt sig noget...

Så skriver den Fornavn Efternavn på hver linie.
Avatar billede htm Nybegynder
25. marts 2004 - 17:32 #22
I følge det udtræk vil kun elever med ID 3,4 have tilmeldt sig noget.
Avatar billede presti Nybegynder
25. marts 2004 - 17:34 #23
Jo... de Elev_ID nummer som IK findes i Tilmeldinger_elever, skal udskrives... det må da være em som ikke er tilmeldt? ik sandt.... eller er jeg helt galt på den :D
Avatar billede htm Nybegynder
25. marts 2004 - 17:35 #24
Det skulle også gerne være det den gør ?
Avatar billede presti Nybegynder
25. marts 2004 - 17:40 #25
haha.. jeg er helt væk... nu har jeg ændret:

echo $row['Elev_ID'] . "<br>"; //elever der ikke har tilmeldt sig noget...

til

echo $row['Fornavn'] . " " . $row['Efternavn'] . "<br>"; //elever der ikke har...

Nu skriver den samtlige navne i det array?!?!
Avatar billede htm Nybegynder
25. marts 2004 - 17:45 #26
Og de mavme der bæover udskrevet er det ikke dem der IKKE optræder i Tilmeldinger_elever?

Hvad er det du vil og hvad er det du ikke forstår?
Avatar billede presti Nybegynder
25. marts 2004 - 17:50 #27
Tror du har ret.... men nu sir den pludselig:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

min fil:

<?php

$con = mysql_connect("localhost", "root", "");
mysql_select_db("idraetsdag", $con);

$sql = "SELECT DISTINCT Elev_ID FROM Tilmeldinger_elever";
$result = mysql_query($sql) or die(mysql_error());
$str = "";
while ( $row = mysql_fetch_array($result) )
{
    $str .= $row['Elev_ID'] . ",";
}
$str =  substr($str,0,-1);
$sql = "SELECT * FROM Elever WHERE Elev_ID NOT IN(".$str.")";

$result = mysql_query($sql) or die(mysql_error());
while ( $row = mysql_fetch_array($result) )
{
    echo $row['Elev_ID'] . "<br>"; //elever der ikke har tilmeldt sig noget...
}


?>
Avatar billede presti Nybegynder
25. marts 2004 - 17:53 #28
den ku li før!?!?! hva der sket?
Avatar billede htm Nybegynder
25. marts 2004 - 17:54 #29
Og hvad har du ændret ?

Prøv og skriv hver enkelt SQL ud lige før den bliver kørt. så kan du se hvad der går galt.

echo $sql;

Hvis du ikke får noget ud fra din første forespørgsel, dvs. du ikke har nogle tilmeldinger i elever_tilmelding vil den melde fejl.
Avatar billede presti Nybegynder
25. marts 2004 - 18:00 #30
Nu ser min fil således ud:

<?php
$con = mysql_connect("localhost", "root", "");
mysql_select_db("idraetsdag", $con);
$sql = "SELECT DISTINCT Elev_ID FROM Tilmeldinger_elever";
$result = mysql_query($sql) or die(mysql_error());
$str = "";
while ( $row = mysql_fetch_array($result) )
{
    $str .= $row['Elev_ID'] . ",";
}
$str =  substr($str,0,-1);
$sql = "SELECT * FROM Elever WHERE Elev_ID NOT IN(".$str.")";
$result = mysql_query($sql) or die(mysql_error());
while ( $row = mysql_fetch_array($result) )
{

    echo $row['Fornavn'] . " " . $row['Efternavn'] . "<br>";

}
?>


Og den bliver ved med at udskrive:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
Avatar billede htm Nybegynder
25. marts 2004 - 18:02 #31
Se mit indlæg 25/03-2004 17:54:51 ...  :-)
Avatar billede presti Nybegynder
25. marts 2004 - 18:03 #32
Yuhuuu... tror det virker nu...
Der var nogle tomme felter i min database... ved ik helt hvordan de er kommet... derfor den ikke gad... !!!
Avatar billede presti Nybegynder
25. marts 2004 - 18:08 #33
Jeg har bare li nogle spørgsmål:

1. Hvad betyder  -  $str =  substr($str,0,-1);

2. DISTINCT

3. $str = "";


Men MANGE GANGE tak for hjælpen!!!
Avatar billede htm Nybegynder
25. marts 2004 - 18:15 #34
1. sæt $str lig med $str undtagen det sidste tegn. Betyder startposition 0 og -1 betyder at den skal tage en bagfra. Læs mere her http://dk.php.net/substr

2. DISTINCT betyder "unik". Det vil sige hvis der er to ens rækker vil den kun hive de ud en gang. fra mysqls dokumentation:

"The ALL, DISTINCT, and DISTINCTROW options specify whether duplicate rows should be returned. If none of these options are given, the default is ALL (all matching rows are returned). DISTINCT and DISTINCTROW are synonyms and specify that duplicate rows in the result set should be removed."

3. se min kommentar 25/03-2004 17:28:21
Avatar billede htm Nybegynder
25. marts 2004 - 18:24 #35
Hvis du ikke har mere skal du lige huske at lukke spørgsmålet. Husk også lige og kig på dine gamle spørgsmål om du kan lukke dem :-)
Avatar billede htm Nybegynder
02. april 2004 - 21:48 #36
Tak for point.... :o) Har du planer om at lukke spørgsmålet ?
Avatar billede presti Nybegynder
03. april 2004 - 14:31 #37
hehehe.... jeps :P
Avatar billede htm Nybegynder
03. april 2004 - 15:05 #38
Avatar billede presti Nybegynder
03. april 2004 - 15:12 #39
ok
Avatar billede htm Nybegynder
03. april 2004 - 15:23 #40
Kanon godt at se :-)

Så kan du lige tage forbi dine gamle spørgsmål også og lukke dem, så er jeg sikker på dem der har brugt tid på dine spørgsmål bliver glade...
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