Maak tabel

Door Jan Koehoorn, 23 jaar geleden, 26.552x 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

  1. maak-tabel

 

Er zijn 62 reacties op '25'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Alfred -
Alfred -
23 jaar geleden
 
0 +1 -0 -1
Mooi, enkel snap ik niet waarom je afwisselend met dubbele & enkele quotes werkt...

Quote:
echo "<td><a href=\"?action=edit&id=$row[id]\">edit</a></td>";


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<td><a href="?action=edit&id=' . $row['id'] . '">edit</a></td>';
?>


Staat toch ook veel netter als je dan ook de vars buiten quotes haalt? Voor de rest, netjes :)
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
@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 ;-)
- SanThe -
- SanThe -
23 jaar geleden
 
0 +1 -0 -1
@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.
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
@SanThe: goed idee. Daarvoor hoef je dus alleen de links zodanig aan te passen dat de order_by waarde meegenomen wordt.

Zoals ik het voor klanten implementeer, doe ik edit acties op een aparte pagina met een formulier en dan is de sorteervolgorde niet van belang.
- SanThe -
- SanThe -
23 jaar geleden
 
0 +1 -0 -1
@Jan: Misschien voor anderen hier. Ik heb zelf ooit al zoiets gemaakt, vandaar dat ik kan zeggen dat het handig is. Inderdaad even bij de links 'plakken'.
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
@ SanThe: ik zal het script even aanpassen. Bedankt voor de tip!


23 jaar geleden
 
0 +1 -0 -1
Ik gebruik ook zo'n iets. MyEdit
Elwin - Fratsloos
Elwin - Fratsloos
23 jaar geleden
 
0 +1 -0 -1
Ik mis nog iets anders bij het sorteren... De eerste keer klikken is ASC, de tweede keer DESC. Bij een grote lijst, zoals bijvoorbeeld op het voorbeeld, kan dat nog wel eens makkelijk zijn.

Elwin
Han eev
Han eev
23 jaar geleden
 
0 +1 -0 -1
Mooi en handig scrippie!
(Wat moet ik nog meer zeggen ^^ ....?)
Lissy Pixel
Lissy Pixel
23 jaar geleden
 
0 +1 -0 -1
GEWELDIG mooi en strak gemaakt en weetje dit ga ik toepassen bij een lieve vriendin van me die idd geen toegang zelf wil met PHP MyAdmin maar wel dingetjes wil kunnen verwijderen :-)

Dank je wel Jan!!
Groet, lissy
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
@ Elwin: goed idee! Ga ik toevoegen.

@ Han: bedankt!

@ Lissy: klopt, daar is het voor bedoeld. Mensen kunnen de basisdingetjes zelf doen.
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
Script is aangepast naar aanleiding van de tip van Elwin.
- SanThe -
- SanThe -
23 jaar geleden
 
0 +1 -0 -1
@Jan: We houden je wel lekker bezig. Je hebt mijn tip verwerkt en je hebt de tip van Elwin verwerkt. Maar nog niet allebei tegelijk werkend. (Sorry hoor)
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
@ SanThe: Ja, dat merkte ik ook net. Ik ga er zo nog ff aan sleutelen, want bij een edit of een delete moet de sorteervolgorde natuurlijk NIET omkeren.
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
Script is aangepast naar aanleiding van de tip van SanThe.
- SanThe -
- SanThe -
23 jaar geleden
 
0 +1 -0 -1
@Jan: Volgens mij ben je deze vergeten:
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>";
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
Eh, misschien lees ik het niet goed, maar zo staat het toch ook in het script?
- SanThe -
- SanThe -
23 jaar geleden
 
0 +1 -0 -1
@Jan: Hier staat ook de order_type in en bij die andere twee niet.
echo "<a href=\"?order_by=$fieldname&order_type=$order_type\">$fieldname</a>";
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
@ SanThe: klopt, maar ik wil de sorteervolgorde ook hetzelfde houden bij een edit of een delete. Daarom doe ik ook:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  if (isset ($_GET['order_type']) && !isset ($_GET['action']))
?>


