formulier in php

Status
Niet open voor verdere reacties.

Jeboem

Gebruiker
Lid geworden
18 jan 2002
Berichten
178
Hoi,

Ik zit met een probleem(pje).
Ik ben bezig met het maken van een formulier.
Dit gaat opzich wel goed...hij voert alles verder goed uit.
Maar in het formulier heb ik 2 knoppen.
In knop dat heet wijzigen en 1 knop heet verwijderen.
door op de knop wijzigen of verwijderen teklikken gaat je naar een nieuwe pagina.

als je op de knop wijzigen klikt wordt het alles wat je verandert in het formulier gewijzigt in de database.Druk je op de knop verwijderen dan worden de gegevens in de database gewijzigt. Dit werkt allemaal goed.

Maar bv als je de gegevens gewijzigt hebt dan komt er testaan "De gegevens succes vol gewijzigt" en daar achter komt dus testaan uw advertentie is NIET verwijdert. Dit is dus niet de bedoeling. Als ik de gegevens wijzig moet dus alleen komen testaan uw advertentie is gewijzigt. En daar moet niet achter aan komen dat de gegevens niet zijn verwijderd.


Op die pagina staan ongeveer het volgende.

PHP:
if ($wijzigen) {
			
			
			
			include "config.php";
			mysql_connect("$Host", "$Login", "$Wachtwoord");
			mysql_select_db("$DBNaam");
			$sql = "UPDATE va_adv SET adv_prijs='$adv_prijs', adv_onderwerp='$adv_onderwerp', adv_omschr='$adv_omschr', adv_soort='$adv_soort' WHERE adv_id = $userid"
			or die (mysql_error());
			mysql_query($sql) or die (mysql_error());
			
			Echo "Uw advertentie is succes vol gewijzigt";
			}
			else {
			Echo $userid ; 
			Echo $DBNaam ;
			Echo "Uw advertentie is niet gewijzigt, Probeer het nog een keer";
			Echo "klik <a href=javascript:history.back()>hier</a> om terug tegaan";
			}}
			
			if ($Submit2) {			
			include "config.php";
			mysql_connect("$Host", "$Login", "$Wachtwoord");
			mysql_select_db("$DBNaam");
			$sql = "DELETE FROM va_adv WHERE adv_id = $userid"
			or die (mysql_error());
			mysql_query($sql) or die (mysql_error());
			
			Echo "Uw advertentie is succes vol verwijderdt";
			} else {
			
			Echo "Uw advertentie is niet verwijderd, Probeer het nog een keer";
			Echo "klik <a href=javascript:history.back()>hier</a> om terug tegaan";
			}

Ik weet wel wat het probleem is alleen ik heb geen idee hoe ik het moet oplossen. Moet dit anders door middel van functie's??? (Dat is dus net weer iets waar ik geen hol van snap)



iemand enig idee??

greetz Jeboem
 
PHP:
  if((isset($_POST["adv_prijs"]) == TRUE) AND (isset($_POST["adv_onderwerp"]) == TRUE) AND (isset($_POST["adv_omschr"]) == TRUE) AND (isset($_POST["adv_soort"]) == TRUE) AND (isset($_POST["userid"]) == TRUE) AND (isset($_POST["wijzigen"]) == TRUE)) // Ik neem aan dat de userid ook in het formulier staat
  {
  $adv_prijs = htmlspecialchars($_POST["adv_prijs"],ENT_QUOTES); 
  $adv_onderwerp = htmlspecialchars($_POST["onderwerp"],ENT_QUOTES);
  $adv_omschr = htmlspecialchars($_POST["omschr"],ENT_QUOTES);
  $adv_soort = htmlspecialchars($_POST["adv_soort"],ENT_QUOTES);
  // De bovenste 4 dingen doe ik met htmlspecialchars(), zodat mensen geen vervelende html codes / php codes in kunnen voegen
  $userid = ((int) $_POST["userid"]); // Ik ga er ook vanuit dat userid een getal is ...
  include("config.php");
  @mysql_connect($Host,$Login,$Wachtwoord) or die(mysql_error());
  @mysql_select_db($DBNaam) or die(mysql_error());
  $sql = "UPDATE va_adv SET adv_prijs = '" . $adv_prijs . "',adv_onderwerp = '" . $adv_onderwerp . "',adv_omschr='" . $adv_omschr . "', adv_soort='" . $adv_soort . "' WHERE adv_id = '" . $userid . "'";
  $result = mysql_query($sql) or die (mysql_error());
    if(mysql_affected_rows($result) > 0)
    {
    echo "Uw advertentie is succes vol gewijzigt";
    }
    else
    {
    echo "Query geslaagd, maar er zijn geen rijen in de database gewijzigd";
    }
  }
  elseif((isset($_POST["Submit2"]) == TRUE) AND (isset($_POST["userid"]) == TRUE)) // Ik ga er van uit dat de userid gepost moet worden om de advertentie te verwijderen...
  {
  include("config.php");
  @mysql_connect($Host,$Login,$Wachtwoord) or die(mysql_error());
  @mysql_select_db($DBNaam) or die(mysql_error());
  $sql = "DELETE FROM va_adv WHERE adv_id = '" . $userid . "'"
  $result = mysql_query($sql) or die (mysql_error());
    if(mysql_affected_rows($result) > 0)
    {
    echo "Uw advertentie is succes vol verwijderd"; // verwijderd, met een d ...
    }
    else
    {
    echo "Query geslaagd, maar er zijn geen rijen in de database verwijderd";
    }
  }
  else
  {
  echo "Plak hier een formulier of zo ...";
  }
