Avatar billede gf Nybegynder
04. marts 2005 - 18:06 Der er 10 kommentarer og
1 løsning

udskriv data fra en tabel hvis de ikke findes i selectbox

Hvordan kan jeg får udskrevet alle navne i en databse, undtagen dem der ligger i 3 dynamiske selectboxe?

<?php
$sql = "SELECT navn FROM elevdata ";
$qh = mysql_query( $sql ) or die( mysql_error() );
while ( $row = mysql_fetch_array( $qh ) ) {
echo $row[navn];
}
?>

<select name="dynamisk1[]" size="5" multiple style="width:125px">
</select>

<select name="dynamisk2[]" size="5" multiple style="width:125px">
</select>

<select name="dynamisk3[]" size="5" multiple style="width:125px">
</select>

mvh gf
Avatar billede detox Nybegynder
04. marts 2005 - 19:10 #1
Her er et eksempel med en selectbox:

$where = isset($_POST['navn']) ? "WHERE navn NOT IN ('" .
implode("','", $_POST['navn']) . "')" : '';
$sql = "SELECT navn FROM elevdata $where";
$qh = mysql_query( $sql ) or die( mysql_error() );
$opt = '';
while ( $row = mysql_fetch_array( $qh ) ) {
    $opt .= "<option value='$row[navn]'>$row[navn]</option>";
}
?>
<form action='<?php echo $_SERVER['PHP_SELF']?>' method='post'>
<select name="navn[]" size="5" multiple style="width:125px">
<?php echo $opt?>
</select>
<input type="submit" />
</form>
Avatar billede gf Nybegynder
04. marts 2005 - 20:54 #2
Hej detox

Det ser lovende ud, har du mulighed for at lave det med 3 selectboxe?
det ser lige lidt for kompliceret ud for mig :|
Jeg giver gerne flere points

Mvh gf
Avatar billede detox Nybegynder
04. marts 2005 - 21:31 #3
Jeg er ikke sikker på hvad du vil med 3 selects, da du jo kan vælge flere navne i den ene (multiple)?
Avatar billede gf Nybegynder
04. marts 2005 - 21:45 #4
Hej igen

der er tre multimpl selects.

Jeg har en select som er min hoved liste fra denne overfører jeg navne over i de tre multiple selects (med en java script funktion). navnene i disse ligger i hver deres tabel i databasen. jeg vil derfor gerne have at de tre selectboxe "gennemløbes" således, at "hovedlisten ikke indeholder nogle af navnene i de 3 selects.

Jeg kunne selvfølge gemme "resten" af hovedlisten i en tabel, men det vil komme til at fylde rigtig meget i databasen.

Håber du forstår hvad jeg mener.

mvh gf
Avatar billede detox Nybegynder
04. marts 2005 - 22:52 #5
Du kan sagtens lave flere selectbox, bare giv dem alle: name="navn[]". Eks.:

$where = isset($_POST['navn']) ? "WHERE navn NOT IN ('" .
implode("','", $_POST['navn']) . "')" : '';
$sql = "SELECT navn FROM elevdata $where";
$qh = mysql_query( $sql ) or die( mysql_error());
$opt = '';
while ( $row = mysql_fetch_array( $qh ) ) {
    $opt .= "<option value='$row[navn]'>$row[navn]</option>";
}
?>
<form action='<?php echo $_SERVER['PHP_SELF']?>' method='post'>
<select name="navn[]" size="5" multiple style="width:125px">
<?php echo $opt?>
</select>
<select name="navn[]" size="5" multiple style="width:125px">
<?php echo $opt?>
</select>
<select name="navn[]" size="5" multiple style="width:125px">
<?php echo $opt?>
</select>
<input type="submit" />
</form>
Avatar billede gf Nybegynder
05. marts 2005 - 09:12 #6
Hej igen

Det duer ikke med samme navn idet javescript funktionen skal bruge forskellige navne for at den ved hvor navnene skal "smides" hen.

Mvh gf
Avatar billede detox Nybegynder
05. marts 2005 - 18:10 #7
Ok, så prøv sådan her:

$navn1 = isset($_POST['navn1']) ? $_POST['navn1'] : array();
$navn2 = isset($_POST['navn2']) ? $_POST['navn2'] : array();
$navn3 = isset($_POST['navn3']) ? $_POST['navn3'] : array();
$navn = array_merge($navn1, $navn2, $navn3);
$where = (count($navn)>0) ? "WHERE navn NOT IN ('" .
    implode("','", $navn) . "')" : '';
$sql = "SELECT navn FROM elevdata $where";
$qh = mysql_query( $sql ) or die( mysql_error());
$opt = '';
while ( $row = mysql_fetch_array( $qh ) ) {
    $opt .= "<option value='$row[navn]'>$row[navn]</option>";
}
?>
<form action='<?php echo $_SERVER['PHP_SELF']?>' method='post'>
<select name="navn1[]" size="5" multiple style="width:125px">
<?php echo $opt?>
</select>
<select name="navn2[]" size="5" multiple style="width:125px">
<?php echo $opt?>
</select>
<select name="navn3[]" size="5" multiple style="width:125px">
<?php echo $opt?>
</select>
<input type="submit" name="submit" />
</form>
Avatar billede gf Nybegynder
05. marts 2005 - 22:13 #8
Hej detox

det virker ikke helt, jeg har prøvet at teste om navnene bliver hentet ud af selectboxene, og det gør de ikke.

<?php
$syge = isset($_POST['sygeelever']) ? $_POST['sygeelever'] : array();
$hjemme = isset($_POST['eleverhjemme']) ? $_POST['eleverhjemme'] : array();
$koekken = isset($_POST['eleverkoekken']) ? $_POST['eleverkoekken'] : array();
$navn = array_merge($syge, $hjemme, $koekken);
foreach($navn as $test) {
echo $test;
}
?>

mvh gf
Avatar billede gf Nybegynder
05. marts 2005 - 23:36 #9
Hej detox

så er jeg så småt ved at have styr på det, jeg har grebet det an på en lidt anden måde nu. jeg henter navnene fra de tre selectbox'er ind i arrays direkte fra data basen. Herunder dog kun vist med navn1. Så det ser ud som om det er ved at lykkedes. Men jeg får en fejl i in_array linien : fatal error noget med at [] ikke kan bruges.

<select name="select" size="19" multiple id="elever" style="width:125px">
<?php
$sql = "SELECT navn FROM sygeelever WHERE dato = '$datorediger'";
$qh = mysql_query( $sql ) or die( mysql_error() );
while ( $row = mysql_fetch_assoc( $qh ) ) {
$navn1[] = $row[navn];
}

$sql = "SELECT navn FROM elevdata";
$qh = mysql_query( $sql ) or die( mysql_error() );
while ( $row = mysql_fetch_assoc( $qh ) ) {
                   
                   
if (in_array($row[navn], $navn1[])) {
    // gør ingen ting
} else {
?>
    <option value="<?=$row[navn]?>"><?=$row[navn]?></option>
<? }
} ?>
</select>

mvh gf
Avatar billede gf Nybegynder
06. marts 2005 - 00:04 #10
Hej detox

Glem ALT !!! om de to tidligere indlæg. jeg har vist siddet her ved computeren for længe.

Smid et svar og pointene er dine.

1000 tak for hjælpen ( og din overbærenhed) :)

mvh gf
Avatar billede detox Nybegynder
06. marts 2005 - 18:27 #11
Ok så lykkedes det, velbekommen.
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