23 jaar geleden
 
0 +1 -0 -1
Super dit had ik nodig ik heb een vraag is er ook een manier om een functie in te bouwen om records toe te voegen?
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
@ 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 ...
Tuur
Tuur
23 jaar geleden
 
0 +1 -0 -1
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
Tuur
Tuur
23 jaar geleden
 
0 +1 -0 -1
Hi jan,

net je voorbeld bekeken; ziet er goed uit. Ga je weer mensen blij mee maken!
Hein
Hein
23 jaar geleden
 
0 +1 -0 -1
Voor jullie is het misschien allemaal gesneden koek, maar deze newbie wil graag weten waar op phphulp dat script db_config.php te vinden is.
Dat het een script is om contact met de database te maken is me al wél duidelijk.
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
Inderdaad, zo ziet db_config.php er ongeveer uit. Je zou na het connecten met de database deze regels nog toe kunnen voegen voor alle zekerheid:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
 unset ($host);
 unset ($dbusername);
 unset ($password);
 unset ($db);
?>
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
@ 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:

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


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.
Marien xD
Marien xD
23 jaar geleden
 
0 +1 -0 -1
moet je ook nog even controleren of het numeric is :)
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
Ja, zodat mensen niet zelf URL's in gaan zitten vullen, bedoel je?
Legolas
Legolas
23 jaar geleden
 
0 +1 -0 -1
SQL Injection krijg je met zo'n delete script :P


23 jaar geleden
 
0 +1 -0 -1
Euhm, misschien een rare vraag.
Kan iemand misschien aangeven hoe de db_config.php en de SQL query eruit ziet.
Ben al bezig geweest en het script maakt connectie, maar ik zie helemaal niets.
Alvast bedankt.

// Edwin.
Tuur
Tuur
23 jaar geleden
 
0 +1 -0 -1
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
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
@ 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:
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
<?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);
?>


@ 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


23 jaar geleden
 
0 +1 -0 -1
Dit is een fantastisch script alleen waar kan ik de nieuwste versie vinden want door al het bovenstaande toetevoegen is er iets verkeerd gegaan. Ik zie alleen een wit scherm. Wie kan de juiste code nog een x plaatsen zodat ik kan vergelijken?


23 jaar geleden
 
0 +1 -0 -1
En moet de varibele $tb_name niet in het connectie script komen te staan met de werkelijke tabelnaam waar je de records uit wil halen?
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
@ Stuur:

ik heb de originele versie weer online gezet, zie de voorbeeld-link.
De variabele $tb_name kun je beter niet in het connectie-script zetten, want nu kun je het script gebruiken voor meer dan 1 tabel in dezelfde database.


23 jaar geleden
 
0 +1 -0 -1
Oke ik heb het weer geprobeerd bovenstaande code in te voegen en te draaien maar het enige wat ik zie is een wit scherm. Ik weet niet waar dit aan kan liggen. De connectie is oke en de link met het connectie bestand ook. Iemand een idee???
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
Kun je je code als tekstbestand (txt) op het net zetten en even een url hier plakken?
Wel opletten dat je niet je wachtwoorden en zo prijsgeeft.
BlcKJcK
BlcKJcK
23 jaar geleden
 
0 +1 -0 -1
@ 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?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$id
= $_GET['id'];
$sql = "DELETE FROM ledentabel WHERE id = '"$id"' LIMIT 1";
mysql_query ($sql) or die (mysql_error ());
?>
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
@ 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:

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

?>


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!
BlcKJcK
BlcKJcK
23 jaar geleden
 
0 +1 -0 -1
@ 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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php echo \'<td>\';
        echo \"<input type=\\\"text\\\" value=\\\"$row[$i]\\\" size=\\\"10\\\">\";
        echo \'</td>\'; ?>


gezet. Is dit handiger om voor het update te gebruiken als 1 groot formulier??

