Joomla SQL Insert probleempje
Ik ben bezig een eigen component aan het schrijven voor Joomla.
Ik heb het volgende probleem:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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();
}
?>
$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
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.
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.
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)
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
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!";
}
?>
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
Verzet deze echo elke keer.
Voor een foreach, in een foreach, na een foreach etc.
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?
Je zet een function in een function...
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
Het kan volgens mij wel op een bepaalde manier. Maar zet deze functie er eens buiten...
Fatal error: Call to undefined function sqlopdracht() in C:\xampp\htdocs\joomla\administrator\components\com_digitalezuil\core.class.php on line 341
Huh, hoe pas jij dat dan toe?
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();
Leest namelijk erg irritant.
Waar haal jij die posts vandaan en waarom ga je zo diep in die POSTs?
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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!";
?>
$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....
Kun je überhaupt wel een foreache gebruiken in een bestaande Array?
Zie code hierboven.
Gewijzigd op 01/01/1970 01:00:00 door ruliezz
meest recente code op moment:
Code (php)
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
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!";
?>
$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!";
?>
STOMME ' ' waren de boosdoeners :S Joomla geeft geen foutmelding :S