Maak tabel
Door Jan Koehoorn, 9 jaar geleden, 5.605x bekeken
Het komt vaak voor dat ik voor een klant een beheermodule moet maken. In zo'n beheermodule is er eigenlijk altijd vraag naar het beheren van de verschillende tabellen in de MySql database.
Omdat ik klanten liever geen toegang geef tot PHP MyAdmin heb ik een functie gemaakt die automatisch HTML tabellen genereert van willekeurige MySql tabellen.
In de HTML tabel kan de klant:
1) sorteren op kolom
2) records verwijderen
3) records bewerken
Punt 2 en 3 zijn in dit voorbeeld uitgeschakeld.
Voorbeeld: http://www.koehoornit.nl/artiance/createtable.php
Gesponsorde koppelingen
PHP script bestanden
62 reacties op 'Maak tabel'
Gesponsorde koppelingen
@Rafael: is inderdaad netter. De manier die ik gebruik heeft te maken met sneller code schrijven. Enkele quotes als de string niet geinterpreteerd hoeft te worden, en dubbele als dat wel het geval is.
Ik vind het ook lastig lezen als je enkele en dubbele quotes naast elkaar hebt staan, dus sta ik mezelf die kleine zonde toe van vars binnen de quotes laten.
Voor de echte "beginners": luister naar Rafael en leer jezelf aan om het op zijn manier te doen ;-)
Ik vind het ook lastig lezen als je enkele en dubbele quotes naast elkaar hebt staan, dus sta ik mezelf die kleine zonde toe van vars binnen de quotes laten.
Voor de echte "beginners": luister naar Rafael en leer jezelf aan om het op zijn manier te doen ;-)
@Jan: Zoals ik jou ken, altijd weer strak en netjes. Ik heb alleen wel een kleine aanmerking/tip. Als je nu sorteert dan doet ie dat netjes. Maar als je daarna bijvoorbeeld iets edit (wat uiteraard geblocked is) dan is die de sorteergegevens kwijt. Ik raad je aan om die ook mee te geven bij andere handelingen. Stel ik wil alles op datum sorteren en dan alle oude datums gaan editen. Dan moet ik steeds een extra handeling doen en dat hoeft niet als je de sorteer vasthoudt.
@ Bram:
ik denk het wel. Er zou dan een link "toevoegen" boven aan de pagina moeten komen, waardoor je op een pagina terecht komt die automatisch een formulier genereert op basis van een MySql tabel.
Ik weet dat dat soort scripts bestaan, maar of ze hier op PHPhulp ook aanwezig zijn weet ik niet uit mijn hoofd. Zoek maar even in de sectie "Scripts". Mocht je niets vinden, dan gaan we hier kijken of we het script kunnen uitbreiden.
Ik zat gisteren nog aan een andere uitbreiding te denken: paginering. Zodra je tabel tientallen records lang wordt, is dat iets dat er eigenlijk ook hoort in te zitten. Dat soort scripts heb ik hier ook al langs zien komen, dus als iemand iets weet ...
ik denk het wel. Er zou dan een link "toevoegen" boven aan de pagina moeten komen, waardoor je op een pagina terecht komt die automatisch een formulier genereert op basis van een MySql tabel.
Ik weet dat dat soort scripts bestaan, maar of ze hier op PHPhulp ook aanwezig zijn weet ik niet uit mijn hoofd. Zoek maar even in de sectie "Scripts". Mocht je niets vinden, dan gaan we hier kijken of we het script kunnen uitbreiden.
Ik zat gisteren nog aan een andere uitbreiding te denken: paginering. Zodra je tabel tientallen records lang wordt, is dat iets dat er eigenlijk ook hoort in te zitten. Dat soort scripts heb ik hier ook al langs zien komen, dus als iemand iets weet ...
Hi jan,
Met dank aan jullie aller hulp. Mijn scriptjes om data toe te voegen aan de database en om één naam op te zoeken werken. Nu zie ik jou script de mogelijkheid om een row in de tabel te uodaten, dan wel te deleten.
Hoe moet ik jouw script nu lezen, betreffende je opmerking: 'punt 2 en drie zijn uitgeschakeld in dit script'?
Hoe kan ik die twee mogelijkheden benutten voor mijzelf? (en dan uiteraard voor anderen)
Gr, tuur
Met dank aan jullie aller hulp. Mijn scriptjes om data toe te voegen aan de database en om één naam op te zoeken werken. Nu zie ik jou script de mogelijkheid om een row in de tabel te uodaten, dan wel te deleten.
Hoe moet ik jouw script nu lezen, betreffende je opmerking: 'punt 2 en drie zijn uitgeschakeld in dit script'?
Hoe kan ik die twee mogelijkheden benutten voor mijzelf? (en dan uiteraard voor anderen)
Gr, tuur
@ Tuur:
over het editen en het deleten:
een delete is gemakkelijk. In de "delete" link die naast elk record staat, zit de id van de record verwerkt. Als daar op geklikt wordt kun je met $_GET['id'] de id opvragen. Daarna maak je een query zoals:
Het enige waar je in zo'n geval wel op moet letten, is dat je een vraag inbouwt voor de user, dus dat ze een soort alert krijgen.
over het editen en het deleten:
een delete is gemakkelijk. In de "delete" link die naast elk record staat, zit de id van de record verwerkt. Als daar op geklikt wordt kun je met $_GET['id'] de id opvragen. Daarna maak je een query zoals:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
// record deleten
$id = $_GET['id'];
$sql = "DELETE FROM tabel WHERE id = '$id' LIMIT 1";
mysql_query ($sql) or die (mysql_error ());
?>
// record deleten
$id = $_GET['id'];
$sql = "DELETE FROM tabel WHERE id = '$id' LIMIT 1";
mysql_query ($sql) or die (mysql_error ());
?>
Het enige waar je in zo'n geval wel op moet letten, is dat je een vraag inbouwt voor de user, dus dat ze een soort alert krijgen.
Hi jan,
Je lijkt me wel een doorgewinterde php'er. De jaloezie komt een beetje bij me op als ik zie hoe makkelijk je eea in elkaar draait. Ik heb een hoop dingen geleerd van mijn laatste formulier en het scriptje wat je neerzet is ook duidelijk. Ik ga proberen je 'delete scriptje' ook in een formuliertje te krijgen.
Ik ga proberen een invulveld te creëren zodat er gezocht kan worden op een achternaam. Script moet met die naam komen en vervolgens ga ik proberen of ik die naam (met bijbehorende andere velden) kan gedeleten of updaten. Je hoort vanme. Tuur
Je lijkt me wel een doorgewinterde php'er. De jaloezie komt een beetje bij me op als ik zie hoe makkelijk je eea in elkaar draait. Ik heb een hoop dingen geleerd van mijn laatste formulier en het scriptje wat je neerzet is ook duidelijk. Ik ga proberen je 'delete scriptje' ook in een formuliertje te krijgen.
Ik ga proberen een invulveld te creëren zodat er gezocht kan worden op een achternaam. Script moet met die naam komen en vervolgens ga ik proberen of ik die naam (met bijbehorende andere velden) kan gedeleten of updaten. Je hoort vanme. Tuur
@ Legolas: een script als dit staat natuurlijk achter een login. Als extra veiligheid zou je een md5 code kunnen maken die meegegeven wordt in de hyperlink. Als die klopt met de code die in de db staat, mag het record verwijderd worden. Wat is jouw standaard-oplossing voor SQL injection?
@ Edwin: ik zal mijn db_config.php hier plakken:
@ Tuur: het is eerder de bedoeling dat je geinspireerd raakt dan dat je jaloers wordt ;-)
Dat scriptje is een leuke uitbreiding. Als je een veld 'achternaam' in de database hebt, zou je een script moeten hebben dat alleen de records laat zien waar die achternaam of een deel van de achternaam in zit. Als je de code verder hetzelfde laat als in mijn opzet, komt er naast elke record gewoon een "delete" optie te staan waarmee je kunt wissen. Nog weer leuker is het natuurlijk als je ALLE resultaten kunt wissen met één klik, en als je dan ook nog eerst een waarschuwing inbouwt.
Ik ben benieuwd wat er uit rolt, en als er dingen niet lukken, post ze hier. Dan gaan we kijken of we je kunnen helpen. Als er van meer kanten behoefte is aan uitleg over dit onderwerp, kan ik er misschien beter een tutorial van maken, maar ik wacht even de reacties af.
groeten, Jan
@ Edwin: ik zal mijn db_config.php hier plakken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$db_host = 'localhost';
$db_user = 'xxxxx';
$db_pass = 'xxxxx';
$db_name = 'xxxxx';
mysql_connect ($db_host, $db_user, $db_pass);
@mysql_select_db ($db_name) or die ('Fout bij het selecteren van de database');
unset ($db_host);
unset ($db_user);
unset ($db_pass);
unset ($db_name);
?>
$db_host = 'localhost';
$db_user = 'xxxxx';
$db_pass = 'xxxxx';
$db_name = 'xxxxx';
mysql_connect ($db_host, $db_user, $db_pass);
@mysql_select_db ($db_name) or die ('Fout bij het selecteren van de database');
unset ($db_host);
unset ($db_user);
unset ($db_pass);
unset ($db_name);
?>
@ Tuur: het is eerder de bedoeling dat je geinspireerd raakt dan dat je jaloers wordt ;-)
Dat scriptje is een leuke uitbreiding. Als je een veld 'achternaam' in de database hebt, zou je een script moeten hebben dat alleen de records laat zien waar die achternaam of een deel van de achternaam in zit. Als je de code verder hetzelfde laat als in mijn opzet, komt er naast elke record gewoon een "delete" optie te staan waarmee je kunt wissen. Nog weer leuker is het natuurlijk als je ALLE resultaten kunt wissen met één klik, en als je dan ook nog eerst een waarschuwing inbouwt.
Ik ben benieuwd wat er uit rolt, en als er dingen niet lukken, post ze hier. Dan gaan we kijken of we je kunnen helpen. Als er van meer kanten behoefte is aan uitleg over dit onderwerp, kan ik er misschien beter een tutorial van maken, maar ik wacht even de reacties af.
groeten, Jan
@ stuur
Het probleem dat je een wit scherm te zien krijgt ligt waarschijnlijk aan dat je de functie display_table niet aanroep aan het einde van het script:
display_table ("leden", "ledentabel"); // de database die je wilt gebruiken en de tabel
Een prachtig script, bedankt Jan! , waar zou ik dit in het script kunnen toevoegen binnen of buiten de functie?
Het probleem dat je een wit scherm te zien krijgt ligt waarschijnlijk aan dat je de functie display_table niet aanroep aan het einde van het script:
display_table ("leden", "ledentabel"); // de database die je wilt gebruiken en de tabel
Een prachtig script, bedankt Jan! , waar zou ik dit in het script kunnen toevoegen binnen of buiten de functie?
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$id = $_GET['id'];
$sql = "DELETE FROM ledentabel WHERE id = '"$id"' LIMIT 1";
mysql_query ($sql) or die (mysql_error ());
?>
$id = $_GET['id'];
$sql = "DELETE FROM ledentabel WHERE id = '"$id"' LIMIT 1";
mysql_query ($sql) or die (mysql_error ());
?>
@ BlcKJcK:
Je zou die code binnen de functie kunnen zetten, op een plek _voordat_ de tabel daadwerkelijk getekend wordt. Hij zou er dan zo uit moeten zien:
LET OP: ik zou het alléén op deze manier doen als deze functie achter een inlogsysteem zit. De reden daarvoor is beveiliging. Stel dat iedereen de pagina met de tabel zou kunnen zien, dan hoeven ze alleen maar in de adresregel van de browser te typen:
http://www.mijnpagina.nl/tabel.php?action=delete&id=10
Achter id= kunnen ze èlk getal invullen, en dan wordt die record gewist.
Om dit tegen te gaan, zou je tijdens het maken van een nieuwe record een veld met een md5-code kunnen vullen. Die code verwerk je dan in de hyperlink die records kan wissen. Als daarover meer uitleg nodig is, dan hoor ik het nog wel!
p.s. Ik heb al heel veel leuke reacties gekregen op dit script. Dankjulliewel daarvoor!
Je zou die code binnen de functie kunnen zetten, op een plek _voordat_ de tabel daadwerkelijk getekend wordt. Hij zou er dan zo uit moeten zien:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
if (isset ($_GET['id') && isset ($_GET['action'])) {
if ($_GET['action'] == 'delete') {
$id = $_GET['id'];
$sql =
"DELETE FROM ledentabel
WHERE id = '$id'
LIMIT 1";
mysql_query ($sql) or die (mysql_error ());
}
}
?>
if (isset ($_GET['id') && isset ($_GET['action'])) {
if ($_GET['action'] == 'delete') {
$id = $_GET['id'];
$sql =
"DELETE FROM ledentabel
WHERE id = '$id'
LIMIT 1";
mysql_query ($sql) or die (mysql_error ());
}
}
?>
LET OP: ik zou het alléén op deze manier doen als deze functie achter een inlogsysteem zit. De reden daarvoor is beveiliging. Stel dat iedereen de pagina met de tabel zou kunnen zien, dan hoeven ze alleen maar in de adresregel van de browser te typen:
http://www.mijnpagina.nl/tabel.php?action=delete&id=10
Achter id= kunnen ze èlk getal invullen, en dan wordt die record gewist.
Om dit tegen te gaan, zou je tijdens het maken van een nieuwe record een veld met een md5-code kunnen vullen. Die code verwerk je dan in de hyperlink die records kan wissen. Als daarover meer uitleg nodig is, dan hoor ik het nog wel!
p.s. Ik heb al heel veel leuke reacties gekregen op dit script. Dankjulliewel daarvoor!
@ Jan
Het verwijderen lukt al aardig, alleen begrijp ik dat MD5 geval niet zo goed, wat uitleg zou ik erg waarderen :)
Ook ben ik bezig met het update systeem, ipv alles tussen <td></td> te plaatsen heb ik dit in een
gezet. Is dit handiger om voor het update te gebruiken als 1 groot formulier??
Alvast Bedankt!!
Het verwijderen lukt al aardig, alleen begrijp ik dat MD5 geval niet zo goed, wat uitleg zou ik erg waarderen :)
Ook ben ik bezig met het update systeem, ipv alles tussen <td></td> te plaatsen heb ik dit in een
Code (php)
gezet. Is dit handiger om voor het update te gebruiken als 1 groot formulier??
Alvast Bedankt!!
eerst en vooral allemaal een goededag
ik ben hier nieuw op dit forum en dit artikel boeit me wel.
Ik ben een absolute leek in php en mysql, maar probeer toch wat bij te leren.
Ik zoek zo een scriptje al een hele tijd
Ik heb een soort bestellijstje waar ik via de database kan produkten aan toevoegen en verwijderen.
Ik heb dit nu geprobeerd en ik kan dus nu rechtsreeks in de database komen.
Wat natuurlijk fantastisch is.
Wat ik wel zou willen bereiken zijn nog 2 extra's.
1 nieuwe produkten toevoegen
2 bestaande produkten aanpassen (bv prijs wijzigen) met de al bestaande edit knop
// record deleten
if ($action=="delete"){
$id = $_GET['id'];
$sql = "DELETE FROM $tb_name WHERE id = '$id' LIMIT 1";
mysql_query ($sql) or die (mysql_error ());
}
// record aanpassen
if ($action=="edit"){
echo'nog uit te zoeken';
}
dit heb ik er aan togevoegd maar bij record aanpassen zit ik vast.
Zou iemand mij misschien hierbij op weg kunnen helpen?
In elk geval al bedankt
gr yves
ik ben hier nieuw op dit forum en dit artikel boeit me wel.
Ik ben een absolute leek in php en mysql, maar probeer toch wat bij te leren.
Ik zoek zo een scriptje al een hele tijd
Ik heb een soort bestellijstje waar ik via de database kan produkten aan toevoegen en verwijderen.
Ik heb dit nu geprobeerd en ik kan dus nu rechtsreeks in de database komen.
Wat natuurlijk fantastisch is.
Wat ik wel zou willen bereiken zijn nog 2 extra's.
1 nieuwe produkten toevoegen
2 bestaande produkten aanpassen (bv prijs wijzigen) met de al bestaande edit knop
// record deleten
if ($action=="delete"){
$id = $_GET['id'];
$sql = "DELETE FROM $tb_name WHERE id = '$id' LIMIT 1";
mysql_query ($sql) or die (mysql_error ());
}
// record aanpassen
if ($action=="edit"){
echo'nog uit te zoeken';
}
dit heb ik er aan togevoegd maar bij record aanpassen zit ik vast.
Zou iemand mij misschien hierbij op weg kunnen helpen?
In elk geval al bedankt
gr yves
Ik heb even voortgewerkt op dit script
Via google heb ik wat scriptjes gevonden en aangepast aan dit script
let wel ik heb het aangepast naar wat ik nodig had maar misschien kan iemand er iets mee doen
Eerst de drie links
nieuw artikel
echo "<td><a href=edit.php>nieuwe ingave</a></td><br>";
artikel wijzigen
echo( "<tr><td><a href='edit.php?&id=$row[id]&order_by=$order_by'>bewerk<br></a></td>" );
artikel verwijderen
echo "<td><a href=\"?action=delete&id=$row[id]&order_by=$order_by\">Verwijderen?</a></td>";
Script voor verwijderen staat op hetzelfde formulier
// record deleten
if ($action=="delete"){
$id = $_GET['id'];
$sql = "DELETE FROM $tb_name WHERE id = '$id' LIMIT 1";
mysql_query ($sql) or die (mysql_error ());
}
Nieuw artikel en artikel wijzigen verwijzen naar het bestand edit.php
<form action="save.php" method="get"> <input type="hidden" name="id" value="">
<table border="1" cellpadding="3" cellspacing="3"><tr>
<th align="left">artikelnaam</th><td align="left"><input name="artikelnaam" type="text" value="" /></td></tr>
<tr><th align="left">bestelnummer</th><td align="left"><input name="bestelnummer" type="text" value="" /></td></tr>
<tr><th align="left">prijs</th><td align="left"><input name="prijs" type="text" value="" /></td></tr>
</table>
<br> <input type="submit" value="Opslaan"> <input type="reset" value="reset"> <br>
</form>
</td>
</tr>
</table>
naar het invoegen van de gegevens en duwen op de submit knop kom je op save.php
Ik hoop dat iemand er iets aan heeft (en kan verbeteren)
Ik probeer binnenkort even een werkend voorbeeld ergens te zetten
Wat er nog moet komen is een waarschuwing voor het verwijderen
gr yves
Via google heb ik wat scriptjes gevonden en aangepast aan dit script
let wel ik heb het aangepast naar wat ik nodig had maar misschien kan iemand er iets mee doen
Eerst de drie links
nieuw artikel
echo "<td><a href=edit.php>nieuwe ingave</a></td><br>";
artikel wijzigen
echo( "<tr><td><a href='edit.php?&id=$row[id]&order_by=$order_by'>bewerk<br></a></td>" );
artikel verwijderen
echo "<td><a href=\"?action=delete&id=$row[id]&order_by=$order_by\">Verwijderen?</a></td>";
Script voor verwijderen staat op hetzelfde formulier
// record deleten
if ($action=="delete"){
$id = $_GET['id'];
$sql = "DELETE FROM $tb_name WHERE id = '$id' LIMIT 1";
mysql_query ($sql) or die (mysql_error ());
}
Nieuw artikel en artikel wijzigen verwijzen naar het bestand edit.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
require ('config.php');
// database
$query = "SELECT * FROM `producten` WHERE `id`='$id'";
$result = mysql_query( $query );
if( $result && $contact = mysql_fetch_object( $result ) )
{
// variabelen
$artikelnaam = $contact -> artikelnaam;
$bestelnr = $contact -> bestelnummer;
$prijs = $contact -> prijs;
}
// form
?>
require ('config.php');
// database
$query = "SELECT * FROM `producten` WHERE `id`='$id'";
$result = mysql_query( $query );
if( $result && $contact = mysql_fetch_object( $result ) )
{
// variabelen
$artikelnaam = $contact -> artikelnaam;
$bestelnr = $contact -> bestelnummer;
$prijs = $contact -> prijs;
}
// form
?>
<form action="save.php" method="get"> <input type="hidden" name="id" value="">
<table border="1" cellpadding="3" cellspacing="3"><tr>
<th align="left">artikelnaam</th><td align="left"><input name="artikelnaam" type="text" value="" /></td></tr>
<tr><th align="left">bestelnummer</th><td align="left"><input name="bestelnummer" type="text" value="" /></td></tr>
<tr><th align="left">prijs</th><td align="left"><input name="prijs" type="text" value="" /></td></tr>
</table>
<br> <input type="submit" value="Opslaan"> <input type="reset" value="reset"> <br>
</form>
</td>
</tr>
</table>
naar het invoegen van de gegevens en duwen op de submit knop kom je op save.php
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
35
36
37
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
35
36
37
<?php
require ('config.php');
// variabelen opvragen
$id = $_REQUEST['id'];
$artikelnaam = $_REQUEST['artikelnaam'];
$bestelnr = $_REQUEST['bestelnummer'];
$prijs = $_REQUEST['prijs'];
// als $id niet gekend is een nieuwe ingave
if( $id )
{
$query = "UPDATE `producten` SET `artikelnaam`='$artikelnaam', `bestelnummer`='$bestelnr',
`prijs`='$prijs' WHERE `id`='$id'";
}
else
{
$query = "INSERT INTO `producten` ( `artikelnaam`,`bestelnummer`,`prijs` )
VALUES ( '$artikelnaam','$bestelnr','$prijs' )";
}
// opslaan
$results = mysql_query( $query );
// resultaat
if( $results )
{
echo( "<font color= '#FF0000'>Artikel is opgeslagen.</fond><br><br>" );
echo "<a href=edit.php><font color= '#FF0000'>Nieuw artikel ingeven</fond></a><br><br>";
echo "<a href=index.php><font color= '#FF0000'>Terug naar overzicht</fond></a><br>";
}
else
{
die( "Probleem met opslaan: " . mysql_error() );
}
?>
require ('config.php');
// variabelen opvragen
$id = $_REQUEST['id'];
$artikelnaam = $_REQUEST['artikelnaam'];
$bestelnr = $_REQUEST['bestelnummer'];
$prijs = $_REQUEST['prijs'];
// als $id niet gekend is een nieuwe ingave
if( $id )
{
$query = "UPDATE `producten` SET `artikelnaam`='$artikelnaam', `bestelnummer`='$bestelnr',
`prijs`='$prijs' WHERE `id`='$id'";
}
else
{
$query = "INSERT INTO `producten` ( `artikelnaam`,`bestelnummer`,`prijs` )
VALUES ( '$artikelnaam','$bestelnr','$prijs' )";
}
// opslaan
$results = mysql_query( $query );
// resultaat
if( $results )
{
echo( "<font color= '#FF0000'>Artikel is opgeslagen.</fond><br><br>" );
echo "<a href=edit.php><font color= '#FF0000'>Nieuw artikel ingeven</fond></a><br><br>";
echo "<a href=index.php><font color= '#FF0000'>Terug naar overzicht</fond></a><br>";
}
else
{
die( "Probleem met opslaan: " . mysql_error() );
}
?>
Ik hoop dat iemand er iets aan heeft (en kan verbeteren)
Ik probeer binnenkort even een werkend voorbeeld ergens te zetten
Wat er nog moet komen is een waarschuwing voor het verwijderen
gr yves
ondertussen ook een confirmatie bijgezet voor het verwijderen
in de head sectie
<Script Language="JavaScript">
<!--
function controle(){
msg = "Zeker verwijderen?";
return confirm(msg);
}
//-->
</script>
de verwijder knop word dan
echo( "<td><a href='?action=delete&id=$row[id]&order_by=$order_by'onclick=\"return controle()\">verwijder?</A>");
mvg yves
zou het ook mogelijk zijn (en hoe dan) om de rij "ID" te verbergen
gr yves
in de head sectie
<Script Language="JavaScript">
<!--
function controle(){
msg = "Zeker verwijderen?";
return confirm(msg);
}
//-->
</script>
de verwijder knop word dan
echo( "<td><a href='?action=delete&id=$row[id]&order_by=$order_by'onclick=\"return controle()\">verwijder?</A>");
mvg yves
zou het ook mogelijk zijn (en hoe dan) om de rij "ID" te verbergen
gr yves
"zou het ook mogelijk zijn (en hoe dan) om de rij "ID" te verbergen"
Ja hoor. Bij mij is het altijd de eerste kolom in een tabel, dus in de plaatsen in het script waar ik nu dit doe:
for ($i = 0; $i < $columns; $i++) {
zou ik van die 0 een 1 kunnen maken. Je kunt ook velden van het type 'hidden' gebruiken.
Ja hoor. Bij mij is het altijd de eerste kolom in een tabel, dus in de plaatsen in het script waar ik nu dit doe:
for ($i = 0; $i < $columns; $i++) {
zou ik van die 0 een 1 kunnen maken. Je kunt ook velden van het type 'hidden' gebruiken.
Ik heb net als Stuur een wit scherm bij dit script als reactie daarop:
"BlcKJcK schreef op 16.10.2005 13:54
@ stuur
Het probleem dat je een wit scherm te zien krijgt ligt waarschijnlijk aan dat je de functie display_table niet aanroep aan het einde van het script:
display_table ("leden", "ledentabel"); // de database die je wilt gebruiken en de tabel`.
"
Dit is bij mij denk ik ook het geval, maar waar en hoe moet ik mijn tabel en database naam er in zetten? De datbase heet testdb en de tabel heet nieuws.
P.S. het config bestandje werkt wel met andere scripts en is dus goed, en ik weet dat dit een script voor beginners is maar een wit scherm genereren kan zelfs ik met minder php code :)
"BlcKJcK schreef op 16.10.2005 13:54
@ stuur
Het probleem dat je een wit scherm te zien krijgt ligt waarschijnlijk aan dat je de functie display_table niet aanroep aan het einde van het script:
display_table ("leden", "ledentabel"); // de database die je wilt gebruiken en de tabel`.
"
Dit is bij mij denk ik ook het geval, maar waar en hoe moet ik mijn tabel en database naam er in zetten? De datbase heet testdb en de tabel heet nieuws.
P.S. het config bestandje werkt wel met andere scripts en is dus goed, en ik weet dat dit een script voor beginners is maar een wit scherm genereren kan zelfs ik met minder php code :)
ik krijg ook een wit scherm, al heb ik $tb_name juist gedefinieerd en tevens geplaatst in db_config.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<? php
$db_host = 'localhost';
$db_user = 'xxxxxx';
$db_pass = 'xxxxxx';
$db_name = 'xxxxxx';
$tb_name = 'xxxxxx';
mysql_connect ($db_host, $db_user, $db_pass);
@mysql_select_db ($db_name) or die ('Fout bij het selecteren van de database');
unset ($db_host);
unset ($db_user);
unset ($db_pass);
unset ($db_name);
?>
$db_host = 'localhost';
$db_user = 'xxxxxx';
$db_pass = 'xxxxxx';
$db_name = 'xxxxxx';
$tb_name = 'xxxxxx';
mysql_connect ($db_host, $db_user, $db_pass);
@mysql_select_db ($db_name) or die ('Fout bij het selecteren van de database');
unset ($db_host);
unset ($db_user);
unset ($db_pass);
unset ($db_name);
?>
ik heb dit script plus db_config.php net gebruikt.
alleen krijg ik deze melding:
Warning: mysql_num_fields(): supplied argument is not a valid MySQL result resource in /home/macwork/domains/macwork.nl/public_html/test2.php on line 24
en op line 24 staat "$columns = mysql_num_fields ($fields);"
ik heb verder niks veranderd aan het script.. heb alleen wat in db_config.php staat op dezelfde pagina gezet waar het script staat..
Weet iemand waarom ik deze foutmelding krijg?
alleen krijg ik deze melding:
Warning: mysql_num_fields(): supplied argument is not a valid MySQL result resource in /home/macwork/domains/macwork.nl/public_html/test2.php on line 24
en op line 24 staat "$columns = mysql_num_fields ($fields);"
ik heb verder niks veranderd aan het script.. heb alleen wat in db_config.php staat op dezelfde pagina gezet waar het script staat..
Weet iemand waarom ik deze foutmelding krijg?
Op zoek naar een manier om mijn tabel te sorteren door op de kolomkop te klikken, kwam ik dit script (eigenlijk een functie) tegen.
Werkt prima, zoals anderen hierboven al geconstateerd hadden.
Een van de velden in mijn tabel heet 'Titel'. Ik heb de query aangepast waardoor gezocht wordt naar records die voldoen aan de beginletter van de titel. Die beginletter staat in een variabele die vanuit een alfabet scriptje gegenereerd wordt.
Dat werkt goed, op 1 ding na: sorteren m.b.v. de kolomkop werkt niet zoals ik zou willen. Het resultaat is dat alle records weer getoond worden. De selectie van de titels is dan verdwenen.
Er wordt deze error getoond: Notice: Undefined index: letter in ....
Er wordt dan verwezen naar de regel waarin de $_GET variabele wordt gebruikt.
Wie weet wat er fout gaat in dit script?
Het betreffende script vind je hieronder.
function display_table ($db_name, $tb_name) {
# haal de namen en het aantal velden op
$fields = mysql_list_fields ($db_name, $tb_name);
$columns = mysql_num_fields ($fields);
# als er op een kolomkop geklikt is, is de naam van die kolom
# beschikbaar via $_GET
if (isset ($_GET['order_by'])) {
$order_by = $_GET['order_by'];
}
else {
$order_by = 'id';
}
if (isset ($_GET['order_type']) && !isset ($_GET['action'])) {
$order_type = $_GET['order_type'];
if ($order_type == 'ASC') {
$order_type = 'DESC';
}
else {
$order_type = 'ASC';
}
}
else {
$order_type = 'ASC';
}
# alfabet maken
echo '<div id="alfabet">';
$letters = range('a','z');
foreach($letters as $letter)
{
$llink = "<a href='zoek.php?letter=$letter'>" . $letter . "</a>";
echo $llink . " ";
}
echo '</div>';
$letter = $_GET['letter'];
$letter = $letter . '%';
echo '<table>';
echo '<tr>';
# echo '<th>edit</th>';
# echo '<th>delete</th>';
# de titelrij van de tabel in elkaar zetten
# zorgen dat de kolomkoppen aanklikbaar zijn
for ($i = 0; $i < $columns; $i++) {
echo "\n";
echo '<th>';
$fieldname = mysql_field_name ($fields, $i) ;
echo "<a href=\"?order_by=$fieldname&order_type=$order_type\">$fieldname</a>";
echo '</th>';
}
$sql = "SELECT *
FROM $tb_name
WHERE Titel LIKE '$letter'
ORDER BY $order_by $order_type";
$res = mysql_query ($sql) or die (mysql_error ());
while ($row = mysql_fetch_array ($res)) {
echo "\n";
echo '<tr>';
# via deze links kun je de pagina uitbreiden met een delete of een edit-mogelijkheid
# echo "<td><a href=\"?action=edit&id=$row[id]&order_by=$order_by\">edit</a></td>";
# echo "<td><a href=\"?action=delete&id=$row[id]&order_by=$order_by\">delete</a></td>";
for ($i = 0; $i < $columns; $i++) {
echo '<td>';
echo $row[$i];
echo '</td>';
}
echo '</tr>';
}
echo '</tr>';
echo '</table>';
}
Werkt prima, zoals anderen hierboven al geconstateerd hadden.
Een van de velden in mijn tabel heet 'Titel'. Ik heb de query aangepast waardoor gezocht wordt naar records die voldoen aan de beginletter van de titel. Die beginletter staat in een variabele die vanuit een alfabet scriptje gegenereerd wordt.
Dat werkt goed, op 1 ding na: sorteren m.b.v. de kolomkop werkt niet zoals ik zou willen. Het resultaat is dat alle records weer getoond worden. De selectie van de titels is dan verdwenen.
Er wordt deze error getoond: Notice: Undefined index: letter in ....
Er wordt dan verwezen naar de regel waarin de $_GET variabele wordt gebruikt.
Wie weet wat er fout gaat in dit script?
Het betreffende script vind je hieronder.
function display_table ($db_name, $tb_name) {
# haal de namen en het aantal velden op
$fields = mysql_list_fields ($db_name, $tb_name);
$columns = mysql_num_fields ($fields);
# als er op een kolomkop geklikt is, is de naam van die kolom
# beschikbaar via $_GET
if (isset ($_GET['order_by'])) {
$order_by = $_GET['order_by'];
}
else {
$order_by = 'id';
}
if (isset ($_GET['order_type']) && !isset ($_GET['action'])) {
$order_type = $_GET['order_type'];
if ($order_type == 'ASC') {
$order_type = 'DESC';
}
else {
$order_type = 'ASC';
}
}
else {
$order_type = 'ASC';
}
# alfabet maken
echo '<div id="alfabet">';
$letters = range('a','z');
foreach($letters as $letter)
{
$llink = "<a href='zoek.php?letter=$letter'>" . $letter . "</a>";
echo $llink . " ";
}
echo '</div>';
$letter = $_GET['letter'];
$letter = $letter . '%';
echo '<table>';
echo '<tr>';
# echo '<th>edit</th>';
# echo '<th>delete</th>';
# de titelrij van de tabel in elkaar zetten
# zorgen dat de kolomkoppen aanklikbaar zijn
for ($i = 0; $i < $columns; $i++) {
echo "\n";
echo '<th>';
$fieldname = mysql_field_name ($fields, $i) ;
echo "<a href=\"?order_by=$fieldname&order_type=$order_type\">$fieldname</a>";
echo '</th>';
}
$sql = "SELECT *
FROM $tb_name
WHERE Titel LIKE '$letter'
ORDER BY $order_by $order_type";
$res = mysql_query ($sql) or die (mysql_error ());
while ($row = mysql_fetch_array ($res)) {
echo "\n";
echo '<tr>';
# via deze links kun je de pagina uitbreiden met een delete of een edit-mogelijkheid
# echo "<td><a href=\"?action=edit&id=$row[id]&order_by=$order_by\">edit</a></td>";
# echo "<td><a href=\"?action=delete&id=$row[id]&order_by=$order_by\">delete</a></td>";
for ($i = 0; $i < $columns; $i++) {
echo '<td>';
echo $row[$i];
echo '</td>';
}
echo '</tr>';
}
echo '</tr>';
echo '</table>';
}
Om te reageren heb je een account nodig en je moet ingelogd zijn.
Inhoudsopgave
Labels
- Geen tags toegevoegd.


PHP hulp
0 seconden vanaf nu