hoe een veld in mijn record updaten.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Berta Pappens

Berta Pappens

16/08/2020 17:33:19
Quote Anchor link
Ik heb :

$data - array of field values of the record being processed. To access specific
field value use $data["FieldName"]

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
<?php
if ($z=="S")
{

$data["bg"]= "-".$a.".".substr($c,2,6) ;
}

else
{
$data["bg"]= $a.".".substr($c,2,6) ;
}


$y=substr($data["Lengtegraad"],0,1);
if ($y=="W")
{

$data["lg"]= "-".$d.".".substr($f,2,6) ;
}

else
{
$data["lg"]= $d.".".substr($f,2,6) ;
}

?>


Ik geef een listing terug en de lg en bg zijn zichtbaar, maar zijn in het veld niet ingeschreven.
Nu zou ik willen dat ze ook in het veld lg en bg opgenomen worden in de database
maw het veld invullen met hetgeen in $data["lg"] staat.

Heeft iemand een Idee hoe ik dit kan doen in het if statement.

Dank bij voorbaat

Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht. Quote-tags zijn voorbehouden aan citeren van berichten.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 16/08/2020 17:50:23 door - Ariën -
 
PHP hulp

PHP hulp

29/03/2024 14:46:51
 
- Ariën  -
Beheerder

- Ariën -

16/08/2020 17:52:30
Quote Anchor link
Wat staat er dan in de database als ze niet ingevuld zijn?
Een lege waarde? Of een NULL?
 
Ozzie PHP

Ozzie PHP

16/08/2020 18:23:25
Quote Anchor link
Ik weet niet of ik je goed begrijp, maar volgens mij wil je iets opslaan in een database. Echter, ik zie daar helemaal geen code voor in jouw voorbeeld.
 
Berta Pappens

Berta Pappens

16/08/2020 19:40:16
Quote Anchor link
Ik wil inderdaad de inhoud van $data["bg"] opslaan in het veld bg
momenteel is het enkel aanwezig in de array.

Toevoeging op 16/08/2020 19:42:41:

Arien,

Momenteel staat er niks in het veld bg en lg , maar in de array zijn de waardes er wel.
Gewijzigd op 16/08/2020 19:40:54 door Berta Pappens
 
- SanThe -

- SanThe -

16/08/2020 19:43:45
Quote Anchor link
Heb je al een database?
 
Berta Pappens

Berta Pappens

16/08/2020 19:44:24
Quote Anchor link
ja natuurlijk
 
- SanThe -

- SanThe -

16/08/2020 19:51:18
Quote Anchor link
Wat heb je al geprobeerd? Zie INSERT
Gewijzigd op 16/08/2020 19:55:32 door - SanThe -
 
Berta Pappens

Berta Pappens

16/08/2020 19:58:39
Quote Anchor link
Hallo,

Het is niet de bedoeling om een nieuw record toe te voegen maar om het veld bg en lg te updaten met de gegevens uit de array .
 
- SanThe -

- SanThe -

16/08/2020 20:05:26
 
Adoptive Solution

Adoptive Solution

16/08/2020 21:12:23
Quote Anchor link
Met een database met 200.000 records en een programma van $500, mag je aannemen dat je niet alleen weet hoe je gegevens invoert, maar ook weet hoe je die gegevens kan wijzigen.

https://www.phphulp.nl/php/forum/topic/werken-met-tijd/103589/#750043

Zeker als de begrippen SELECT, INSERT en UPDATE in hetzelfde topic worden genoemd.

https://www.phphulp.nl/php/forum/topic/werken-met-tijd/103589/#750023
 
Thomas van den Heuvel

Thomas van den Heuvel

17/08/2020 00:57:53
Quote Anchor link
Quote:
Ik geef een listing terug en de lg en bg zijn zichtbaar, maar zijn in het veld niet ingeschreven.

Maar zoals de code op dit moment in elkaar zit, krijgen zowel $data['bg'] alsook $data['lg'] een waarde. Tenzij deze op een of andere manier elkaar volgens een op dit moment onnavolgbare logica uitsluiten? Dit komt in ieder geval niet tot uiting in bovenstaande code.

Quote:
Nu zou ik willen dat ze ook in het veld lg en bg opgenomen worden in de database
maw het veld invullen met hetgeen in $data["lg"] staat.

Okay? Zie zover niet helemaal het probleem? Hebben de kolommen in de database corresponderende namen?

Quote:
Heeft iemand een Idee hoe ik dit kan doen in het if statement.

