Cel updaten

Status
Niet open voor verdere reacties.

Milenko

Gebruiker
Lid geworden
27 aug 2009
Berichten
465
Hi,

Ik heb een vraag over het updaten van een cel. Ik kwam er zelf helemaal niet uit, vandaar mijn vraag.

In de tabel staat een kolom Personen. Daarin kan bijvoorbeeld staan:

Personen
------------
J. Jansen <br />
K. Pietersen <br />
H. elpmij <br />


Mensen kunnen op een link "inschrijven" klikken op mijn website en zij worden dan vervolgens toegevoegd. (Hun naam staat opgeslagen in een get en ik plak er zelf <br /> achter).
Dat doe ik d.m.v.:
PHP:
$id=$_GET['id'];
$name=$_GET['user']." <br />";

$sql="SELECT Zitplaatsen,Personen FROM reizen WHERE Id='$id'";
$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);

$zitplaatsen=$row['Zitplaatsen'] - 1;
$personen=$row['Personen'].$name;

$new_sql="UPDATE reizen SET Zitplaatsen='$zitplaatsen',Personen='$personen' WHERE Id='$id'";
mysql_query($new_sql);

Nu wil ik dat mensen zich ook weer kunnen uitschrijven. Het is me al gelukt om de zitplaatsen weer met 1 te verhogen. Het probleem zit hem bij de personen. Is er ook een mogelijkheid om er een naam af te halen? Zelf had ik dit al geprobeerd:
PHP:
$personen=$row['Personen'] - $name;
Maar dat werkt natuurlijk niet...

Iemand die een goede oplossing weet?

Groetjes Milenko
 
Ten eerste is deze code natuurlijk erg kwetsbaar voor SQL injection. Dat mag dus nooit live gaan. Je kunt natuurlijk een delete header meegeven in de GET functie. Vervolgens controleer je op de delete statement. Indien de delete statement aanwezig is in de URL zoek je de naam op. Indien dit een resultaat geeft verwijder je die rij uit de database en verhoog je zitplaatsen weer met 1.
 
Dat de code kwetsbaar is voor een sql injectie weet ik zelf ook. Maar die heb ik er nog niet in zitten omdat de code dan een stuk langer wordt. Toch goed dat je het even aanstipt.

verder kom ik niet echt uit je antwoord. Met name de laatste zin. Ik wil namelijk niet de hele rij verwijderen, maar alleen een stukje van een cel. Dus niet de hele rij, niet de hele cel, maar een stukje van een cel. Is dit mogelijk? Zo ja, hoe?
 
Dat begrijp ik niet helemaal. In dit stukje code haal je 1 regel op. Zo te zien een integer en een varchar. In de varchar plaats je alle namen van mensen die meegaan in een enkele string. Je kunt die naam toch eenvoudig verwijderen met een "str_replace" ?
 
Enig idee hoe ik dat zou kunnen doen? Ik zie namelijk door de bomen de code even niet meer.
 
PHP:
$id=$_GET['id'];
$name=$_GET['user']." <br />";
 
$sql="SELECT Zitplaatsen,Personen FROM reizen WHERE Id='$id'";
$result=mysql_query($sql);
$row=mysql_fetch_assoc($result);

$personen=$row['Personen'];
$personen = str_replace($name,"", $personen,$aantal);
if ($aantal)
{
$zitplaatsen=$row['Zitplaatsen'] + $aantal;
 $new_sql="UPDATE reizen SET Zitplaatsen='$zitplaatsen',Personen='$personen' WHERE Id='$id'";
mysql_query($new_sql);
}

Even uit de losse pols. Natuurlijk is het beter om gewoon je database beter te optimaliseren en een user-ID te knopen aan een reis-ID en zitplaatsen dynamisch te doen tov een zitplaatsen max gekoppeld aan de reis-ID
 
Laatst bewerkt:
Je code werkt goed :) Je miste alleen een ; achter lij 8, maar je zei ook "Even uit de losse pols". Het werkt echt toppie! Bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan