Joomla SQL Insert probleempje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ruliezz

ruliezz

16/04/2009 11:02:00
Quote Anchor link
Hallo allemaal,

Ik ben bezig een eigen component aan het schrijven voor Joomla.
Ik heb het volgende probleem:

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
<?php

$sql_query
= "INSERT INTO #__klaargezetevenement (evenementid, startdatum) VALUES (" . $iEvenementID . "," . $sStartdatum . ")";
$db->setQuery( $sql_query, 0);
$db->query();
$iInsertID     = $db->insertid();
    
            
foreach($_POST['onderwerp'] as $key => $value)
{

    
    $sql_insert = "INSERT INTO #__evenement_details (onderwerp, locatie, tijd,    
        omschrijving, klaargezetevenementID) VALUES ("
. $_POST['onderwerp'][$key] . "," . $_POST['locatie'][$key] . "," . $_POST['tijd'][$key] . ", " . $_POST['omschrijving'][$key] . ", " . $iInsertID . ")";  

   $db->setQuery( $sql_insert, 0);
   $db->query();            
}


?>


Het hele vreemde is, dat de eerste SQL INSERT opdracht WEL werkt maar de SQL INSERT opdracht binnen de foreach werkt gewoon niet.

Zie ik iets over het hoofd? of kan Joomla niet omgaan met foreach of wat gaat er fout?

Bedankt alvast voor je hulp!
Gewijzigd op 01/01/1970 01:00:00 door Ruliezz
 
PHP hulp

PHP hulp

24/11/2024 14:22:39
 
Dennis Mertens

Dennis Mertens

16/04/2009 11:06:00
Quote Anchor link
Joomla is geschreven in PHP. Foreach is PHP en zou het gewoon moeten werken. Ik snap dat #_ voor de tabelnaam niet maar dat zal wel bij Joomla horen. En aangezien de eerste werkt, zal dat het probleem niet zijn.

Mare als ik dan toch even goed kijk, staat jouw query in $sql_insert en jij gebruikt $sql_query. Dus een variabele fout.

Maar waarom zet je die query niet gelijk in setQuery? Dan loop je niet zo te jannesen met al die variabelen.
 
Ruliezz

ruliezz

16/04/2009 11:13:00
Quote Anchor link
Dennis Mertens schreef op 16.04.2009 11:06:
Joomla is geschreven in PHP. Foreach is PHP en zou het gewoon moeten werken. Ik snap dat #_ voor de tabelnaam niet maar dat zal wel bij Joomla horen. En aangezien de eerste werkt, zal dat het probleem niet zijn.

Mare als ik dan toch even goed kijk, staat jouw query in $sql_insert en jij gebruikt $sql_query. Dus een variabele fout.

Maar waarom zet je die query niet gelijk in setQuery? Dan loop je niet zo te jannesen met al die variabelen.


Sorry Dennis, ik had de varibale inderdaad verkeerd staan, maar ook al staat hij goed dan doet hij het nog niet (net getest, script in 1post aangepast)

#__ is inderdaad iets van Joomla, #__ betekend in Joomla jos__tabelnaam.
===

