hoe een veld in mijn record updaten.
$data - array of field values of the record being processed. To access specific
field value use $data["FieldName"]
Code (php)
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.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 16/08/2020 17:50:23 door - Ariën -
Een lege waarde? Of een NULL?
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.
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
Heb je al een database?
ja natuurlijk
INSERT
Wat heb je al geprobeerd? Zie Gewijzigd op 16/08/2020 19:55:32 door - SanThe -
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 .
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
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.
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
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;
{
$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 )
Maak er dit van : $data['bg']
Code (php)
1
2
3
2
3
<?php
$sql = "UPDATE database_bel SET bg = '". $data["bg"] ."' WHERE Code='". $code ."'";
?>
$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.