Vraag aub niet om een uitleg, dan ben ik 3 uur bezig. Als het script niet (goed) werkt, post dan ff weer. En als hij wel werkt, laat het dan ook ff weten ? ;)

Succes :thumb:
 
Laatst bewerkt:
zal het ff proberen.....
alvast bedankt.

Maar zijn dit nou functie's? of is dit weer wat anders. want ik snap het wel zo ongeveer.

greetz Jeboem
 
Nou ik heb het geprobeert...maar het script voert niks uit...het enigste wat wordt weer gegeven is dat stuk je van plant hier een formulier neer...dus wijzigen doet niks en verwijderen ook niet....ik dacht dat ik het dus wel snapte maar niet helemaal. je zegt dat je er vanuit gaat dat $userid gepost moet worden. $userid is een verborgen veld in het formulier dat wordt mee gestuurdt naar de volgende pagina en het is inderdaad een getal voor in de database want elke tabel met gegevens heeft een id om deze telaten uitlezen verwijden etc. mischien dat de fout daarzo in zit? je kunt anders ook even testen mischien op www.vogeladvertentie.nl je kunt je zo registreren en even een advertentie plaatsen. en probeer hem dan maar eens teverwijderen of aan tepassen.

mischien dat je het dan iets beter snapt.

greetz jeboem en bedankt voor de moeite. denk dat het nog wel een pokke werk was.

ps. je was ook nog een ; vergeten maar die heb ik inmiddels al verholpen.

PHP:
 $sql = "DELETE FROM va_adv WHERE adv_id = '" . $userid . "'"

moet zijn

PHP:
 $sql = "DELETE FROM va_adv WHERE adv_id = '" . $userid . "'";
 
Geplaatst door Jeboem
Nou ik heb het geprobeert...maar het script voert niks uit...het enigste wat wordt weer gegeven is dat stuk je van plant hier een formulier neer...dus wijzigen doet niks en verwijderen ook niet....
Met 'plant hier een formulier neer' bedoelde ik ook letterlijk plant daar een formulier neer waarin die advertentie verwijderen / wijzigen gegevens worden verstuurd :D... Ik heb het er niet voor de lol neergezet :p
Hoe mijn code werkt: eerste controleert het of er een advertentie gewijzigd moet worden, dan controleert het of er een advertentie verwijderd moet worden en als hij beide controles passeert, er is dan niets gepost of de verkeerde dingen zijn gepost, dan moet hij dus het formulier weergeven ==> "Plak hier een formulier of zo ...". Hier moet je zelf een formulier plakken, dit mag je zelf doen ;).
ik dacht dat ik het dus wel snapte maar niet helemaal. je zegt dat je er vanuit gaat dat $userid gepost moet worden. $userid is een verborgen veld in het formulier dat wordt mee gestuurdt naar de volgende pagina en het is inderdaad een getal voor in de database want elke tabel met gegevens heeft een id om deze telaten uitlezen verwijden etc.
Heel mooi, dan klopt mijn code.
mischien dat de fout daarzo in zit? je kunt anders ook even testen mischien op www.vogeladvertentie.nl je kunt je zo registreren en even een advertentie plaatsen. en probeer hem dan maar eens teverwijderen of aan tepassen.
Zorg eerst maar dat je een formulier plakt op de daarvoor bestemde plek, met de tekstvelden die je wil gebruiken en waar ik in mijn script ook op controleer ;).
greetz jeboem en bedankt voor de moeite. denk dat het nog wel een pokke werk was.
Mwoa ... kwartiertje :).

ps. je was ook nog een ; vergeten maar die heb ik inmiddels al verholpen.


PHP:
 $sql = "DELETE FROM va_adv WHERE adv_id = '" . $userid . "'"

moet zijn

PHP:
 $sql = "DELETE FROM va_adv WHERE adv_id = '" . $userid . "'";
Goed gezien :). Tikfoutje ...
 
