select option uit database updaten maar mag niet dezelfde kiezen
Ik zit met het volgende. Voor mijn werk ben ik een soort online bibliotheek/boekelijst aan het maken. De data van deze bibliotheek staat in Mysql.
Nu heb ik 4 scripts gemaakt, te weten:
- opvragen boekenlijst
- invoeren van een boek
- updaten van de boeklijst (kies een boek en pas deze aan)
- verwijderen van een boek uit de boeklijst
De boeken krijgen in de database een nummer mee welke gelijk is aan het nummer wat de administratie op de kaft zet. Dit nummer is ook meteen de index.
Nu wil ik graag het volgende. Bij het invoeren van een nieuws boek moet de administratie een nummer voor het boek invoeren welke nog niet in gebruik is. De bibliotheek bevat nu iets van 75 boeken en ik heb nu als max 250 nummers ingesteld.
Aan de hand van het volgende stukje worden de nummers weergegeven waaruit gekozen kan worden (d.m.v. een selectionbox)
Code (php)
Nu wil ik graag dat bij het invoeren van een boek de selectionbox alleen de nummers laat zien welke beschikbaar zijn. Dit houdt in dat de administratie geen nummer kan kiezen welke al gekoppeld is aan een boek. Dit wil ik doen omdat ik de index niet op auto-increment heb gezet in de tabel.
Daarnaast wil ik graag bij het updaten van de boekenlijst ook alleen de beschikbare nummers laten zien. Ik ben hier al mee aan het stoeien geweest, maar krijg het niet voor elkaar.
Ik had zoiets al wel gemaakt voor de selectionbox voor het kiezen van de plaatjes van de boeken, alleen ik kon dit niet toepassen op de nummering.
De naam van de plaatjes haald hij d.m.v. de volgende code op.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
//dit is de waarde uit de db
$option=$row[6];
if($dir = opendir('images/foto/'))
{
while(false !== ($file = readdir($dir)))
{
$files[] = trim($file);
}
sort($files);
foreach($files as $file)
{
//als de waarde gelijk is aan de waarde uit de db, toon deze dan niet
if ($file != "." && $file != ".." && $file !=$option)
{
echo "<OPTION style=\"font-family:Verdana, Arial, Helvetica;font-size:11px\" value=\"$file\">$file </OPTION>\n";
}
}
}
?>
//dit is de waarde uit de db
$option=$row[6];
if($dir = opendir('images/foto/'))
{
while(false !== ($file = readdir($dir)))
{
$files[] = trim($file);
}
sort($files);
foreach($files as $file)
{
//als de waarde gelijk is aan de waarde uit de db, toon deze dan niet
if ($file != "." && $file != ".." && $file !=$option)
{
echo "<OPTION style=\"font-family:Verdana, Arial, Helvetica;font-size:11px\" value=\"$file\">$file </OPTION>\n";
}
}
}
?>
Ik hoop dat jullie kunnen helpen
Bedankt
<select>
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
for($tel=1;$tel<250;$tel++)
{
if(!mysql_num_rows(mysql_query("SELECT id FROM boeken WHERE id = ".$tel)))
{
echo "<option>". $tel. "</option>\n";
}
}
?>
for($tel=1;$tel<250;$tel++)
{
if(!mysql_num_rows(mysql_query("SELECT id FROM boeken WHERE id = ".$tel)))
{
echo "<option>". $tel. "</option>\n";
}
}
?>
</select>
Indien ik het mis heb hoor ik het graag. Zou je het dan ook met iets meer uitleg kunnen geven?
In ieder geval hartelijk dank voor je moeite
Alleen de $tel-nummers die niet in de database voorkomen in het veld 'id' worden weergegeven.
kan ook zo:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<select>
<?php
$query = mysql_query("SELECT id FROM boeken");
while($row = mysql_fetch_assoc($query))
$aNummers[] = $row['id'];
for($tel=1;$tel<250;$tel++)
{
if(!in_array($tel, $aNummers)
echo "<option>". $tel. "</option>\n";
}
?>
</select>
<?php
$query = mysql_query("SELECT id FROM boeken");
while($row = mysql_fetch_assoc($query))
$aNummers[] = $row['id'];
for($tel=1;$tel<250;$tel++)
{
if(!in_array($tel, $aNummers)
echo "<option>". $tel. "</option>\n";
}
?>
</select>
Thanxs voor je code, alleen ik kreeg hem niet werkend, maar met de extra toevoeging van Door wel. Hartelijk dank voor de snelle reactie
@Door:
Hij ziet er nu zo uit en hij werkt!!!!. Toppie en bedankt!!!!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<select>
<?php
//DE INLOGGEGEVENS VOOR DE DATABASE KOPPELEN
include ("db_adreslijst.php");
//MAAK VERBINDING MET DE DATABASE
$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
//SELECTEER DE GEGEVENS UIT DE DATABASE VOOR DE ID WAAR OP EDIT IS GEKLIKT
$query="SELECT Nr FROM bibliotheek";
//VOER EEN QUERY UIT OP DE DATABASE
$res=mysql_db_query("$db","$query",$mysql_id);
//GENEREER EEN FOUT INDIEN DE QUERY NIET UITGEVOERD KAN WORDEN
$fout=mysql_errno($mysql_id);
if ($fout != 0)
{
$fout=mysql_error($mysql_id);
echo "<font color=\"#FF2306\">" . $fout . "</font>\n";
mysql_close($mysql_id);
echo "</body>\n</html>\n";
exit;
}//SLUIT if ($fout != 0)
while($row = mysql_fetch_assoc($res))
$aNummers[] = $row['Nr'];
for($tel=1;$tel<250;$tel++)
{
if(!in_array($tel, $aNummers))
{
echo "<option>". $tel. "</option>\n";
}
}
?>
</select>
<?php
//DE INLOGGEGEVENS VOOR DE DATABASE KOPPELEN
include ("db_adreslijst.php");
//MAAK VERBINDING MET DE DATABASE
$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
//SELECTEER DE GEGEVENS UIT DE DATABASE VOOR DE ID WAAR OP EDIT IS GEKLIKT
$query="SELECT Nr FROM bibliotheek";
//VOER EEN QUERY UIT OP DE DATABASE
$res=mysql_db_query("$db","$query",$mysql_id);
//GENEREER EEN FOUT INDIEN DE QUERY NIET UITGEVOERD KAN WORDEN
$fout=mysql_errno($mysql_id);
if ($fout != 0)
{
$fout=mysql_error($mysql_id);
echo "<font color=\"#FF2306\">" . $fout . "</font>\n";
mysql_close($mysql_id);
echo "</body>\n</html>\n";
exit;
}//SLUIT if ($fout != 0)
while($row = mysql_fetch_assoc($res))
$aNummers[] = $row['Nr'];
for($tel=1;$tel<250;$tel++)
{
if(!in_array($tel, $aNummers))
{
echo "<option>". $tel. "</option>\n";
}
}
?>
</select>
Gewijzigd op 01/01/1970 01:00:00 door Wim Selles