Alvast Bedankt!!
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
@ BlcKJcK:

md5 () is een functie waarmee je een code van 32 tekens genereert. Het is voor kwaadwillende bezoekers vrij gemakkelijk om een id te gokken waarna die gewist wordt. Maar een code van 32 tekens precies goed gokken is praktisch onmogelijk.
Vadee
Vadee
23 jaar geleden
 
0 +1 -0 -1
Is het ook mogelijk om bepaalde kolommen uit je database niet te laten zien?
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
Ja dat zou kunnen. Je zou dan een array moeten maken met kolommen die onzichtbaar moeten blijven. Die geef je bijv als argument mee aan de functie.
Yvesvdp
yvesvdp
23 jaar geleden
 
0 +1 -0 -1
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
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
Ik zal dit weekend een uitbreiding schrijven op het script, waarmee het editen van records mogelijk wordt.
Yvesvdp
yvesvdp
23 jaar geleden
 
0 +1 -0 -1
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

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
<?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
   ?>

<form action="save.php" method="get"> <input type="hidden" name="id" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo($id) ?>
">
<table border="1" cellpadding="3" cellspacing="3"><tr>
<th align="left">artikelnaam</th><td align="left"><input name="artikelnaam" type="text" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo($artikelnaam) ?>
" /></td></tr>
<tr><th align="left">bestelnummer</th><td align="left"><input name="bestelnummer" type="text" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo($bestelnr) ?>
" /></td></tr>
<tr><th align="left">prijs</th><td align="left"><input name="prijs" type="text" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo($prijs) ?>
" /></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)
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
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() );
   }

  
?>


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
Yvesvdp
yvesvdp
23 jaar geleden
 
0 +1 -0 -1
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
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
"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.
Yvesvdp
yvesvdp
23 jaar geleden
 
0 +1 -0 -1
het is gelukt zo

bedankt
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
Mooi zo, Yves. Als je het script online hebt, graag een keer een link!
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
Oh trouwens, ik ben bezig met een vervolg op dit script. Ik heb ook al iets online staan, maar het is nog net niet af. Zodra het klaar is zet ik het bij de nieuwe scripts onder de titel "MAAK TABEL II".
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
Nieuwe script is geplaatst!

Bekijk het hier
Hein
Hein
23 jaar geleden
 
0 +1 -0 -1
@Jan
Eindelijk even tijd gehad om je script uit te proberen.
Het werkt prachtig.
Dank je wel voor zo'n mooi script.
Jan Koehoorn
Jan Koehoorn
23 jaar geleden
 
0 +1 -0 -1
@Hein:
graag gedaan Hein :-)
Gilles de la tourette
gilles de la tourette
23 jaar geleden
 
0 +1 -0 -1
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 :)
Michael Mouton
Michael Mouton
22 jaar geleden
 
0 +1 -0 -1
ik krijg ook een wit scherm, al heb ik $tb_name juist gedefinieerd en tevens geplaatst in db_config.php

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
<? 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);
?>
Michel exel
michel exel
21 jaar geleden
 
0 +1 -0 -1
werkt niet helemaal lekker met ie7
maar een mooi script
Melanie
melanie
21 jaar geleden
 
0 +1 -0 -1
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?
Melanie
melanie
21 jaar geleden
 
0 +1 -0 -1
probleem opgelost
als je het volgende weghaalt, dan doet ie het wel :)

unset ($db_host);
unset ($db_user);
unset ($db_pass);
unset ($db_name);
Cees D
Cees D
14 jaar geleden
 
0 +1 -0 -1
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>';


}
Albert de Wit
Albert de Wit
14 jaar geleden
 
0 +1 -0 -1
Volgens mij moet je hiervoor een topic openen.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Cees D
Cees D
14 jaar geleden
 
0 +1 -0 -1
Uiteindelijk ben ik eruit gekomen door in de <a href> tag van de kolomnamen de variabele met daarin de gezochte letter toe te voegen.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. maak-tabel

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

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.