Ik snap er echt helemaal niks meer van!
Ik heb nu het volgende:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
    function toevoegenEvenement()
        {

            //DIT WERKT NOG NIET NAAR BEHOREN!!!!!!!!!!!!!!!
        
        
        
        
            $db     =& JFactory::getDBO();
            
            $iEvenementID     = JRequest::getVar('evenement');
            $sSelectdatum     = JRequest::getVar('selectdatum');
            
            $query = "SELECT Sessiedatum FROM #__cursussessies WHERE Cursuscode = '" . $_POST['evenement']. "'";
            $db->setQuery( $query, 0, 10 );
            $rows         = $db->loadObjectList();
            
            
            foreach ($rows as $row)
            {
    
                $DBstartdatum = $row->Sessiedatum;        
            
            }

            
            if(!$sSelectdatum == "")
            {

                $sStartdatum = $sSelectdatum;
            }

            else
            {
                $sStartdatum = $DBstartdatum;
            }

            
            
            
        
            
            $db2     =& JFactory::getDBO();
            
            $sql_query = "INSERT INTO #__klaargezetevenement (evenementid, startdatum) VALUES (" . $iEvenementID . "," . $sStartdatum . ")";
            $db2->setQuery( $sql_query, 0);
            $db2->query();
            $iInsertID     = $db2->insertid();

            function
sqlopdracht($onderwerp, $locatie, $tijd, $omschrijving, $klaargezetevenementID)
            {

                $db3     =& JFactory::getDBO();
                
                $sql_insert = "INSERT INTO #__evenement_details (onderwerp, locatie, tijd, omschrijving, klaargezetevenementID) VALUES (" . $onderwerp . "," . $locatie . "," . $tijd . ", " . $omschrijving . ", " . $klaargezetevenementID . ")";  
                $db3->setQuery( $sql_query, 0);
                $db3->query();            
            }

            
            foreach($_POST['onderwerp'] as $key => $value)
            {

                sqlopdracht($_POST['onderwerp'][$key],$_POST['locatie'][$key],$_POST['tijd'][$key],$_POST['omschrijving'][$key],$iInsertID);
            }

            
            echo "Gelukt!";
            
        }

?>


Ten eerst: die ene foreach met die sqlopdracht() functie, voegt data helemaal niet toe. Dus werkt gewoon niet.

Ten tweede: de gegevens die in de tabel #__klaargezetevenement moeten komen slaat hij meerde keren op, terwijl hij maar 1 opdracht krijgt, en geen eens in een foreach zit...

pffff... ik weet het niet meer!
Gewijzigd op 01/01/1970 01:00:00 door ruliezz
 
Dennis Mertens

Dennis Mertens

16/04/2009 14:02:00
Quote Anchor link
En als je elke keer echo's neer zet? Krijg je die elke keer te zien?

Verzet deze echo elke keer.

Voor een foreach, in een foreach, na een foreach etc.
 
Ruliezz

ruliezz

16/04/2009 14:19:00
Quote Anchor link
Jep, hij echo't alles wat ik in de foreach stop. Dus dat is prima. Het zit hem dus in die SQL query van Joomla. Zou die niet samen gaan met een foreach-lus?
 
Dennis Mertens

Dennis Mertens

16/04/2009 14:20:00
Quote Anchor link
Ik zie het al.

Je zet een function in een function...
 
Ruliezz

ruliezz

16/04/2009 14:32:00
Quote Anchor link
Bedoel je die functie waar alles in zit? Mag dat niet? Hoe los je het anders op dan?

Trouwens, zonder die sqlopdracht function werkt de sql query van joomla ook niet. Daarom had ik het namelijk geprobeerd om het op deze manier te doen.

Btw, dit stukje code komt uit mijn class bestand.
Gewijzigd op 01/01/1970 01:00:00 door ruliezz
 
Dennis Mertens

Dennis Mertens

16/04/2009 14:37:00
Quote Anchor link
De functie sqlopdracht zit in de functie toevoegenEvenement.

Het kan volgens mij wel op een bepaalde manier. Maar zet deze functie er eens buiten...
 
Ruliezz

ruliezz

16/04/2009 14:46:00
Quote Anchor link
Gedaan, maar dan ziet hij hem niet meer.... :S

Fatal error: Call to undefined function sqlopdracht() in C:\xampp\htdocs\joomla\administrator\components\com_digitalezuil\core.class.php on line 341
 
Dennis Mertens

Dennis Mertens

16/04/2009 15:11:00
Quote Anchor link
Huh, hoe pas jij dat dan toe?
 
Ruliezz

ruliezz

