Dit scriptje is een soort PhpMyAdmin, maar dat maar op 1 tabel werkt.
De layout werd niet verzorgd, mijn scripten zijn enkel mooi in code ;)
Je slaagt het script op; je editeert de bovenste regeltjes en je laat het maar lopen!
Bij het aanpassen van het script heb ik gemerkt dat het soms nodig is van een pagina te herladen voor je de veranderingen kan zien. Ik weet (nog) niet aan wat het kan liggen.
Wat doet het script eigenlijk?
Hij haalt alle veldnamen op
Hij zet alle records in een tabelletje met de juiste veldnamen, en achteraan de optie om te editeren of verwijderen
Hij toont een formulier om een record toe te voegen.
Wanneer je editeren klikt, krijg je een nieuw formulier om te editeren.
Wanneer je verwijderen klikt krijg je nog een vraag of je zeker bent voordat je het record definitief verwijdert!
<?
//TE EDITEREN
$tabel=""; //naam tabel
$aantal_tekens = 100; //aantal lettertekens dat er getoond moeten worden
$id_naam = "id"; //naam van het veld met de unieke waarden, ZEER BELANGRIJK!
$database_naam = ""; //naam van de database (wordt meer dan 1x gebruikt!)
$inlognaam=""; //voor je db connectie
$inlogpass=""; //voor je db connectie
//EINDE EDITEREN
//connecteren
$mysql_connectie = mysql_connect("127.0.0.1",$inlognaam,$inlogpass) or die (mysql_error());
$mysql_database = mysql_select_db($database_naam) or die (mysql_error());
//basis opzoeken
$query=mysql_query("SELECT * FROM ".$tabel) or die (mysql_error()); //dient om waarden te tonen maar ook om aantal kol. te berekenen
$kolommen = mysql_num_fields($query) or die (mysql_error()); //het aantal velden dat er zijn in die tabel
$veld_namen = mysql_list_fields($database_naam, $tabel, $mysql_connectie) or die (mysql_error());//maakt een instantie (!!!) dat alle veldnamen bevat
//DEEL 1, het script moet meer doen dan enkel de gegevens tonen!
if ($_GET['actie']) { //Wordt er geëditeerd of verwijderd? (dus ofwel edit-form tonen ofwel delete confirmatie vragen!)
//checken of id wel bestaat
$controle = mysql_query("SELECT * FROM ".$tabel." WHERE ".$id_naam." = '".addslashes($_GET['id'])."'") or die (mysql_error());
if (mysql_num_rows($controle)==1){//er is enkel en alleen 1 id met dat nummer
$lijst=mysql_fetch_array($controle) or die (mysql_error()); //zet alle waarden in een array
switch ($_GET['actie']) { //actie = edit of del
case "edit":
//toon zo'n formuliertje
echo "<br><form name=\"editeren\" action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n";
//$veld_namen is een instantie, je kan de info er dus enkel zo uithalen als op volgende lijn. Voor elk veld wordt er 1 input text gemaakt!
for ($i = 0; $i < $kolommen; $i++) echo mysql_field_name($veld_namen, $i),": <input type=\"text\" size=\"50\" name=\"",mysql_field_name($veld_namen, $i),"\" value=\"",$lijst[$i],"\"><br>\n";
echo "<input type=\"submit\" name=\"uitvoer\" value=\"editeer\"></form>\n<br>Het veld <b>$id_naam</b> NIET veranderen!<br>\n";
break;
//via mysql_field_type zou ik het type kunnen bekijken en dan een juist input-object kunnen maken, maar dat is voor later!
case "del":
//confirmatie vragen
?>
<form name="delete" action="<?=$_SERVER['PHP_SELF']; ?>" method="POST">
<input type="hidden" name="del_id" value="<?=addslashes($_GET['id'])?>">Deze record verwijderen?<br>
<input type="submit" name="uitvoer" value="verwijder"><br>
<hr><h3>Record uit <?=$tabel?><br>
<?
$del_toon = mysql_query("SELECT * FROM ".$tabel." WHERE ".$id_naam."='".$_GET['id']."'");
$lijst = mysql_fetch_array($del_toon);
foreach($lijst as $sleutel => $waarde) echo "<b>$sleutel:</b> $waarde<br>";
echo "</form>";
break;
}
}
$rest_tonen=false; //de lijst met alle records niet tonen
}
//WERD ER VANUIT HET EDITEREN/VERWIJDEREN GEVRAAGD OM IETS TE DOEN
if($_POST['uitvoer']=="editeer") {
//update query bouwen met alle velden uit de POST array
foreach ($_POST as $sleutel => $waarde) {
//submit knop en id veld weglaten!
if ($sleutel != "uitvoer" && $sleutel!= $id_naam) $velden[] = $sleutel=$waarde;
}
$sql_query = "UPDATE $tabel SET".implode(",", $velden)." WHERE ".$id_naam." = ".$_POST[$id_naam];
//als je wenst kun je de sql_query eens echo-en, dan zie je wat er gebeurt!
mysql_query($sql_query) or die (mysql_error());
$rest_tonen=true;
} elseif ($_POST['uitvoer']=="verwijder") {//gewoon doen, lijkt me logisch
mysql_query("DELETE FROM $tabel WHERE ".$id_naam." = ".$_POST['del_id']." LIMIT 1") or die (mysql_error());
$rest_tonen=true;
} elseif ($_POST['uitvoer']=="Nieuw Record"){ //nieuwe record toevoegen...
foreach($_POST as $sleutel => $waarde){
if ($sleutel!="uitvoer"){//waarde van de submit knop niet meesturen
//2 arrays maken, sleutels en waarden, en die later gaan imploderen
$nieuwe_sleutels[] = $sleutel;
$nieuwe_waarden[] = "'".addslashes($waarde)."'";
}}
$toevoeg_query = "INSERT INTO ".$tabel." (".implode(", ", $nieuwe_sleutels).") VALUES( ".implode(", ", $nieuwe_waarden).")";
mysql_query($toevoeg_query);
}
if ($rest_tonen || !isset($actie)) { //*********************************
//DEEL 2 GEWOON DE INHOUD VAN DE TABEL TONEN
//er werd geen actie gespecifieerd, gewoon tonen, could be buggy?
//maak een tabelletje
echo "<table border=\"1\" width=\"100%\" cellpadding=\"2\"><tr>";
for ($i = 0; $i < $kolommen; $i++) //maak evenveel cellen als er velden zijn
//$veld_namen komt uit de query die alle info uit $tabel haalt (select * from $tabel)
echo "<th>",mysql_field_name($veld_namen, $i) . "</th>";
echo "<th colspan=\"2\">acties</th></tr>"; //aangezien er nog 2 cellen bijkomen voor de acties
//nu hebben we de header cellen afgedrukt, nu gaan we ze vol inhoud zetten!
while($lijst=mysql_fetch_array($query)){
echo "<tr>";//een nieuwe rij maken
for ($i=0;$i < $kolommen; $i++) {
echo "<td>", substr($lijst[$i],0,$aantal_tekens), "</td>"; //niet het gehele veld tonen...
}
//acties toevoegen en de rij sluiten
echo "<td><a href=\"",$_SERVER['PHP_SELF'],"?actie=edit&id=".$lijst['0']."\" alt=\"editeren\"> editeren </a></td><td><a href=\"",$)_SERVER['PHP_SELF'],"?actie=del&id=".$lijst['0']."\" alt=\"verwijderen\"> verwijderen </a></td></tr>";
}
//nog een rij maken voor het toevoeg formulier
echo "<tr><td colspan=\""; echo $kolommen+2; echo "\" valign=\"top\" align=\"center\"><form name=\"toevoegen\" action=\"{$PHP_SELF}\" method=\"POST\">\n<br><table border=\"1\">";
for ($i = 0; $i < $kolommen; $i++) {
if (mysql_field_name($veld_namen, $i)!=$id_naam)
echo "<tr><td>",mysql_field_name($veld_namen, $i),": </td><td><input type=\"text\" size=\"50\" name=\"",mysql_field_name($veld_namen, $i),"\" value=\"",$lijst[$i],"\"></td></tr>\n";
}
echo "<tr><td colspan=\"2\"><input type=\"submit\" name=\"uitvoer\" value=\"Nieuw Record\"></td></tr></table></form>\n </td></tr>";
echo "</table>";
} //rest_tonen?
?>
</body></html>
<?
//TE EDITEREN
$tabel="";//naam tabel
$aantal_tekens=100;//aantal lettertekens dat er getoond moeten worden
$id_naam="id";//naam van het veld met de unieke waarden, ZEER BELANGRIJK!
$database_naam="";//naam van de database (wordt meer dan 1x gebruikt!)