Mysql wijzigen of verwijderen
Ik heb hier al een tijdje geleden een topic over aangemaakt maar laat ik nu wat duidelijker maken:
Ik heb een pagina gemaakt dat alle records uit een table uit mn datbase weergeeft, Nu wil ik 2 knoppen daaronder met: verwijderen en wijzigen.
Ik heb het dat als je op een knop drukt dat je naar een link met de id die in de database staat. (bijv: /edit.php?edit=4 die 4 is de id)
ik wil dat ik naar een pagina ga waar ik de data kan wijzigen (die data waar die knoppen onder stonden) en dat ik wil ik ook met het verwijderen dat die data kan verwijderen.
Het zal fijn zijn als het wordt aangeleverd in een hele script, ik zit nu te prutsen met allemaal losse scriptjes en aangezien ik een noob ben in php zou dat handig zijn dat ik het kan kopieeren en dan naar mijn doeleinde kan aanpassen.
ALVAST BEDANKT VOOR DE MOEITE!
Groetjes,
Matthijs
Maar goed, ik kan je wel een stukje op weg helpen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if($_SERVER['REQUEST_METHOD']=="GET") {
if($_GET['actie']=="edit") {
if(isset($_GET['id'])) {
// wijzig de boel.
}
} elseif($_GET['actie']=="delete") {
if(isset($_GET['id'])) {
// verwijder de boel.
}
} else {
echo "Onbekende actie! Wat wil je nou precies doen?";
}
} else {
// hier je formulier met twee submit-knoppen, genaamd 'edit' en 'delete'
}
?>
if($_SERVER['REQUEST_METHOD']=="GET") {
if($_GET['actie']=="edit") {
if(isset($_GET['id'])) {
// wijzig de boel.
}
} elseif($_GET['actie']=="delete") {
if(isset($_GET['id'])) {
// verwijder de boel.
}
} else {
echo "Onbekende actie! Wat wil je nou precies doen?";
}
} else {
// hier je formulier met twee submit-knoppen, genaamd 'edit' en 'delete'
}
?>
Ik durf te wedden dat je hiermee een flink stuk verder moeten gaan komen, en anders kunnen we in dit topic je verder helpen.
Gewijzigd op 05/06/2014 17:39:48 door - Ariën -
Matthijs P op 05/06/2014 17:10:14:
Ik heb een pagina gemaakt dat alle records uit een table uit mn datbase weergeeft, Nu wil ik 2 knoppen daaronder met: verwijderen en wijzigen.
Daaronder als 'onder alle records' gaat niet werken; dan zou je niet weten welk record het betreft.
Zou dus op elke regel / elk record buttons toevoegen: verwijderen en aanpassen. Hier koppel je het idee aan.
Matthijs P op 05/06/2014 17:10:14:
Het zal fijn zijn als het wordt aangeleverd in een hele script,
Plaats dan een vacature. Hulp willen we best geven, maar enige eigeninbreng wordt wel verwacht.
Matthijs P op 05/06/2014 17:10:14:
ik zit nu te prutsen met allemaal losse scriptjes en aangezien ik een noob ben in php zou dat handig zijn dat ik het kan kopieeren en dan naar mijn doeleinde kan aanpassen.
Wat heb je dan al? Waar loop je op vast?
Noob zijn we allemaal geweest; door scripts van anderen te bekijken, tuts te volgen en vragen te stellen hebben we allemaal geleerd.
Edit: Aar heeft al een mooie voorzet gegeven voor het script dat controleert of er op een link is geklikt/welke link is geklikt.
Gewijzigd op 05/06/2014 17:24:14 door Obelix Idefix
Lang leve mijn vaagheid, ik heb de pagina al waar die 2 linkjes staan laat maar zeggen.
dit heb ik al:
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
<html>
<head>
<title>Alles</title>
<link rel="stylesheet" type="text/css" href="styledashboard.css">
</head>
</html>
<?php
include_once('connect_db.php');
$res = mysql_query("SELECT id,toestel,type,aantal,kleur FROM overzicht");
while( $row = mysql_fetch_array($res) )
echo '<b> </b>'." <b>Toestel: </b> $row[toestel]<br/> <b>Type hoesje: </b>$row[type]<br/> <b>Kleur:</b> $row[kleur]<br/> <b>Aantal</b> $row[aantal] <br/>
<a href='edit.php?edit=$row[id]'>Bewerken</a> <a href='verwijderen.php?verwijderen=$row[id]'>Verwijderen</a> <br/><br/>";
?>
<head>
<title>Alles</title>
<link rel="stylesheet" type="text/css" href="styledashboard.css">
</head>
</html>
<?php
include_once('connect_db.php');
$res = mysql_query("SELECT id,toestel,type,aantal,kleur FROM overzicht");
while( $row = mysql_fetch_array($res) )
echo '<b> </b>'." <b>Toestel: </b> $row[toestel]<br/> <b>Type hoesje: </b>$row[type]<br/> <b>Kleur:</b> $row[kleur]<br/> <b>Aantal</b> $row[aantal] <br/>
<a href='edit.php?edit=$row[id]'>Bewerken</a> <a href='verwijderen.php?verwijderen=$row[id]'>Verwijderen</a> <br/><br/>";
?>
Ik zou graag een pagina hebben waar ik de data kan wijzigen en een pagina waar ik de data kan verwijderen
Groetjes,
Matthijs
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Alvast bedankt!
Alvast bedankt!
Gewijzigd op 05/06/2014 17:27:06 door - Ariën -
Gewijzigd op 05/06/2014 17:26:50 door - Ariën -
Ten aanzien van je code:
Mysql komt te vervallen, gebruik mysqli (of PDO)
Waar is de foutafhandeling bij je query?
Waarom mysql_fetch_array i.p.v. mysql_fetch_assoc? Je maakt geen gebruik van de array mogelijkheid.
Waarom begin je op regel 13 de echo met ' en gaat daarna over op "?
Sowieso is die regel vreemd; waarom beginnen met een vette spatie? Verder is inline-css niet echt meer van deze tijd. Op regel 14 heb je HTML-code staan (a href), maar werk je met ' Waarom niet met " (zoals op regel 4/gebruikelijk(er) is?
Of variabelen binnen/buiten quotes horen, zijn al meerdere topics verschenen.
script.php?actie=edit&id=42
of
script.php?actie=delete&id=1337
Gewijzigd op 05/06/2014 17:40:50 door - Ariën -
ik wil wel 2 pagina's dus als je bij het overzicht op wijzigen druk dat je naar een formuliertje gaat waar je het kan wijzigen en als je op verwijderen dat je de data die er staat verwijderd
Veel onderhoudsvriendelijker.
In mijn voorbeeld kan je toch twee formulieren kwijt? Voor wijzigen, en verwijderen.(bevestigen ervan)
Gewijzigd op 05/06/2014 17:58:06 door - Ariën -
http://prntscr.com/3px9zy
dit heb ik als ik op wijzigen druk wil ik een formulier waar ik de gegevens kan wijzigen.
en als ik op verwijderen druk dat de gegevens verwijderd worden
dit heb ik als ik op wijzigen druk wil ik een formulier waar ik de gegevens kan wijzigen.
en als ik op verwijderen druk dat de gegevens verwijderd worden
Heb je al iets met mijn opzet gedaan?
Alvast bedankt!
Matthijs P op 05/06/2014 21:31:31:
Wel gebruikt maar zou jij hem willen aanvullen voor mij?
Het is hier geen afhaalchinees..... ;-)
Als je het niet zelf wilt/kunt maken, plaats dan een vacature.
YAML
Gelukkig zijn deze eenvoudig op te lossen en dienen ze als leermoment, waardoor je kan achterhalen wat er gebeurt en wat je precies fout doet. Dus neem je tijd en borduur eens verder op mijn gegeven voorbeeld. Als je vast loopt, dan heb je naast PHPhulp een hoop mogelijkheden tot je beschikking, zoals Google, en de documentatie op PHP.net.
En als je dan nog vastloopt, of verdere vragen hebt waar je niet uitkomt, dan kan je altijd hier op het forum terecht. Jij bent immers diegene die een script wil bouwen om items te verwijderen en te wijzigen, en je hebt dit topic zelf in het Beginners-forum geplaatst. ;-)
Als je van mening bent dat het zelf echt niet gaat lukken, wat mij sterk lijkt, dan kan je altijd een vacature plaatsen in het Vacatureforum op onze site. Je hoeft er geen geld voor neer te leggen, want een tagje in de titel met[vrijwillig] mag natuurlijk ook, maar zelf proberen dat is natuurlijk het leukste, want daar leer je van, net als alle andere vele PHP-hulp'ers op dit forum.
Gewijzigd op 05/06/2014 22:33:40 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
include(connect_db.php);
{
die('Could not connect: ' . mysql_error());
}
$id = $_POST['id'];
$sql = 'DELETE FROM overzicht WHERE id='$id'';
mysql_select_db('htstelecom');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not delete data: ' . mysql_error());
}
echo "Data succesvol verwijderd!";
mysql_close($conn);
?>
include(connect_db.php);
{
die('Could not connect: ' . mysql_error());
}
$id = $_POST['id'];
$sql = 'DELETE FROM overzicht WHERE id='$id'';
mysql_select_db('htstelecom');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not delete data: ' . mysql_error());
}
echo "Data succesvol verwijderd!";
mysql_close($conn);
?>
- die() is niet echt nodig, je kan met if-else een betere controle doen als het om foutafhandeling gaat.
- Je connect_db.php hoort tussen quotes
- Je beveiligt je $_POST['id'] waarde niet met mysql_real_escape_string(), dus je bent nu makkelijk vatbaar voor een hack.
- Oriënteer je ook eens op MySQLi, omdat de mysql_*() functies op den duur gaan verdwijnen.
$id = $_POST['id'];
)
is dit dan goed?
http://php.net/mysql_real_escape_string.
Ik vraag me af of het gewoon niet beter is om te beginnen met de basis van PHP, gezien je de syntax niet onder de knie hebt, en ik een hoop fouten daarvan in je code zie.
Nee. Kijk eens naar Ik vraag me af of het gewoon niet beter is om te beginnen met de basis van PHP, gezien je de syntax niet onder de knie hebt, en ik een hoop fouten daarvan in je code zie.
Gewijzigd op 06/06/2014 14:57:09 door - Ariën -
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
mysql_connect("localhost","root","");
mysql_select_db("facturen");
$naam = $_POST['naam'];
$straat = $_POST['straat'];
$postcode = $_POST['postcode'];
$telefoonnummer = $_POST['telefoonnummer'];
$email = $_POST['email'];
//vanaf hier worden de gegevens in de database gezet//
$sql = "INSERT INTO facturen (naam, straat, postcode, telefoonnummer, email) VALUES ('".$naam."','".$straat."','".$postcode."','".$telefoonnummer."','".$email."')";
mysql_query($sql);
if (mysql_query($sql))
{
echo"Het is gelukt om uw gegevens in de Database in te voeren!";
}
else
{
echo"Het is niet gelukt uw gegevens in te voeren in de Database , Probeer het opnieuw of neem contact op met de maker van deze pagina!";
}
?>
mysql_connect("localhost","root","");
mysql_select_db("facturen");
$naam = $_POST['naam'];
$straat = $_POST['straat'];
$postcode = $_POST['postcode'];
$telefoonnummer = $_POST['telefoonnummer'];
$email = $_POST['email'];
//vanaf hier worden de gegevens in de database gezet//
$sql = "INSERT INTO facturen (naam, straat, postcode, telefoonnummer, email) VALUES ('".$naam."','".$straat."','".$postcode."','".$telefoonnummer."','".$email."')";
mysql_query($sql);
if (mysql_query($sql))
{
echo"Het is gelukt om uw gegevens in de Database in te voeren!";
}
else
{
echo"Het is niet gelukt uw gegevens in te voeren in de Database , Probeer het opnieuw of neem contact op met de maker van deze pagina!";
}
?>
<HTML>
<script>
<!--
function autoChange()
{
var timeID = setTimeout("location.href= 'nieuw.php'", 1000)
}
//-->
</script>
<BODY onLoad="autoChange()">
</BODY>
</HTML>
ik heb voor de duidelijkheid ff het wachtwoord weggelaten
wat is hier mis mee?
Matthijs P op 06/06/2014 20:01:56:
Ik heb een scipt waarmee ik gegevens in de database wil voegen maar het niet.
Wat gebeurt er wel dan?
Matthijs P op 06/06/2014 20:01:56:
wat is hier mis mee?
Het nodige ;-)
Je controleert niet of $_POST variabelen bestaan (isset).
Je controleert niet of e-mailadres voldoet aan gangbare eisen.
Je maakt onnodig nieuwe variabelen aan; gebruik gewoon $_POST waarden.
Je gebruikt mysql. Dit komt te vervallen; stap over op mysqli / PDO.
Je slaat de gegevens zonder enige beveiliging op in de database; veiligheidslek (mysqli_real_escape_string).
Heb je ook ergens doctype opgenomen in HTML?
Gewijzigd op 06/06/2014 20:16:27 door Obelix Idefix