16/04/2009 15:34:00
Quote Anchor link
Gewoon boven de die function zetten binnen de class.Ik heb het ook al geprobeerd om hem gewoon in het bestand te zetten waar ik de class aanmaak.

dus in de class zelf: (voorbeeld)

class Core
{

function sqlquery($variable, $variable)
{
query opdracht
}
function blablabla()
{
code
}

}


of

include ("core.class.php");
new Core();

function sqlquery($variable, $variable)
{
query opdracht
}

Core::blablabla();
 
Dennis Mertens

Dennis Mertens

17/04/2009 11:05:00
Quote Anchor link
Ja maar nog steeds zijn je variabelen niet goed. Ook al zeg jij dat ze als ze goed staan ook niet werkt. Pas dat ook even aan in de code. De code hier zo up-to-date mogelijk houden.

Leest namelijk erg irritant.

Waar haal jij die posts vandaan en waarom ga je zo diep in die POSTs?
 
Ruliezz

ruliezz

17/04/2009 11:46:00
Quote Anchor link
Hey Dennis,

ik heb alles ff aangepast om het even simpel te houden.
Ik heb nu weer het volgende staan, zo houden we een beetje overzicht!
Dus: vergeet ff de class en de functions. Check volgende code:

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
<?php
    $db3
    =& JFactory::getDBO();
            
            foreach($_POST['onderwerp'] as $key => $value;)
            {

                $sql_insert = "INSERT INTO #__evenement_details (onderwerp, locatie, tijd, omschrijving, klaargezetevenementID) VALUES (" . $_POST['onderwerp'][$key] . "," . $_POST['locatie'][$key] . "," . $_POST['tijd'][$key] . ", " . $_POST['omschrijving'][$key] . ", " . $iInsertID . ")";  
                $db3->setQuery( $sql_insert, 0);
                $db3->query();
            }

            
            
            echo "Gelukt!";

?>


Wellicht kan dit stukje code niet met een foreach overweg....

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$db3
->setQuery( $sql_insert, 0);
$db3->query();
?>


Kun je überhaupt wel een foreache gebruiken in een bestaande Array?
Zie code hierboven.
Gewijzigd op 01/01/1970 01:00:00 door ruliezz
 
Ruliezz

ruliezz

20/04/2009 10:49:00
Quote Anchor link
heeft iemand ervaring met Joomla? zodat hij deze vraag misschien kan oplossen?

meest recente code op moment:

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
26
27
28
29
30
31
32
<?php


            $post
            = JRequest::get( 'post' );
            $onderwerp         = JArrayHelper::getValue( $post, 'onderwerp', array(), 'array' );
            $locatie         = JArrayHelper::getValue( $post, 'locatie', array(), 'array' );
            $tijd             = JArrayHelper::getValue( $post, 'tijd', array(), 'array' );
            $omschrijving     = JArrayHelper::getValue( $post, 'omschrijving', array(), 'array' );
        
        //    $row    =& JTable::getInstance('poll', 'Table');
            
            
            $db3     =& JFactory::getDBO();
            
            foreach($onderwerp as $key => $value)
            {

                                
                
                $sql_insert = "INSERT INTO #__evenement_details (onderwerp, locatie, tijd, omschrijving, klaargezetevenementID) VALUES (" . $onderwerp[$key] . "," . $locatie[$key] . "," . $tijd[$key] . ", " . $omschrijving[$key] . ", " . $iInsertID . ")";  
                
            
            $db3->setQuery( $sql_insert, 0);
            $db3->query();    
            
    
                //echo $onderwerp[$key] . " " . $locatie[$key] . " " . $tijd[$key] . " " . $omschrijving[$key] . "<br />";
            }
        
            
            echo "Gelukt!";

?>
 
Ruliezz

ruliezz

20/04/2009 11:37:00
Quote Anchor link
OPGELOST!!!!!!!!!!!

STOMME ' ' waren de boosdoeners :S Joomla geeft geen foutmelding :S
 



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.