select option uit database updaten maar mag niet dezelfde kiezen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wim Selles

Wim Selles

17/08/2008 13:51:00
Quote Anchor link
Hallo daar,

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<select>
<?php
for($tel=1;$tel<250;$tel++)
{

    echo "<option>". $tel. "</option>\n";    
}

?>

</select>


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)
PHP script in nieuw venster Selecteer het PHP script
1
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";
}    
}
}

?>


Ik hoop dat jullie kunnen helpen

Bedankt
 
PHP hulp

PHP hulp

25/11/2024 00:02:34
 
Douwe

Douwe

17/08/2008 13:54:00
Quote Anchor link
Uhm...
<select>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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";    
}
}

?>

</select>
 
Wim Selles

Wim Selles

17/08/2008 18:12:00
Quote Anchor link
Bedankt voor je reactie, maar ik snap hem niet helemaal. Met mijn basiskennis van Mysql en php zou ik zeggen dat ik nu nog niet eerst de boeknummers uit de database haal, vergelijk met de telling van 1 t/m 249 en dan de nummer die overeenkomen verwijder.


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
 
Douwe

Douwe

17/08/2008 18:14:00
Quote Anchor link
Alleen de $tel-nummers die niet in de database voorkomen in het veld 'id' worden weergegeven.
 
Boris Mattijssen

Boris Mattijssen

17/08/2008 20:16:00
Quote Anchor link
@Douwe: Dan gebruik je wel 250 query's, beetje overbodig.

kan ook zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>
 
Wim Selles

Wim Selles

17/08/2008 20:46:00
Quote Anchor link
@Douwe:

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)
PHP script in nieuw venster Selecteer het PHP script
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
<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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.