Vraagje omtrent insert functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ralph vander tang

ralph vander tang

26/05/2014 12:20:34
Quote Anchor link
Beste iedereen, ik heb een vraagje omtrent mijn insert functie die ik probeer te schrijven in oop php.
dit moet ik ondanks mijn studie in mijn eigen tijd doen om dat school hier niks van wil weten en het mij een betere manier van programeren lijkt dan dat ik op school krijg.

nu doet alleen mijn insert functie het niet, terwijl ik geen errors terug krijg iemand een suggestie?
code staat hier onder.

de insert functie.
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
21
22
<?php
Public function insert(){
        if(!$this->table) {die('geen tabel geselecteerd.');}
        if(!$this->fields) {die('geen waardes geselecteerd.');}
        
        $string='';
        foreach($this->fields as $key=> $value){
            $keys[] = $key;
            $params[":".$key] = $value;
        }

        
        // opbouwen query.
        $query = "INSERT INTO ".$this->table ." (";
        $query .= join(", ", $keys);
        $query .= ") VALUES (";
        $query .= join(", ", array_keys($params));
        $query .= ")";
        
        $prep = $this->db->prepare($query);
        $prep->execute($params);
    }

?>


de rest.
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
21
22
23
24
25
<?php
include_once('Database.php');

$db = new Database();

//het setten van de database gevens zodat je kan conecten.
$db->setServer('localhost');
$db->setUsername('root');
$db->setDatabase('test');
$db->setPassword('');

// connect.
$db->connect();

//table select.
$db->setTable('naw');

// setten van inputvelden
$db->setFields('naam', 'Ralph');
$db->setFields('naam', 'Kelly');

// uitvoeren insert query.
echo $db->insert();

?>
 
PHP hulp

PHP hulp

06/05/2024 14:59:02
 
Michael -

Michael -

26/05/2014 12:24:33
Quote Anchor link
OOP kun je het niet noemen. Fouten vang je op met exceptions en zeker nooit met die()
Daarnaast vind ik het nut van een eigen functie van een bestaande functie maken totale onzin. Gebruik gewoon de class van pdo i.p.v. jezelf beperkingen opleggen met je eigen class.
 
Ralph vander tang

ralph vander tang

26/05/2014 12:25:48
Quote Anchor link
ik maak deze class omdat ik het wil begrijpen
 
Erwin H

Erwin H

26/05/2014 12:29:08
Quote Anchor link
Het gebruik van die() is inderdaad not done, maar het bouwen van een dergelijke class kan wel voordelen hebben. PDO maakt nu eenmaal geen queries voor je.

Wat er fout gaat is echter niet te zeggen, omdat je zo te zien geen errorhandling hebt om het uitvoeren van je query.
 
Ralph vander tang

ralph vander tang

26/05/2014 12:30:08
Quote Anchor link
hoe kan ik een degelijk error handling maken
 
Erwin H

Erwin H

26/05/2014 12:52:56
 
Ralph vander tang

ralph vander tang

26/05/2014 12:53:46
Quote Anchor link
oke zal ik daar is gaan kijken
dank je


Toevoeging op 26/05/2014 13:10:42:

heb hem werkend gekregen gaf een verkeerde naam mee XD
 
Donny Wie weet

Donny Wie weet

26/05/2014 16:15:37
Quote Anchor link
Offtopic: is Try & Catch een goede foutafhandeling?
 
Ralph vander tang

ralph vander tang

26/05/2014 16:27:45
Quote Anchor link
hij staat er tussen en heeft mij geholpen de problemen op te lossen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/05/2014 19:53:30
Quote Anchor link
@Donny,

de Try/catch methode kan gebruikt worden om fouten af te handelen. de Try/catch methode zelf is een methode om de fouten op te vangen waardoor de foutmelding nog niet op het scherm komt en je script niet direct afgebroken wordt.

Naar ik begrepen en ook gezien heb zijn er twee duidelijke stromingen in PHP land. De ene stroming gebruikt try/catch aan de lopende band en de andere stroming het liefst helemaal niet.
 
Ralph vander tang

ralph vander tang

26/05/2014 22:18:25
Quote Anchor link
nu nog een probleem oplossen

nu nog de joins toevoegen aan mijn insert functie.
iemand suggesties hoe ik dat kan oplossen?

Mvg ralph
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/05/2014 22:48:28
Quote Anchor link
kun je de complete class even als download aanbieden? dan kan ik hier wat testen
 
Ralph vander tang

ralph vander tang

26/05/2014 22:55:04
Quote Anchor link
ik can hier de hele class plaatsen maar weet niet hoe je hem kan aanbieden om te downloaden

Zal hem zo wel ff op pastebin zetten


Toevoeging op 26/05/2014 23:09:29:

http://pastebin.com/kRWtUgX0 hier is de hele class maar is nog work in progress
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/05/2014 23:57:36
Quote Anchor link
Grappig maar in principe werkt je code wel.

Het enigste wat je moet doen is

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
// eerste record
$db->setFields('naam', 'Ralph');
$db->insert();

//tweede record
$db->setFields('naam', 'Kelly');
$db->insert();
?>


stel dat je tabel nu twee kolommen heeft bijvoorbeeld naam en email dan krijg je dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
// eerste record
$db->setFields('naam', 'Ralph');
$db->setFields('email', '[email protected]');
$db->insert();

//tweede record
$db->setFields('naam', 'Kelly');
$db->setFields('email', '[email protected]');
$db->insert();
?>



Toevoeging op 27/05/2014 00:00:15:

Denk nog even om je logica:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
        public function setFields($fieldName, $fieldValue) {
                $this->fields[$fieldName] = $fieldValue;
        }

?>

Hoeveel fields 'set' je met deze functie? Maar één hé? Dan zou ik die s maar weghalen zodat het enkelvoud wordt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
        public function setField($fieldName, $fieldValue) {
                $this->fields[$fieldName] = $fieldValue;
        }

?>
 
Ralph vander tang

ralph vander tang

27/05/2014 00:01:07
Quote Anchor link
mijn vraag was een is of het mogelijk is om met 1 query gegevens in 2 tabellen in te voeren.

Toevoeging op 27/05/2014 00:01:28:

bijvoorbeeld in naw en test
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/05/2014 01:05:10
Quote Anchor link
oh zo. nee dat is niet gebruikelijk. je kunt wel een multiquery aanroepen als je met php 5.3 of hoger werkt.
Maar ik zou me daar voor een schoolopdracht niet aan wagen. hier wat leesvoer: http://stackoverflow.com/questions/6346674/pdo-support-for-multiple-queries-pdo-mysql-pdo-mysqlnd
 



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.