Het verzamelen van de data in $data en het opbouwen+uitvoeren van de query hebben in principe niet zoveel met elkaar te maken. Deze acties zou ik dus ook niet met elkaar vermengen/combineren. Het zijn twee verschillende dingen. Beter om dit in twee verschillende stappen op te splitsen.

Hoe zit op dit moment de INSERT/UPDATE query er uit? En waar zit precies de moeilijkheid? Komt het bijvoorbeeld voor dat $data meer of minder kolommen kan bevatten en dat dus in wezen de query er elke keer anders uit ziet / andere kolommen toevoegt / bijwerkt?
Gewijzigd op 17/08/2020 01:00:31 door Thomas van den Heuvel
 
Berta Pappens

Berta Pappens

17/08/2020 07:35:06
Quote Anchor link
Thomas
ziehier nog eens de ganse code en uitleg :
List page : before record processed.
Description
Occurs before record is processed
Return true if you like to display row in the list, return false otherwise

Parameters
$data - array of field values of the record being processed. To access specific
field value use $data["FieldName"]
"rs" is an alternate name for this parameter.
$pageObject - an object of Page class representing the current page
Quote:
function BeforeProcessRowList($data, $pageObject)
{
$code = $data["Code"];
$data['LINK']="http://coord.info/" .$data['Code'];
$b=0;
$a=0;
$c=0 ;
$d=0;
$e=0;
$f=0;
$x=0;
$y="";
$z="";

$breedte=$data["Breedtegraad"];
$lengte=$data["Lengtegraad"];
$x= strlen("$lengte");


$a=substr($breedte,1,2);
$b=substr($breedte,6,6);
//$d=substr($lengte,1,2);
//$e=substr($lengte,5,6);

if (strlen($data["Lengtegraad"])== 12)
{
$e=substr($lengte,6,6);
$d=substr($lengte,1,2);
}
if (strlen($data["Lengtegraad"])>= 13)
{
$e=substr($lengte,7,6);
$d=substr($lengte,1,3);
}

intval($e);
intval($b);
$c=$b/60;
$f=$e/60;
$z=substr($data["Breedtegraad"],0,1);

if ($z=="S")
{
$data["bg"]= "-".$a.".".substr($c,2,6) ;
}
else
{
$data["bg"]= $a.".".substr($c,2,6) ;
$sql = "UPDATE database_bel SET bg =$data["bg"] WHERE Code=$code";
}

$y=substr($data["Lengtegraad"],0,1);
if ($y=="W")
{
$data["lg"]= "-".$d.".".substr($f,2,6) ;
}
else
{
$data["lg"]= $d.".".substr($f,2,6) ;
}
// Place event code here.
// Use "Add Action" button to add code snippets.

return true;




$data["bg"]= $a.".".substr($c,2,6) ;(Dit doet hij ferfect)

$sql = "UPDATE database_bel SET bg =$data["bg"] WHERE Code=$code";(dit doet hij niet )
 
Adoptive Solution

Adoptive Solution

17/08/2020 09:39:02
Quote Anchor link
Maak er dit van : $data['bg']
 
Ivo P

Ivo P

17/08/2020 09:56:45
Quote Anchor link
Je gaat mis met je quotes:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= "UPDATE database_bel SET bg = '". $data["bg"] ."' WHERE Code='". $code ."'";
?>


Even los van issues al sql-injectie of gewoon fouten als er een ' in je codes zit.

MAAR:

$bg wordt afgeleid van waarden in andere kolommen.

Stel we doen dit met een veld Voorletters en dat leid je dan af van Voornaam.

$voorletter = substr($voornaam, 0,1);

Werkt prima en dan sla je vervolgens die $voorletter op.
Maar dan bedenkt iemand dat hij liever niet meer Johannes heet, maar Hannes.

Dan blijft je voorletter op J staan.
En dat is strijdig.

En dat is hier niet zo heel erg in het geval van een voorletter, maar je kunt jouw coordinaten misschien eerst naar Parijs laten wijzen, en daarna aanpassen naar Berlijn.
Wat gaat er mis, als $bg toch op Parijs blijft staan, terwijl de rest naar Berlijn gaat?


Daarom zou je nooit afgeleide data moeten opslaan.
Of áls je het dan voor het gemak als wilt doen, zorg dan dat het altijd 100% klopt.
Dus niet door PHP laten bijwerken tijdens het weergeven, maar je database het met een trigger laten doen.

Een trigger die direct bij de INSERT of UPDATE de afgeleide velden vast berekent.
 



Overzicht Reageren

 
 

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.