nou werkt het bijna.....ik heb de dubbele " vervangen voor enkele ' bij de $_post() en het verwijderen werkt nu. alleen het wijzigen nog niet. Ik heb zo als je al hebt gemerkt dus zelf ook wel een beetje zitten zoeken en knooien. Het werkt dus bijna maar nog niet helemaal.
Het formuliertje plant ik er nu direkt even tussen. Snap alleen het nu er even niet van en als ik het formulier er neer zet dan krijg ik naar mijn mening een error omdat als ik de advertentie verwijder om dat dan de advertentie id niet meer bestaat.....en dus de gegevens ook niet meer in het formulier kunnen komen testaan toch? Ik hoop dat je me nog een beetje snapt. uitleggen is nie mijn sterkste vak.
Maar ik zet hem er wel neer :D

greetz jeboem
 
het formulier staat er nu in.
Het verwijderen werkt wel alleen met error.

PHP:
if(mysql_affected_rows($result) > 0)
    {
    echo "Uw advertentie is succes vol verwijderd"; // verwijderd, met een d ...
    }
    else
    {
    echo "Query geslaagd, maar er zijn geen rijen in de database verwijderd";
    }

if(mysql_affected_rows($result) >0) geeft de volgende error:

Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in /home/halsband/public_html/adv/wijzigen.php on line 95
Query geslaagd, maar er zijn geen rijen in de database verwijderd

Terwijl er wel een rij is verwijderd.

het wijzigen werkt nu ook bijna. de adv_soort moest adv_rubriek worden dus die was niet TRUE maar FALSE dus sloeg ie het hele wijzigen gebeuren over. Alleen de rijen in de gewijzigde rij worden nu blanco. Dus hij voert geen gevens meer in de database.

bedankt voor het mee denken!!
greetz jeboem
 
Laatst bewerkt:
Ah ja, foutje ...
Verander
PHP:
if(mysql_affected_rows($result) > 0)
in
PHP:
if(mysql_affected_rows() > 0)
mysql_affected_rows() moet namelijk niets tussen die () bevatten, hij checkt gewoon de laatst uitgevoerde query.
En bij het wijzigen verander je toch gewoon 'adv_soort' in 'adv_rubriek' ? ;)

Succes :thumb:
 
Nou hij werkt dus bijna....maar nog niet helemaal :confused:

Als ik de gegevens uit de formulier ga wijzigen dan veranderd alleen de adv_prijs, en de rest wordt blanco. Dus op 1 of ander manier werkt er iets niet helemaal zo als het hoort...ik ben al tijdje bezig om het op telossen maar ik kan er niet meer uit komen. Heb jij nog enig idee JP?

Alsvast bedankt!
greetz Jeboem

EDIT: Het is reeds opgelost. twas maar een klein foutje

PHP:
 $adv_prijs = htmlspecialchars($_POST["adv_prijs"],ENT_QUOTES); 
  $adv_onderwerp = htmlspecialchars($_POST["onderwerp"],ENT_QUOTES);
  $adv_omschr = htmlspecialchars($_POST["omschr"],ENT_QUOTES);
  $adv_soort = htmlspecialchars($_POST["adv_soort"],ENT_QUOTES);

had moeten zijn:

PHP:
 $adv_prijs = htmlspecialchars($_POST["adv_prijs"],ENT_QUOTES); 
  $adv_onderwerp = htmlspecialchars($_POST["adv_onderwerp"],ENT_QUOTES);
  $adv_omschr = htmlspecialchars($_POST["adv_omschr"],ENT_QUOTES);
  $adv_soort = htmlspecialchars($_POST["adv_soort"],ENT_QUOTES);

was dus al een tijdje aan het zoeken geweest maar ik zag het nu net :D

JP bedankt! het werkt als een trein.

greetz Jeboem
 
Laatst bewerkt:
Geplaatst door Jeboem
EDIT: Het is reeds opgelost. twas maar een klein foutje

PHP:
 $adv_prijs = htmlspecialchars($_POST["adv_prijs"],ENT_QUOTES); 
  $adv_onderwerp = htmlspecialchars($_POST["onderwerp"],ENT_QUOTES);
  $adv_omschr = htmlspecialchars($_POST["omschr"],ENT_QUOTES);
  $adv_soort = htmlspecialchars($_POST["adv_soort"],ENT_QUOTES);

had moeten zijn:

PHP:
 $adv_prijs = htmlspecialchars($_POST["adv_prijs"],ENT_QUOTES); 
  $adv_onderwerp = htmlspecialchars($_POST["adv_onderwerp"],ENT_QUOTES);
  $adv_omschr = htmlspecialchars($_POST["adv_omschr"],ENT_QUOTES);
  $adv_soort = htmlspecialchars($_POST["adv_soort"],ENT_QUOTES);

was dus al een tijdje aan het zoeken geweest maar ik zag het nu net :D
Tsja...normaal test ik het script altijd ff voor posten, maar wanneer er databases & tabellen aan te pas komen wordt het nogal lastig testen ;).
Maar fijn dat het probleem opgelost is :thumb:

JP bedankt! het werkt als een trein.

greetz Jeboem
No prob :).

Succes er verder mee :thumb:

p.s. Status van de vraag op opgelost gezet ;)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan