<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Twister65</id>
	<title>Joomla! Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.sandbox.joomla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Twister65"/>
	<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/Special:Contributions/Twister65"/>
	<updated>2026-06-05T12:58:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Make_your_own_Action_Log_Plugin/fr&amp;diff=614739</id>
		<title>J3.x:Make your own Action Log Plugin/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Make_your_own_Action_Log_Plugin/fr&amp;diff=614739"/>
		<updated>2019-06-12T19:46:00Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Joomla! 3.9 et plus permet aux extensions de tracer leurs actions dans User Action Log. Cela est possible en créant un plugin dans le dossier actionlog.&lt;br /&gt;
&lt;br /&gt;
Veuillez prendre en considération que si votre plugin n&#039;est pas dans le dossier actionlog, vous obtiendrez des chaînes de caractères non traduites dans le composant et / ou module User Action Log, quand des actions de votre extension sont affichées. &lt;br /&gt;
&lt;br /&gt;
En tant que développeur, vous devriez être avisé que tous les plugins actionlog publiés sont chargés par le plugin système Joomla Action Log. Cela implique que le constructeur de votre plugin actionlog devrait être réduit au strict minimum et ne pas faire des initialisations qui pourraient avoir un impact sur les performances. Si vous avez besoin de faire toute sorte d&#039;initialisation lourde, essayer de la reporter au dernier moment possible, c&#039;est-à-dire quand vous êtes sur le point de tracer une action.&lt;br /&gt;
&lt;br /&gt;
Le plugin actionlog est destiné à &amp;quot;capturer&amp;quot; les actions de votre extension et de les enregistrer (tracer). La partie capture dépend entièrement de votre extension. L&#039;idée est que chaque action intéressante qui a besoin d&#039;être tracée doit déclencher un événement de plugin qui est géré par votre plugin actionlog et a pour effet de tracer ladite action dans la base de données.&lt;br /&gt;
&lt;br /&gt;
Joomla&#039;s MVC only triggers events on content preparation. If you want to see how you can handle those events for your component check the Joomla plugin in the actionlog folder.&lt;br /&gt;
&lt;br /&gt;
For everything else it&#039;s advisable to use your own, custom plugin event names. Take extra care to not cause any naming conflicts. For example, a plugin event called &amp;lt;tt&amp;gt;onAfterInitialize&amp;lt;/tt&amp;gt; is &#039;&#039;&#039;BAD&#039;&#039;&#039; because it clashes with Joomla&#039;s built-in event by the same name. &#039;&#039;&#039;DO NOT&#039;&#039;&#039; use generic plugin names such as &amp;lt;tt&amp;gt;onAfterSave&amp;lt;/tt&amp;gt; because you are guaranteed to cause a conflict with another extension or Joomla itself. Remember that plugin event names are shared across all plugins in all plugin folders! &lt;br /&gt;
&lt;br /&gt;
The best way to prevent naming clashes is using naming conventions like the following:&lt;br /&gt;
&lt;br /&gt;
* For components, &amp;lt;tt&amp;gt;onComComponentControllerViewnameAfterorbeforeTask&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onComExampleControllerItemsAfterBrowse&amp;lt;/tt&amp;gt; for &amp;lt;tt&amp;gt;option=com_example&amp;amp;view=items&amp;amp;task=browse&amp;lt;/tt&amp;gt;&lt;br /&gt;
* For plugins, &amp;lt;tt&amp;gt;onPlgFolderPluginnameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onPlgSystemFoobarBaz&amp;lt;/tt&amp;gt; to log the &amp;quot;baz&amp;quot; action taken by a plugin named &amp;lt;tt&amp;gt;foobar&amp;lt;/tt&amp;gt; in the system folder.&lt;br /&gt;
&lt;br /&gt;
Modules, templates, and libraries are unlikely candidates for actions you might want to log but you can use a similar naming convention:&lt;br /&gt;
&lt;br /&gt;
* For modules, &amp;lt;tt&amp;gt;onModSiteoradminModulenameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onModSiteExampleFoo&amp;lt;/tt&amp;gt; for a frontend (site) module &amp;lt;tt&amp;gt;mod_example&amp;lt;/tt&amp;gt; taking action foo&lt;br /&gt;
* For libraries, &amp;lt;tt&amp;gt;onLibLibrarynameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onLibExampleFoo&amp;lt;/tt&amp;gt; for the &amp;lt;tt&amp;gt;lib_example&amp;lt;/tt&amp;gt; library taking action foo&lt;br /&gt;
* For templates, &amp;lt;tt&amp;gt;onTplSiteoradminTemplatenameAction&amp;lt;/tt&amp;gt; e.g. on &amp;lt;tt&amp;gt;TplSiteExampleFoo&amp;lt;/tt&amp;gt; for a frontend template named example taking action foo&lt;br /&gt;
&lt;br /&gt;
If you have a Model used in many of your component&#039;s controllers and you would rather log an action taken there you can use the naming convention &amp;lt;tt&amp;gt;onComComponentModelModelnameAfterorbeforeMethodname&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onComExampleModelItemsBeforeSave&amp;lt;/tt&amp;gt; to log something that happens after calling the &amp;lt;tt&amp;gt;ExampleModelItems::save()&amp;lt;/tt&amp;gt; method. Again, this convention is arbitrary and the only reason we recommend it is that you can have a reasonable expectation that it won&#039;t cause naming clashes. The more specific the event name is the less likely it is to have a conflict with core or third party code.&lt;br /&gt;
&lt;br /&gt;
Logging the actions requires going through a bit of code to perform sanity checks (e.g. correct Joomla version) and do the actual logging. Here is a prototype function you can use in your plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	public function logUserAction($title, $logText, $extension)&lt;br /&gt;
	{&lt;br /&gt;
		static $joomlaModelAdded = false;&lt;br /&gt;
&lt;br /&gt;
		// User Actions Log is available only under Joomla 3.9+&lt;br /&gt;
		if (version_compare(JVERSION, &#039;3.9&#039;, &#039;lt&#039;))&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Include required Joomla Model&lt;br /&gt;
		if (!$joomlaModelAdded)&lt;br /&gt;
		{&lt;br /&gt;
			\JModelLegacy::addIncludePath(JPATH_ROOT . &#039;/administrator/components/com_actionlogs/models&#039;, &#039;ActionlogsModel&#039;);&lt;br /&gt;
			$joomlaModelAdded = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$user = $this-&amp;gt;getUser();&lt;br /&gt;
&lt;br /&gt;
		// No log for guest users&lt;br /&gt;
		if ($user-&amp;gt;guest)&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$message = array(&lt;br /&gt;
			&#039;title&#039;    	  =&amp;gt; $title,&lt;br /&gt;
			&#039;username&#039; 	  =&amp;gt; $user-&amp;gt;username,&lt;br /&gt;
			&#039;accountlink&#039;     =&amp;gt; &#039;index.php?option=com_users&amp;amp;task=user.edit&amp;amp;id=&#039; . $user-&amp;gt;id&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		/** @var \ActionlogsModelActionlog $model **/&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			$model = \JModelLegacy::getInstance(&#039;Actionlog&#039;, &#039;ActionlogsModel&#039;);&lt;br /&gt;
			$model-&amp;gt;addLog(array($message), $logText, $extension, $user-&amp;gt;id);&lt;br /&gt;
		}&lt;br /&gt;
		catch (\Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			// Ignore any error&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example plugin method performing user action logging:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
	 * Logs the creation of a new backup profile&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param \Akeeba\Backup\Admin\Controller\Profiles	$controller&lt;br /&gt;
	 * @param array										$data&lt;br /&gt;
	 * @param int										$id&lt;br /&gt;
	 */&lt;br /&gt;
	public function onComAkeebaControllerProfilesAfterApplySave($controller, $data, $id)&lt;br /&gt;
	{&lt;br /&gt;
		// If I have an ID in the request and it&#039;s the same of the model, I&#039;m just editing a record&lt;br /&gt;
		if (isset($data[&#039;id&#039;]) &amp;amp;&amp;amp; $data[&#039;id&#039;] == $id)&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$profile_title = $data[&#039;description&#039;];&lt;br /&gt;
&lt;br /&gt;
		$this-&amp;gt;logUserAction($profile_title, &#039;COM_AKEEBA_LOGS_PROFILE_ADD&#039;, &#039;com_akeeba&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the log title (the second argument to the method) is a translation key. It is defined similar to that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;COM_AKEEBA_LOGS_PROFILE_ADD=&amp;quot;User &amp;lt;a href=\&amp;quot;{accountlink}\&amp;quot;&amp;gt;{username}&amp;lt;/a&amp;gt; created the backup profile {title}&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;{title}&amp;lt;/tt&amp;gt; variable is the &amp;lt;tt&amp;gt;$title&amp;lt;/tt&amp;gt; parameter in our method. The other two variables are defined and processed by the User Action Logs module and component when rendering the user actions log.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Caveat&#039;&#039;: Since Joomla 4 has not yet integrated the Action Logs component and plugins the code above will not work on Joomla! 4. If / when Action Logs are ported to Joomla 4 we&#039;ll have to revisit this documentation page since neither &amp;lt;tt&amp;gt;JModelLegacy&amp;lt;/tt&amp;gt; is available, nor will the Model name be &amp;lt;tt&amp;gt;ActionlogsModelActionlog&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Components]]&lt;br /&gt;
[[Category:Joomla! 3.9]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Modules]]&lt;br /&gt;
[[Category:User Action Logs]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Make_your_own_Action_Log_Plugin/3/fr&amp;diff=614738</id>
		<title>Translations:J3.x:Make your own Action Log Plugin/3/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Make_your_own_Action_Log_Plugin/3/fr&amp;diff=614738"/>
		<updated>2019-06-12T19:46:00Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En tant que développeur, vous devriez être avisé que tous les plugins actionlog publiés sont chargés par le plugin système Joomla Action Log. Cela implique que le constructeur de votre plugin actionlog devrait être réduit au strict minimum et ne pas faire des initialisations qui pourraient avoir un impact sur les performances. Si vous avez besoin de faire toute sorte d&#039;initialisation lourde, essayer de la reporter au dernier moment possible, c&#039;est-à-dire quand vous êtes sur le point de tracer une action.&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Make_your_own_Action_Log_Plugin/fr&amp;diff=614737</id>
		<title>J3.x:Make your own Action Log Plugin/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Make_your_own_Action_Log_Plugin/fr&amp;diff=614737"/>
		<updated>2019-06-12T19:43:20Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;Le plugin actionlog est destiné à &amp;quot;capturer&amp;quot; les actions de votre extension et de les enregistrer (tracer). La partie capture dépend entièrement de votre extension. L&amp;#039;idé...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Joomla! 3.9 et plus permet aux extensions de tracer leurs actions dans User Action Log. Cela est possible en créant un plugin dans le dossier actionlog.&lt;br /&gt;
&lt;br /&gt;
Veuillez prendre en considération que si votre plugin n&#039;est pas dans le dossier actionlog, vous obtiendrez des chaînes de caractères non traduites dans le composant et / ou module User Action Log, quand des actions de votre extension sont affichées. &lt;br /&gt;
&lt;br /&gt;
En tant que développeur, vous devriez être avisé que tous les plugins actionlog publiés sont chargés par le plugin système Joomla Action Log. Cela implique que le constructeur de votre plugin actionlog devrait être réduit au strict minimum et ne pas faire des initialisations qui pourraient avoir un impact sur les performances. Si vous avez besoin de faire toute sorte d&#039;initialisation lourde, essayer de le reporter au dernier moment possible, c&#039;est-à-dire quand vous êtes sur le point de tracer une action.&lt;br /&gt;
&lt;br /&gt;
Le plugin actionlog est destiné à &amp;quot;capturer&amp;quot; les actions de votre extension et de les enregistrer (tracer). La partie capture dépend entièrement de votre extension. L&#039;idée est que chaque action intéressante qui a besoin d&#039;être tracée doit déclencher un événement de plugin qui est géré par votre plugin actionlog et a pour effet de tracer ladite action dans la base de données.&lt;br /&gt;
&lt;br /&gt;
Joomla&#039;s MVC only triggers events on content preparation. If you want to see how you can handle those events for your component check the Joomla plugin in the actionlog folder.&lt;br /&gt;
&lt;br /&gt;
For everything else it&#039;s advisable to use your own, custom plugin event names. Take extra care to not cause any naming conflicts. For example, a plugin event called &amp;lt;tt&amp;gt;onAfterInitialize&amp;lt;/tt&amp;gt; is &#039;&#039;&#039;BAD&#039;&#039;&#039; because it clashes with Joomla&#039;s built-in event by the same name. &#039;&#039;&#039;DO NOT&#039;&#039;&#039; use generic plugin names such as &amp;lt;tt&amp;gt;onAfterSave&amp;lt;/tt&amp;gt; because you are guaranteed to cause a conflict with another extension or Joomla itself. Remember that plugin event names are shared across all plugins in all plugin folders! &lt;br /&gt;
&lt;br /&gt;
The best way to prevent naming clashes is using naming conventions like the following:&lt;br /&gt;
&lt;br /&gt;
* For components, &amp;lt;tt&amp;gt;onComComponentControllerViewnameAfterorbeforeTask&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onComExampleControllerItemsAfterBrowse&amp;lt;/tt&amp;gt; for &amp;lt;tt&amp;gt;option=com_example&amp;amp;view=items&amp;amp;task=browse&amp;lt;/tt&amp;gt;&lt;br /&gt;
* For plugins, &amp;lt;tt&amp;gt;onPlgFolderPluginnameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onPlgSystemFoobarBaz&amp;lt;/tt&amp;gt; to log the &amp;quot;baz&amp;quot; action taken by a plugin named &amp;lt;tt&amp;gt;foobar&amp;lt;/tt&amp;gt; in the system folder.&lt;br /&gt;
&lt;br /&gt;
Modules, templates, and libraries are unlikely candidates for actions you might want to log but you can use a similar naming convention:&lt;br /&gt;
&lt;br /&gt;
* For modules, &amp;lt;tt&amp;gt;onModSiteoradminModulenameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onModSiteExampleFoo&amp;lt;/tt&amp;gt; for a frontend (site) module &amp;lt;tt&amp;gt;mod_example&amp;lt;/tt&amp;gt; taking action foo&lt;br /&gt;
* For libraries, &amp;lt;tt&amp;gt;onLibLibrarynameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onLibExampleFoo&amp;lt;/tt&amp;gt; for the &amp;lt;tt&amp;gt;lib_example&amp;lt;/tt&amp;gt; library taking action foo&lt;br /&gt;
* For templates, &amp;lt;tt&amp;gt;onTplSiteoradminTemplatenameAction&amp;lt;/tt&amp;gt; e.g. on &amp;lt;tt&amp;gt;TplSiteExampleFoo&amp;lt;/tt&amp;gt; for a frontend template named example taking action foo&lt;br /&gt;
&lt;br /&gt;
If you have a Model used in many of your component&#039;s controllers and you would rather log an action taken there you can use the naming convention &amp;lt;tt&amp;gt;onComComponentModelModelnameAfterorbeforeMethodname&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onComExampleModelItemsBeforeSave&amp;lt;/tt&amp;gt; to log something that happens after calling the &amp;lt;tt&amp;gt;ExampleModelItems::save()&amp;lt;/tt&amp;gt; method. Again, this convention is arbitrary and the only reason we recommend it is that you can have a reasonable expectation that it won&#039;t cause naming clashes. The more specific the event name is the less likely it is to have a conflict with core or third party code.&lt;br /&gt;
&lt;br /&gt;
Logging the actions requires going through a bit of code to perform sanity checks (e.g. correct Joomla version) and do the actual logging. Here is a prototype function you can use in your plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	public function logUserAction($title, $logText, $extension)&lt;br /&gt;
	{&lt;br /&gt;
		static $joomlaModelAdded = false;&lt;br /&gt;
&lt;br /&gt;
		// User Actions Log is available only under Joomla 3.9+&lt;br /&gt;
		if (version_compare(JVERSION, &#039;3.9&#039;, &#039;lt&#039;))&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Include required Joomla Model&lt;br /&gt;
		if (!$joomlaModelAdded)&lt;br /&gt;
		{&lt;br /&gt;
			\JModelLegacy::addIncludePath(JPATH_ROOT . &#039;/administrator/components/com_actionlogs/models&#039;, &#039;ActionlogsModel&#039;);&lt;br /&gt;
			$joomlaModelAdded = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$user = $this-&amp;gt;getUser();&lt;br /&gt;
&lt;br /&gt;
		// No log for guest users&lt;br /&gt;
		if ($user-&amp;gt;guest)&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$message = array(&lt;br /&gt;
			&#039;title&#039;    	  =&amp;gt; $title,&lt;br /&gt;
			&#039;username&#039; 	  =&amp;gt; $user-&amp;gt;username,&lt;br /&gt;
			&#039;accountlink&#039;     =&amp;gt; &#039;index.php?option=com_users&amp;amp;task=user.edit&amp;amp;id=&#039; . $user-&amp;gt;id&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		/** @var \ActionlogsModelActionlog $model **/&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			$model = \JModelLegacy::getInstance(&#039;Actionlog&#039;, &#039;ActionlogsModel&#039;);&lt;br /&gt;
			$model-&amp;gt;addLog(array($message), $logText, $extension, $user-&amp;gt;id);&lt;br /&gt;
		}&lt;br /&gt;
		catch (\Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			// Ignore any error&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example plugin method performing user action logging:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
	 * Logs the creation of a new backup profile&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param \Akeeba\Backup\Admin\Controller\Profiles	$controller&lt;br /&gt;
	 * @param array										$data&lt;br /&gt;
	 * @param int										$id&lt;br /&gt;
	 */&lt;br /&gt;
	public function onComAkeebaControllerProfilesAfterApplySave($controller, $data, $id)&lt;br /&gt;
	{&lt;br /&gt;
		// If I have an ID in the request and it&#039;s the same of the model, I&#039;m just editing a record&lt;br /&gt;
		if (isset($data[&#039;id&#039;]) &amp;amp;&amp;amp; $data[&#039;id&#039;] == $id)&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$profile_title = $data[&#039;description&#039;];&lt;br /&gt;
&lt;br /&gt;
		$this-&amp;gt;logUserAction($profile_title, &#039;COM_AKEEBA_LOGS_PROFILE_ADD&#039;, &#039;com_akeeba&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the log title (the second argument to the method) is a translation key. It is defined similar to that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;COM_AKEEBA_LOGS_PROFILE_ADD=&amp;quot;User &amp;lt;a href=\&amp;quot;{accountlink}\&amp;quot;&amp;gt;{username}&amp;lt;/a&amp;gt; created the backup profile {title}&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;{title}&amp;lt;/tt&amp;gt; variable is the &amp;lt;tt&amp;gt;$title&amp;lt;/tt&amp;gt; parameter in our method. The other two variables are defined and processed by the User Action Logs module and component when rendering the user actions log.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Caveat&#039;&#039;: Since Joomla 4 has not yet integrated the Action Logs component and plugins the code above will not work on Joomla! 4. If / when Action Logs are ported to Joomla 4 we&#039;ll have to revisit this documentation page since neither &amp;lt;tt&amp;gt;JModelLegacy&amp;lt;/tt&amp;gt; is available, nor will the Model name be &amp;lt;tt&amp;gt;ActionlogsModelActionlog&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Components]]&lt;br /&gt;
[[Category:Joomla! 3.9]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Modules]]&lt;br /&gt;
[[Category:User Action Logs]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Make_your_own_Action_Log_Plugin/4/fr&amp;diff=614736</id>
		<title>Translations:J3.x:Make your own Action Log Plugin/4/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Make_your_own_Action_Log_Plugin/4/fr&amp;diff=614736"/>
		<updated>2019-06-12T19:43:19Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;Le plugin actionlog est destiné à &amp;quot;capturer&amp;quot; les actions de votre extension et de les enregistrer (tracer). La partie capture dépend entièrement de votre extension. L&amp;#039;idé...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le plugin actionlog est destiné à &amp;quot;capturer&amp;quot; les actions de votre extension et de les enregistrer (tracer). La partie capture dépend entièrement de votre extension. L&#039;idée est que chaque action intéressante qui a besoin d&#039;être tracée doit déclencher un événement de plugin qui est géré par votre plugin actionlog et a pour effet de tracer ladite action dans la base de données.&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Make_your_own_Action_Log_Plugin/fr&amp;diff=614735</id>
		<title>J3.x:Make your own Action Log Plugin/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Make_your_own_Action_Log_Plugin/fr&amp;diff=614735"/>
		<updated>2019-06-12T19:32:07Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;En tant que développeur, vous devriez être avisé que tous les plugins actionlog publiés sont chargés par le plugin système Joomla Action Log. Cela implique que le constr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Joomla! 3.9 et plus permet aux extensions de tracer leurs actions dans User Action Log. Cela est possible en créant un plugin dans le dossier actionlog.&lt;br /&gt;
&lt;br /&gt;
Veuillez prendre en considération que si votre plugin n&#039;est pas dans le dossier actionlog, vous obtiendrez des chaînes de caractères non traduites dans le composant et / ou module User Action Log, quand des actions de votre extension sont affichées. &lt;br /&gt;
&lt;br /&gt;
En tant que développeur, vous devriez être avisé que tous les plugins actionlog publiés sont chargés par le plugin système Joomla Action Log. Cela implique que le constructeur de votre plugin actionlog devrait être réduit au strict minimum et ne pas faire des initialisations qui pourraient avoir un impact sur les performances. Si vous avez besoin de faire toute sorte d&#039;initialisation lourde, essayer de le reporter au dernier moment possible, c&#039;est-à-dire quand vous êtes sur le point de tracer une action.&lt;br /&gt;
&lt;br /&gt;
The actionlog plugin is meant to &amp;quot;catch&amp;quot; your extension&#039;s actions and log them. The &amp;quot;catching&amp;quot; part depends entirely on your extension. The concept is that each interesting action that needs to be logged must trigger a plugin event which is handled by your actionlog plugin and has the effect of logging said action to the database.&lt;br /&gt;
&lt;br /&gt;
Joomla&#039;s MVC only triggers events on content preparation. If you want to see how you can handle those events for your component check the Joomla plugin in the actionlog folder.&lt;br /&gt;
&lt;br /&gt;
For everything else it&#039;s advisable to use your own, custom plugin event names. Take extra care to not cause any naming conflicts. For example, a plugin event called &amp;lt;tt&amp;gt;onAfterInitialize&amp;lt;/tt&amp;gt; is &#039;&#039;&#039;BAD&#039;&#039;&#039; because it clashes with Joomla&#039;s built-in event by the same name. &#039;&#039;&#039;DO NOT&#039;&#039;&#039; use generic plugin names such as &amp;lt;tt&amp;gt;onAfterSave&amp;lt;/tt&amp;gt; because you are guaranteed to cause a conflict with another extension or Joomla itself. Remember that plugin event names are shared across all plugins in all plugin folders! &lt;br /&gt;
&lt;br /&gt;
The best way to prevent naming clashes is using naming conventions like the following:&lt;br /&gt;
&lt;br /&gt;
* For components, &amp;lt;tt&amp;gt;onComComponentControllerViewnameAfterorbeforeTask&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onComExampleControllerItemsAfterBrowse&amp;lt;/tt&amp;gt; for &amp;lt;tt&amp;gt;option=com_example&amp;amp;view=items&amp;amp;task=browse&amp;lt;/tt&amp;gt;&lt;br /&gt;
* For plugins, &amp;lt;tt&amp;gt;onPlgFolderPluginnameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onPlgSystemFoobarBaz&amp;lt;/tt&amp;gt; to log the &amp;quot;baz&amp;quot; action taken by a plugin named &amp;lt;tt&amp;gt;foobar&amp;lt;/tt&amp;gt; in the system folder.&lt;br /&gt;
&lt;br /&gt;
Modules, templates, and libraries are unlikely candidates for actions you might want to log but you can use a similar naming convention:&lt;br /&gt;
&lt;br /&gt;
* For modules, &amp;lt;tt&amp;gt;onModSiteoradminModulenameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onModSiteExampleFoo&amp;lt;/tt&amp;gt; for a frontend (site) module &amp;lt;tt&amp;gt;mod_example&amp;lt;/tt&amp;gt; taking action foo&lt;br /&gt;
* For libraries, &amp;lt;tt&amp;gt;onLibLibrarynameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onLibExampleFoo&amp;lt;/tt&amp;gt; for the &amp;lt;tt&amp;gt;lib_example&amp;lt;/tt&amp;gt; library taking action foo&lt;br /&gt;
* For templates, &amp;lt;tt&amp;gt;onTplSiteoradminTemplatenameAction&amp;lt;/tt&amp;gt; e.g. on &amp;lt;tt&amp;gt;TplSiteExampleFoo&amp;lt;/tt&amp;gt; for a frontend template named example taking action foo&lt;br /&gt;
&lt;br /&gt;
If you have a Model used in many of your component&#039;s controllers and you would rather log an action taken there you can use the naming convention &amp;lt;tt&amp;gt;onComComponentModelModelnameAfterorbeforeMethodname&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onComExampleModelItemsBeforeSave&amp;lt;/tt&amp;gt; to log something that happens after calling the &amp;lt;tt&amp;gt;ExampleModelItems::save()&amp;lt;/tt&amp;gt; method. Again, this convention is arbitrary and the only reason we recommend it is that you can have a reasonable expectation that it won&#039;t cause naming clashes. The more specific the event name is the less likely it is to have a conflict with core or third party code.&lt;br /&gt;
&lt;br /&gt;
Logging the actions requires going through a bit of code to perform sanity checks (e.g. correct Joomla version) and do the actual logging. Here is a prototype function you can use in your plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	public function logUserAction($title, $logText, $extension)&lt;br /&gt;
	{&lt;br /&gt;
		static $joomlaModelAdded = false;&lt;br /&gt;
&lt;br /&gt;
		// User Actions Log is available only under Joomla 3.9+&lt;br /&gt;
		if (version_compare(JVERSION, &#039;3.9&#039;, &#039;lt&#039;))&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Include required Joomla Model&lt;br /&gt;
		if (!$joomlaModelAdded)&lt;br /&gt;
		{&lt;br /&gt;
			\JModelLegacy::addIncludePath(JPATH_ROOT . &#039;/administrator/components/com_actionlogs/models&#039;, &#039;ActionlogsModel&#039;);&lt;br /&gt;
			$joomlaModelAdded = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$user = $this-&amp;gt;getUser();&lt;br /&gt;
&lt;br /&gt;
		// No log for guest users&lt;br /&gt;
		if ($user-&amp;gt;guest)&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$message = array(&lt;br /&gt;
			&#039;title&#039;    	  =&amp;gt; $title,&lt;br /&gt;
			&#039;username&#039; 	  =&amp;gt; $user-&amp;gt;username,&lt;br /&gt;
			&#039;accountlink&#039;     =&amp;gt; &#039;index.php?option=com_users&amp;amp;task=user.edit&amp;amp;id=&#039; . $user-&amp;gt;id&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		/** @var \ActionlogsModelActionlog $model **/&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			$model = \JModelLegacy::getInstance(&#039;Actionlog&#039;, &#039;ActionlogsModel&#039;);&lt;br /&gt;
			$model-&amp;gt;addLog(array($message), $logText, $extension, $user-&amp;gt;id);&lt;br /&gt;
		}&lt;br /&gt;
		catch (\Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			// Ignore any error&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example plugin method performing user action logging:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
	 * Logs the creation of a new backup profile&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param \Akeeba\Backup\Admin\Controller\Profiles	$controller&lt;br /&gt;
	 * @param array										$data&lt;br /&gt;
	 * @param int										$id&lt;br /&gt;
	 */&lt;br /&gt;
	public function onComAkeebaControllerProfilesAfterApplySave($controller, $data, $id)&lt;br /&gt;
	{&lt;br /&gt;
		// If I have an ID in the request and it&#039;s the same of the model, I&#039;m just editing a record&lt;br /&gt;
		if (isset($data[&#039;id&#039;]) &amp;amp;&amp;amp; $data[&#039;id&#039;] == $id)&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$profile_title = $data[&#039;description&#039;];&lt;br /&gt;
&lt;br /&gt;
		$this-&amp;gt;logUserAction($profile_title, &#039;COM_AKEEBA_LOGS_PROFILE_ADD&#039;, &#039;com_akeeba&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the log title (the second argument to the method) is a translation key. It is defined similar to that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;COM_AKEEBA_LOGS_PROFILE_ADD=&amp;quot;User &amp;lt;a href=\&amp;quot;{accountlink}\&amp;quot;&amp;gt;{username}&amp;lt;/a&amp;gt; created the backup profile {title}&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;{title}&amp;lt;/tt&amp;gt; variable is the &amp;lt;tt&amp;gt;$title&amp;lt;/tt&amp;gt; parameter in our method. The other two variables are defined and processed by the User Action Logs module and component when rendering the user actions log.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Caveat&#039;&#039;: Since Joomla 4 has not yet integrated the Action Logs component and plugins the code above will not work on Joomla! 4. If / when Action Logs are ported to Joomla 4 we&#039;ll have to revisit this documentation page since neither &amp;lt;tt&amp;gt;JModelLegacy&amp;lt;/tt&amp;gt; is available, nor will the Model name be &amp;lt;tt&amp;gt;ActionlogsModelActionlog&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Components]]&lt;br /&gt;
[[Category:Joomla! 3.9]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Modules]]&lt;br /&gt;
[[Category:User Action Logs]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Make_your_own_Action_Log_Plugin/3/fr&amp;diff=614734</id>
		<title>Translations:J3.x:Make your own Action Log Plugin/3/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Make_your_own_Action_Log_Plugin/3/fr&amp;diff=614734"/>
		<updated>2019-06-12T19:32:07Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;En tant que développeur, vous devriez être avisé que tous les plugins actionlog publiés sont chargés par le plugin système Joomla Action Log. Cela implique que le constr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En tant que développeur, vous devriez être avisé que tous les plugins actionlog publiés sont chargés par le plugin système Joomla Action Log. Cela implique que le constructeur de votre plugin actionlog devrait être réduit au strict minimum et ne pas faire des initialisations qui pourraient avoir un impact sur les performances. Si vous avez besoin de faire toute sorte d&#039;initialisation lourde, essayer de le reporter au dernier moment possible, c&#039;est-à-dire quand vous êtes sur le point de tracer une action.&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Make_your_own_Action_Log_Plugin/fr&amp;diff=614733</id>
		<title>J3.x:Make your own Action Log Plugin/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Make_your_own_Action_Log_Plugin/fr&amp;diff=614733"/>
		<updated>2019-06-12T19:18:14Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;Veuillez prendre en considération que si votre plugin n&amp;#039;est pas dans le dossier actionlog, vous obtiendrez des chaînes de caractères non traduites dans le composant et / ou...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Joomla! 3.9 et plus permet aux extensions de tracer leurs actions dans User Action Log. Cela est possible en créant un plugin dans le dossier actionlog.&lt;br /&gt;
&lt;br /&gt;
Veuillez prendre en considération que si votre plugin n&#039;est pas dans le dossier actionlog, vous obtiendrez des chaînes de caractères non traduites dans le composant et / ou module User Action Log, quand des actions de votre extension sont affichées. &lt;br /&gt;
&lt;br /&gt;
As a developer, you should be aware that all published actionlog plugins are loaded by Joomla&#039;s Action Log system plugin on every page load. The implication to that is that the constructor of your actionlog plugin should be kept to a bare minimum and not do any initialization which could have a performance impact. If you need to perform any kind of heavy initialization try to defer it for the last possibly moment, i.e. when you are about to log an action.&lt;br /&gt;
&lt;br /&gt;
The actionlog plugin is meant to &amp;quot;catch&amp;quot; your extension&#039;s actions and log them. The &amp;quot;catching&amp;quot; part depends entirely on your extension. The concept is that each interesting action that needs to be logged must trigger a plugin event which is handled by your actionlog plugin and has the effect of logging said action to the database.&lt;br /&gt;
&lt;br /&gt;
Joomla&#039;s MVC only triggers events on content preparation. If you want to see how you can handle those events for your component check the Joomla plugin in the actionlog folder.&lt;br /&gt;
&lt;br /&gt;
For everything else it&#039;s advisable to use your own, custom plugin event names. Take extra care to not cause any naming conflicts. For example, a plugin event called &amp;lt;tt&amp;gt;onAfterInitialize&amp;lt;/tt&amp;gt; is &#039;&#039;&#039;BAD&#039;&#039;&#039; because it clashes with Joomla&#039;s built-in event by the same name. &#039;&#039;&#039;DO NOT&#039;&#039;&#039; use generic plugin names such as &amp;lt;tt&amp;gt;onAfterSave&amp;lt;/tt&amp;gt; because you are guaranteed to cause a conflict with another extension or Joomla itself. Remember that plugin event names are shared across all plugins in all plugin folders! &lt;br /&gt;
&lt;br /&gt;
The best way to prevent naming clashes is using naming conventions like the following:&lt;br /&gt;
&lt;br /&gt;
* For components, &amp;lt;tt&amp;gt;onComComponentControllerViewnameAfterorbeforeTask&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onComExampleControllerItemsAfterBrowse&amp;lt;/tt&amp;gt; for &amp;lt;tt&amp;gt;option=com_example&amp;amp;view=items&amp;amp;task=browse&amp;lt;/tt&amp;gt;&lt;br /&gt;
* For plugins, &amp;lt;tt&amp;gt;onPlgFolderPluginnameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onPlgSystemFoobarBaz&amp;lt;/tt&amp;gt; to log the &amp;quot;baz&amp;quot; action taken by a plugin named &amp;lt;tt&amp;gt;foobar&amp;lt;/tt&amp;gt; in the system folder.&lt;br /&gt;
&lt;br /&gt;
Modules, templates, and libraries are unlikely candidates for actions you might want to log but you can use a similar naming convention:&lt;br /&gt;
&lt;br /&gt;
* For modules, &amp;lt;tt&amp;gt;onModSiteoradminModulenameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onModSiteExampleFoo&amp;lt;/tt&amp;gt; for a frontend (site) module &amp;lt;tt&amp;gt;mod_example&amp;lt;/tt&amp;gt; taking action foo&lt;br /&gt;
* For libraries, &amp;lt;tt&amp;gt;onLibLibrarynameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onLibExampleFoo&amp;lt;/tt&amp;gt; for the &amp;lt;tt&amp;gt;lib_example&amp;lt;/tt&amp;gt; library taking action foo&lt;br /&gt;
* For templates, &amp;lt;tt&amp;gt;onTplSiteoradminTemplatenameAction&amp;lt;/tt&amp;gt; e.g. on &amp;lt;tt&amp;gt;TplSiteExampleFoo&amp;lt;/tt&amp;gt; for a frontend template named example taking action foo&lt;br /&gt;
&lt;br /&gt;
If you have a Model used in many of your component&#039;s controllers and you would rather log an action taken there you can use the naming convention &amp;lt;tt&amp;gt;onComComponentModelModelnameAfterorbeforeMethodname&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onComExampleModelItemsBeforeSave&amp;lt;/tt&amp;gt; to log something that happens after calling the &amp;lt;tt&amp;gt;ExampleModelItems::save()&amp;lt;/tt&amp;gt; method. Again, this convention is arbitrary and the only reason we recommend it is that you can have a reasonable expectation that it won&#039;t cause naming clashes. The more specific the event name is the less likely it is to have a conflict with core or third party code.&lt;br /&gt;
&lt;br /&gt;
Logging the actions requires going through a bit of code to perform sanity checks (e.g. correct Joomla version) and do the actual logging. Here is a prototype function you can use in your plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	public function logUserAction($title, $logText, $extension)&lt;br /&gt;
	{&lt;br /&gt;
		static $joomlaModelAdded = false;&lt;br /&gt;
&lt;br /&gt;
		// User Actions Log is available only under Joomla 3.9+&lt;br /&gt;
		if (version_compare(JVERSION, &#039;3.9&#039;, &#039;lt&#039;))&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Include required Joomla Model&lt;br /&gt;
		if (!$joomlaModelAdded)&lt;br /&gt;
		{&lt;br /&gt;
			\JModelLegacy::addIncludePath(JPATH_ROOT . &#039;/administrator/components/com_actionlogs/models&#039;, &#039;ActionlogsModel&#039;);&lt;br /&gt;
			$joomlaModelAdded = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$user = $this-&amp;gt;getUser();&lt;br /&gt;
&lt;br /&gt;
		// No log for guest users&lt;br /&gt;
		if ($user-&amp;gt;guest)&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$message = array(&lt;br /&gt;
			&#039;title&#039;    	  =&amp;gt; $title,&lt;br /&gt;
			&#039;username&#039; 	  =&amp;gt; $user-&amp;gt;username,&lt;br /&gt;
			&#039;accountlink&#039;     =&amp;gt; &#039;index.php?option=com_users&amp;amp;task=user.edit&amp;amp;id=&#039; . $user-&amp;gt;id&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		/** @var \ActionlogsModelActionlog $model **/&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			$model = \JModelLegacy::getInstance(&#039;Actionlog&#039;, &#039;ActionlogsModel&#039;);&lt;br /&gt;
			$model-&amp;gt;addLog(array($message), $logText, $extension, $user-&amp;gt;id);&lt;br /&gt;
		}&lt;br /&gt;
		catch (\Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			// Ignore any error&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example plugin method performing user action logging:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
	 * Logs the creation of a new backup profile&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param \Akeeba\Backup\Admin\Controller\Profiles	$controller&lt;br /&gt;
	 * @param array										$data&lt;br /&gt;
	 * @param int										$id&lt;br /&gt;
	 */&lt;br /&gt;
	public function onComAkeebaControllerProfilesAfterApplySave($controller, $data, $id)&lt;br /&gt;
	{&lt;br /&gt;
		// If I have an ID in the request and it&#039;s the same of the model, I&#039;m just editing a record&lt;br /&gt;
		if (isset($data[&#039;id&#039;]) &amp;amp;&amp;amp; $data[&#039;id&#039;] == $id)&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$profile_title = $data[&#039;description&#039;];&lt;br /&gt;
&lt;br /&gt;
		$this-&amp;gt;logUserAction($profile_title, &#039;COM_AKEEBA_LOGS_PROFILE_ADD&#039;, &#039;com_akeeba&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the log title (the second argument to the method) is a translation key. It is defined similar to that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;COM_AKEEBA_LOGS_PROFILE_ADD=&amp;quot;User &amp;lt;a href=\&amp;quot;{accountlink}\&amp;quot;&amp;gt;{username}&amp;lt;/a&amp;gt; created the backup profile {title}&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;{title}&amp;lt;/tt&amp;gt; variable is the &amp;lt;tt&amp;gt;$title&amp;lt;/tt&amp;gt; parameter in our method. The other two variables are defined and processed by the User Action Logs module and component when rendering the user actions log.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Caveat&#039;&#039;: Since Joomla 4 has not yet integrated the Action Logs component and plugins the code above will not work on Joomla! 4. If / when Action Logs are ported to Joomla 4 we&#039;ll have to revisit this documentation page since neither &amp;lt;tt&amp;gt;JModelLegacy&amp;lt;/tt&amp;gt; is available, nor will the Model name be &amp;lt;tt&amp;gt;ActionlogsModelActionlog&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Components]]&lt;br /&gt;
[[Category:Joomla! 3.9]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Modules]]&lt;br /&gt;
[[Category:User Action Logs]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Make_your_own_Action_Log_Plugin/2/fr&amp;diff=614732</id>
		<title>Translations:J3.x:Make your own Action Log Plugin/2/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Make_your_own_Action_Log_Plugin/2/fr&amp;diff=614732"/>
		<updated>2019-06-12T19:18:14Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;Veuillez prendre en considération que si votre plugin n&amp;#039;est pas dans le dossier actionlog, vous obtiendrez des chaînes de caractères non traduites dans le composant et / ou...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Veuillez prendre en considération que si votre plugin n&#039;est pas dans le dossier actionlog, vous obtiendrez des chaînes de caractères non traduites dans le composant et / ou module User Action Log, quand des actions de votre extension sont affichées.&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Make_your_own_Action_Log_Plugin/fr&amp;diff=614731</id>
		<title>J3.x:Make your own Action Log Plugin/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Make_your_own_Action_Log_Plugin/fr&amp;diff=614731"/>
		<updated>2019-06-12T19:13:35Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;Joomla! 3.9 et plus permet aux extensions de tracer leurs actions dans User Action Log. Cela est possible en créant un plugin dans le dossier actionlog.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Joomla! 3.9 et plus permet aux extensions de tracer leurs actions dans User Action Log. Cela est possible en créant un plugin dans le dossier actionlog.&lt;br /&gt;
&lt;br /&gt;
Please note that if your plugin is not in the actionlog folder you will get untranslated strings in the User Action Log component and / or module when actions of your extension are being displayed. &lt;br /&gt;
&lt;br /&gt;
As a developer, you should be aware that all published actionlog plugins are loaded by Joomla&#039;s Action Log system plugin on every page load. The implication to that is that the constructor of your actionlog plugin should be kept to a bare minimum and not do any initialization which could have a performance impact. If you need to perform any kind of heavy initialization try to defer it for the last possibly moment, i.e. when you are about to log an action.&lt;br /&gt;
&lt;br /&gt;
The actionlog plugin is meant to &amp;quot;catch&amp;quot; your extension&#039;s actions and log them. The &amp;quot;catching&amp;quot; part depends entirely on your extension. The concept is that each interesting action that needs to be logged must trigger a plugin event which is handled by your actionlog plugin and has the effect of logging said action to the database.&lt;br /&gt;
&lt;br /&gt;
Joomla&#039;s MVC only triggers events on content preparation. If you want to see how you can handle those events for your component check the Joomla plugin in the actionlog folder.&lt;br /&gt;
&lt;br /&gt;
For everything else it&#039;s advisable to use your own, custom plugin event names. Take extra care to not cause any naming conflicts. For example, a plugin event called &amp;lt;tt&amp;gt;onAfterInitialize&amp;lt;/tt&amp;gt; is &#039;&#039;&#039;BAD&#039;&#039;&#039; because it clashes with Joomla&#039;s built-in event by the same name. &#039;&#039;&#039;DO NOT&#039;&#039;&#039; use generic plugin names such as &amp;lt;tt&amp;gt;onAfterSave&amp;lt;/tt&amp;gt; because you are guaranteed to cause a conflict with another extension or Joomla itself. Remember that plugin event names are shared across all plugins in all plugin folders! &lt;br /&gt;
&lt;br /&gt;
The best way to prevent naming clashes is using naming conventions like the following:&lt;br /&gt;
&lt;br /&gt;
* For components, &amp;lt;tt&amp;gt;onComComponentControllerViewnameAfterorbeforeTask&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onComExampleControllerItemsAfterBrowse&amp;lt;/tt&amp;gt; for &amp;lt;tt&amp;gt;option=com_example&amp;amp;view=items&amp;amp;task=browse&amp;lt;/tt&amp;gt;&lt;br /&gt;
* For plugins, &amp;lt;tt&amp;gt;onPlgFolderPluginnameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onPlgSystemFoobarBaz&amp;lt;/tt&amp;gt; to log the &amp;quot;baz&amp;quot; action taken by a plugin named &amp;lt;tt&amp;gt;foobar&amp;lt;/tt&amp;gt; in the system folder.&lt;br /&gt;
&lt;br /&gt;
Modules, templates, and libraries are unlikely candidates for actions you might want to log but you can use a similar naming convention:&lt;br /&gt;
&lt;br /&gt;
* For modules, &amp;lt;tt&amp;gt;onModSiteoradminModulenameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onModSiteExampleFoo&amp;lt;/tt&amp;gt; for a frontend (site) module &amp;lt;tt&amp;gt;mod_example&amp;lt;/tt&amp;gt; taking action foo&lt;br /&gt;
* For libraries, &amp;lt;tt&amp;gt;onLibLibrarynameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onLibExampleFoo&amp;lt;/tt&amp;gt; for the &amp;lt;tt&amp;gt;lib_example&amp;lt;/tt&amp;gt; library taking action foo&lt;br /&gt;
* For templates, &amp;lt;tt&amp;gt;onTplSiteoradminTemplatenameAction&amp;lt;/tt&amp;gt; e.g. on &amp;lt;tt&amp;gt;TplSiteExampleFoo&amp;lt;/tt&amp;gt; for a frontend template named example taking action foo&lt;br /&gt;
&lt;br /&gt;
If you have a Model used in many of your component&#039;s controllers and you would rather log an action taken there you can use the naming convention &amp;lt;tt&amp;gt;onComComponentModelModelnameAfterorbeforeMethodname&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onComExampleModelItemsBeforeSave&amp;lt;/tt&amp;gt; to log something that happens after calling the &amp;lt;tt&amp;gt;ExampleModelItems::save()&amp;lt;/tt&amp;gt; method. Again, this convention is arbitrary and the only reason we recommend it is that you can have a reasonable expectation that it won&#039;t cause naming clashes. The more specific the event name is the less likely it is to have a conflict with core or third party code.&lt;br /&gt;
&lt;br /&gt;
Logging the actions requires going through a bit of code to perform sanity checks (e.g. correct Joomla version) and do the actual logging. Here is a prototype function you can use in your plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	public function logUserAction($title, $logText, $extension)&lt;br /&gt;
	{&lt;br /&gt;
		static $joomlaModelAdded = false;&lt;br /&gt;
&lt;br /&gt;
		// User Actions Log is available only under Joomla 3.9+&lt;br /&gt;
		if (version_compare(JVERSION, &#039;3.9&#039;, &#039;lt&#039;))&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Include required Joomla Model&lt;br /&gt;
		if (!$joomlaModelAdded)&lt;br /&gt;
		{&lt;br /&gt;
			\JModelLegacy::addIncludePath(JPATH_ROOT . &#039;/administrator/components/com_actionlogs/models&#039;, &#039;ActionlogsModel&#039;);&lt;br /&gt;
			$joomlaModelAdded = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$user = $this-&amp;gt;getUser();&lt;br /&gt;
&lt;br /&gt;
		// No log for guest users&lt;br /&gt;
		if ($user-&amp;gt;guest)&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$message = array(&lt;br /&gt;
			&#039;title&#039;    	  =&amp;gt; $title,&lt;br /&gt;
			&#039;username&#039; 	  =&amp;gt; $user-&amp;gt;username,&lt;br /&gt;
			&#039;accountlink&#039;     =&amp;gt; &#039;index.php?option=com_users&amp;amp;task=user.edit&amp;amp;id=&#039; . $user-&amp;gt;id&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		/** @var \ActionlogsModelActionlog $model **/&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			$model = \JModelLegacy::getInstance(&#039;Actionlog&#039;, &#039;ActionlogsModel&#039;);&lt;br /&gt;
			$model-&amp;gt;addLog(array($message), $logText, $extension, $user-&amp;gt;id);&lt;br /&gt;
		}&lt;br /&gt;
		catch (\Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			// Ignore any error&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example plugin method performing user action logging:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
	 * Logs the creation of a new backup profile&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param \Akeeba\Backup\Admin\Controller\Profiles	$controller&lt;br /&gt;
	 * @param array										$data&lt;br /&gt;
	 * @param int										$id&lt;br /&gt;
	 */&lt;br /&gt;
	public function onComAkeebaControllerProfilesAfterApplySave($controller, $data, $id)&lt;br /&gt;
	{&lt;br /&gt;
		// If I have an ID in the request and it&#039;s the same of the model, I&#039;m just editing a record&lt;br /&gt;
		if (isset($data[&#039;id&#039;]) &amp;amp;&amp;amp; $data[&#039;id&#039;] == $id)&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$profile_title = $data[&#039;description&#039;];&lt;br /&gt;
&lt;br /&gt;
		$this-&amp;gt;logUserAction($profile_title, &#039;COM_AKEEBA_LOGS_PROFILE_ADD&#039;, &#039;com_akeeba&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the log title (the second argument to the method) is a translation key. It is defined similar to that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;COM_AKEEBA_LOGS_PROFILE_ADD=&amp;quot;User &amp;lt;a href=\&amp;quot;{accountlink}\&amp;quot;&amp;gt;{username}&amp;lt;/a&amp;gt; created the backup profile {title}&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;{title}&amp;lt;/tt&amp;gt; variable is the &amp;lt;tt&amp;gt;$title&amp;lt;/tt&amp;gt; parameter in our method. The other two variables are defined and processed by the User Action Logs module and component when rendering the user actions log.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Caveat&#039;&#039;: Since Joomla 4 has not yet integrated the Action Logs component and plugins the code above will not work on Joomla! 4. If / when Action Logs are ported to Joomla 4 we&#039;ll have to revisit this documentation page since neither &amp;lt;tt&amp;gt;JModelLegacy&amp;lt;/tt&amp;gt; is available, nor will the Model name be &amp;lt;tt&amp;gt;ActionlogsModelActionlog&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Components]]&lt;br /&gt;
[[Category:Joomla! 3.9]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Modules]]&lt;br /&gt;
[[Category:User Action Logs]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Make_your_own_Action_Log_Plugin/1/fr&amp;diff=614730</id>
		<title>Translations:J3.x:Make your own Action Log Plugin/1/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Make_your_own_Action_Log_Plugin/1/fr&amp;diff=614730"/>
		<updated>2019-06-12T19:13:35Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;Joomla! 3.9 et plus permet aux extensions de tracer leurs actions dans User Action Log. Cela est possible en créant un plugin dans le dossier actionlog.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Joomla! 3.9 et plus permet aux extensions de tracer leurs actions dans User Action Log. Cela est possible en créant un plugin dans le dossier actionlog.&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=J3.x:Make_your_own_Action_Log_Plugin/fr&amp;diff=614729</id>
		<title>J3.x:Make your own Action Log Plugin/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=J3.x:Make_your_own_Action_Log_Plugin/fr&amp;diff=614729"/>
		<updated>2019-06-12T19:09:57Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;J3.x:Faites votre propre Plugin Action Log&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Joomla! 3.9 and later allows extensions to log their actions in the User Action Log. This is done by creating a plugin in the actionlog folder.&lt;br /&gt;
&lt;br /&gt;
Please note that if your plugin is not in the actionlog folder you will get untranslated strings in the User Action Log component and / or module when actions of your extension are being displayed. &lt;br /&gt;
&lt;br /&gt;
As a developer, you should be aware that all published actionlog plugins are loaded by Joomla&#039;s Action Log system plugin on every page load. The implication to that is that the constructor of your actionlog plugin should be kept to a bare minimum and not do any initialization which could have a performance impact. If you need to perform any kind of heavy initialization try to defer it for the last possibly moment, i.e. when you are about to log an action.&lt;br /&gt;
&lt;br /&gt;
The actionlog plugin is meant to &amp;quot;catch&amp;quot; your extension&#039;s actions and log them. The &amp;quot;catching&amp;quot; part depends entirely on your extension. The concept is that each interesting action that needs to be logged must trigger a plugin event which is handled by your actionlog plugin and has the effect of logging said action to the database.&lt;br /&gt;
&lt;br /&gt;
Joomla&#039;s MVC only triggers events on content preparation. If you want to see how you can handle those events for your component check the Joomla plugin in the actionlog folder.&lt;br /&gt;
&lt;br /&gt;
For everything else it&#039;s advisable to use your own, custom plugin event names. Take extra care to not cause any naming conflicts. For example, a plugin event called &amp;lt;tt&amp;gt;onAfterInitialize&amp;lt;/tt&amp;gt; is &#039;&#039;&#039;BAD&#039;&#039;&#039; because it clashes with Joomla&#039;s built-in event by the same name. &#039;&#039;&#039;DO NOT&#039;&#039;&#039; use generic plugin names such as &amp;lt;tt&amp;gt;onAfterSave&amp;lt;/tt&amp;gt; because you are guaranteed to cause a conflict with another extension or Joomla itself. Remember that plugin event names are shared across all plugins in all plugin folders! &lt;br /&gt;
&lt;br /&gt;
The best way to prevent naming clashes is using naming conventions like the following:&lt;br /&gt;
&lt;br /&gt;
* For components, &amp;lt;tt&amp;gt;onComComponentControllerViewnameAfterorbeforeTask&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onComExampleControllerItemsAfterBrowse&amp;lt;/tt&amp;gt; for &amp;lt;tt&amp;gt;option=com_example&amp;amp;view=items&amp;amp;task=browse&amp;lt;/tt&amp;gt;&lt;br /&gt;
* For plugins, &amp;lt;tt&amp;gt;onPlgFolderPluginnameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onPlgSystemFoobarBaz&amp;lt;/tt&amp;gt; to log the &amp;quot;baz&amp;quot; action taken by a plugin named &amp;lt;tt&amp;gt;foobar&amp;lt;/tt&amp;gt; in the system folder.&lt;br /&gt;
&lt;br /&gt;
Modules, templates, and libraries are unlikely candidates for actions you might want to log but you can use a similar naming convention:&lt;br /&gt;
&lt;br /&gt;
* For modules, &amp;lt;tt&amp;gt;onModSiteoradminModulenameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onModSiteExampleFoo&amp;lt;/tt&amp;gt; for a frontend (site) module &amp;lt;tt&amp;gt;mod_example&amp;lt;/tt&amp;gt; taking action foo&lt;br /&gt;
* For libraries, &amp;lt;tt&amp;gt;onLibLibrarynameAction&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onLibExampleFoo&amp;lt;/tt&amp;gt; for the &amp;lt;tt&amp;gt;lib_example&amp;lt;/tt&amp;gt; library taking action foo&lt;br /&gt;
* For templates, &amp;lt;tt&amp;gt;onTplSiteoradminTemplatenameAction&amp;lt;/tt&amp;gt; e.g. on &amp;lt;tt&amp;gt;TplSiteExampleFoo&amp;lt;/tt&amp;gt; for a frontend template named example taking action foo&lt;br /&gt;
&lt;br /&gt;
If you have a Model used in many of your component&#039;s controllers and you would rather log an action taken there you can use the naming convention &amp;lt;tt&amp;gt;onComComponentModelModelnameAfterorbeforeMethodname&amp;lt;/tt&amp;gt; e.g. &amp;lt;tt&amp;gt;onComExampleModelItemsBeforeSave&amp;lt;/tt&amp;gt; to log something that happens after calling the &amp;lt;tt&amp;gt;ExampleModelItems::save()&amp;lt;/tt&amp;gt; method. Again, this convention is arbitrary and the only reason we recommend it is that you can have a reasonable expectation that it won&#039;t cause naming clashes. The more specific the event name is the less likely it is to have a conflict with core or third party code.&lt;br /&gt;
&lt;br /&gt;
Logging the actions requires going through a bit of code to perform sanity checks (e.g. correct Joomla version) and do the actual logging. Here is a prototype function you can use in your plugin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	public function logUserAction($title, $logText, $extension)&lt;br /&gt;
	{&lt;br /&gt;
		static $joomlaModelAdded = false;&lt;br /&gt;
&lt;br /&gt;
		// User Actions Log is available only under Joomla 3.9+&lt;br /&gt;
		if (version_compare(JVERSION, &#039;3.9&#039;, &#039;lt&#039;))&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Include required Joomla Model&lt;br /&gt;
		if (!$joomlaModelAdded)&lt;br /&gt;
		{&lt;br /&gt;
			\JModelLegacy::addIncludePath(JPATH_ROOT . &#039;/administrator/components/com_actionlogs/models&#039;, &#039;ActionlogsModel&#039;);&lt;br /&gt;
			$joomlaModelAdded = true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$user = $this-&amp;gt;getUser();&lt;br /&gt;
&lt;br /&gt;
		// No log for guest users&lt;br /&gt;
		if ($user-&amp;gt;guest)&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$message = array(&lt;br /&gt;
			&#039;title&#039;    	  =&amp;gt; $title,&lt;br /&gt;
			&#039;username&#039; 	  =&amp;gt; $user-&amp;gt;username,&lt;br /&gt;
			&#039;accountlink&#039;     =&amp;gt; &#039;index.php?option=com_users&amp;amp;task=user.edit&amp;amp;id=&#039; . $user-&amp;gt;id&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		/** @var \ActionlogsModelActionlog $model **/&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			$model = \JModelLegacy::getInstance(&#039;Actionlog&#039;, &#039;ActionlogsModel&#039;);&lt;br /&gt;
			$model-&amp;gt;addLog(array($message), $logText, $extension, $user-&amp;gt;id);&lt;br /&gt;
		}&lt;br /&gt;
		catch (\Exception $e)&lt;br /&gt;
		{&lt;br /&gt;
			// Ignore any error&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example plugin method performing user action logging:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
	 * Logs the creation of a new backup profile&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param \Akeeba\Backup\Admin\Controller\Profiles	$controller&lt;br /&gt;
	 * @param array										$data&lt;br /&gt;
	 * @param int										$id&lt;br /&gt;
	 */&lt;br /&gt;
	public function onComAkeebaControllerProfilesAfterApplySave($controller, $data, $id)&lt;br /&gt;
	{&lt;br /&gt;
		// If I have an ID in the request and it&#039;s the same of the model, I&#039;m just editing a record&lt;br /&gt;
		if (isset($data[&#039;id&#039;]) &amp;amp;&amp;amp; $data[&#039;id&#039;] == $id)&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$profile_title = $data[&#039;description&#039;];&lt;br /&gt;
&lt;br /&gt;
		$this-&amp;gt;logUserAction($profile_title, &#039;COM_AKEEBA_LOGS_PROFILE_ADD&#039;, &#039;com_akeeba&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the log title (the second argument to the method) is a translation key. It is defined similar to that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;COM_AKEEBA_LOGS_PROFILE_ADD=&amp;quot;User &amp;lt;a href=\&amp;quot;{accountlink}\&amp;quot;&amp;gt;{username}&amp;lt;/a&amp;gt; created the backup profile {title}&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;{title}&amp;lt;/tt&amp;gt; variable is the &amp;lt;tt&amp;gt;$title&amp;lt;/tt&amp;gt; parameter in our method. The other two variables are defined and processed by the User Action Logs module and component when rendering the user actions log.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Caveat&#039;&#039;: Since Joomla 4 has not yet integrated the Action Logs component and plugins the code above will not work on Joomla! 4. If / when Action Logs are ported to Joomla 4 we&#039;ll have to revisit this documentation page since neither &amp;lt;tt&amp;gt;JModelLegacy&amp;lt;/tt&amp;gt; is available, nor will the Model name be &amp;lt;tt&amp;gt;ActionlogsModelActionlog&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Components]]&lt;br /&gt;
[[Category:Joomla! 3.9]]&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Modules]]&lt;br /&gt;
[[Category:User Action Logs]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Make_your_own_Action_Log_Plugin/Page_display_title/fr&amp;diff=614728</id>
		<title>Translations:J3.x:Make your own Action Log Plugin/Page display title/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:J3.x:Make_your_own_Action_Log_Plugin/Page_display_title/fr&amp;diff=614728"/>
		<updated>2019-06-12T19:09:56Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;J3.x:Faites votre propre Plugin Action Log&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;J3.x:Faites votre propre Plugin Action Log&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614608</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614608"/>
		<updated>2019-06-11T19:33:33Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une seule table==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure ci-dessus nous permet d&#039;interroger les deux tables &amp;quot;content&amp;quot; et &amp;quot;users&amp;quot;, en récupérant les articles avec leur auteur. Il y a aussi des méthodes pratiques pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur simple ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une seule valeur de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un seul champ d&#039;une seule ligne de la table (ou un seul champ à partir de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une simple ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une simple colonne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Utiliser les méthodes d&#039;union dans les requêtes de base de données]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/25/fr&amp;diff=614607</id>
		<title>Translations:Selecting data using JDatabase/25/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/25/fr&amp;diff=614607"/>
		<updated>2019-06-11T19:33:29Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La méthode de jointure ci-dessus nous permet d&#039;interroger les deux tables &amp;quot;content&amp;quot; et &amp;quot;users&amp;quot;, en récupérant les articles avec leur auteur. Il y a aussi des méthodes pratiques pour les jointures:&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614606</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614606"/>
		<updated>2019-06-11T19:32:39Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une seule table==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure ci-dessus nous permet d&#039;interroger les deux tables &amp;quot;content&amp;quot; et &amp;quot;user&amp;quot;, en récupérant les articles avec leur auteur. Il y a aussi des méthodes pratiques pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur simple ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une seule valeur de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un seul champ d&#039;une seule ligne de la table (ou un seul champ à partir de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une simple ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une simple colonne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Utiliser les méthodes d&#039;union dans les requêtes de base de données]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/25/fr&amp;diff=614605</id>
		<title>Translations:Selecting data using JDatabase/25/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/25/fr&amp;diff=614605"/>
		<updated>2019-06-11T19:32:35Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La méthode de jointure ci-dessus nous permet d&#039;interroger les deux tables &amp;quot;content&amp;quot; et &amp;quot;user&amp;quot;, en récupérant les articles avec leur auteur. Il y a aussi des méthodes pratiques pour les jointures:&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614518</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614518"/>
		<updated>2019-06-11T04:20:03Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une seule table==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur simple ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une seule valeur de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un seul champ d&#039;une seule ligne de la table (ou un seul champ à partir de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une simple ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une simple colonne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Utiliser les méthodes d&#039;union dans les requêtes de base de données]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/68/fr&amp;diff=614517</id>
		<title>Translations:Selecting data using JDatabase/68/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/68/fr&amp;diff=614517"/>
		<updated>2019-06-11T04:19:59Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Résultats à une simple colonne ===&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614516</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614516"/>
		<updated>2019-06-11T04:19:14Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une seule table==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur simple ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une seule valeur de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un seul champ d&#039;une seule ligne de la table (ou un seul champ à partir de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une simple ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une seule colonne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Utiliser les méthodes d&#039;union dans les requêtes de base de données]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/43/fr&amp;diff=614515</id>
		<title>Translations:Selecting data using JDatabase/43/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/43/fr&amp;diff=614515"/>
		<updated>2019-06-11T04:19:10Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Résultats à une simple ligne ===&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614514</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614514"/>
		<updated>2019-06-11T04:18:22Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une seule table==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur simple ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une seule valeur de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un seul champ d&#039;une seule ligne de la table (ou un seul champ à partir de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une seule ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une seule colonne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Utiliser les méthodes d&#039;union dans les requêtes de base de données]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/32/fr&amp;diff=614513</id>
		<title>Translations:Selecting data using JDatabase/32/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/32/fr&amp;diff=614513"/>
		<updated>2019-06-11T04:18:18Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Résultat à valeur simple ===&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614466</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614466"/>
		<updated>2019-06-10T19:59:57Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une seule table==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à une seule valeur ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une seule valeur de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un seul champ d&#039;une seule ligne de la table (ou un seul champ à partir de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une seule ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une seule colonne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Utiliser les méthodes d&#039;union dans les requêtes de base de données]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/68/fr&amp;diff=614465</id>
		<title>Translations:Selecting data using JDatabase/68/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/68/fr&amp;diff=614465"/>
		<updated>2019-06-10T19:59:53Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Résultats à une seule colonne ===&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614464</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614464"/>
		<updated>2019-06-10T19:59:07Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une seule table==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à une seule valeur ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une seule valeur de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un seul champ d&#039;une seule ligne de la table (ou un seul champ à partir de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une seule ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à colonne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Utiliser les méthodes d&#039;union dans les requêtes de base de données]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/32/fr&amp;diff=614463</id>
		<title>Translations:Selecting data using JDatabase/32/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/32/fr&amp;diff=614463"/>
		<updated>2019-06-10T19:59:03Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Résultat à une seule valeur ===&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614462</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614462"/>
		<updated>2019-06-10T19:57:19Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une seule table==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur seule ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une seule valeur de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un seul champ d&#039;une seule ligne de la table (ou un seul champ à partir de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à une seule ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à colonne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Utiliser les méthodes d&#039;union dans les requêtes de base de données]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/43/fr&amp;diff=614461</id>
		<title>Translations:Selecting data using JDatabase/43/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/43/fr&amp;diff=614461"/>
		<updated>2019-06-10T19:57:14Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Résultats à une seule ligne ===&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614460</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614460"/>
		<updated>2019-06-10T19:55:40Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une seule table==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur seule ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une seule valeur de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un seul champ d&#039;une seule ligne de la table (ou un seul champ à partir de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à ligne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à colonne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Utiliser les méthodes d&#039;union dans les requêtes de base de données]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/134/fr&amp;diff=614459</id>
		<title>Translations:Selecting data using JDatabase/134/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/134/fr&amp;diff=614459"/>
		<updated>2019-06-10T19:55:36Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ou quand vous souhaitez juste un seul champ d&#039;une seule ligne de la table (ou un seul champ à partir de la première ligne retournée).&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614458</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614458"/>
		<updated>2019-06-10T19:53:56Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une seule table==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur seule ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une seule valeur de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un champ unique d&#039;une ligne unique d&#039;une table (ou un champ unique de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à ligne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à colonne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Utiliser les méthodes d&#039;union dans les requêtes de base de données]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/34/fr&amp;diff=614457</id>
		<title>Translations:Selecting data using JDatabase/34/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/34/fr&amp;diff=614457"/>
		<updated>2019-06-10T19:53:52Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une seule valeur de retour de votre requête de base de données.&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614456</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614456"/>
		<updated>2019-06-10T19:53:23Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une seule table==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur seule ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une valeur unique de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un champ unique d&#039;une ligne unique d&#039;une table (ou un champ unique de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à ligne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à colonne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Utiliser les méthodes d&#039;union dans les requêtes de base de données]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/32/fr&amp;diff=614455</id>
		<title>Translations:Selecting data using JDatabase/32/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/32/fr&amp;diff=614455"/>
		<updated>2019-06-10T19:53:19Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Résultat à valeur seule ===&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614454</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614454"/>
		<updated>2019-06-10T19:52:11Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une seule table==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur unique ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une valeur unique de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un champ unique d&#039;une ligne unique d&#039;une table (ou un champ unique de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à ligne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à colonne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Utiliser les méthodes d&#039;union dans les requêtes de base de données]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/17/fr&amp;diff=614453</id>
		<title>Translations:Selecting data using JDatabase/17/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/17/fr&amp;diff=614453"/>
		<updated>2019-06-10T19:52:07Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Sélectionner des enregistrements d&#039;une seule table==&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/139/fr&amp;diff=614452</id>
		<title>Translations:Selecting data using JDatabase/139/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/139/fr&amp;diff=614452"/>
		<updated>2019-06-10T19:48:40Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;Joomla CMS 3.8 API&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Joomla CMS 3.8 API&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/138/fr&amp;diff=614451</id>
		<title>Translations:Selecting data using JDatabase/138/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/138/fr&amp;diff=614451"/>
		<updated>2019-06-10T19:48:28Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;(Joomla! 3.3+)&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(Joomla! 3.3+)&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614450</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614450"/>
		<updated>2019-06-10T19:48:27Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;Utiliser les méthodes d&amp;#039;union dans les requêtes de base de données&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une table unique==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur unique ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une valeur unique de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un champ unique d&#039;une ligne unique d&#039;une table (ou un champ unique de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à ligne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à colonne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Utiliser les méthodes d&#039;union dans les requêtes de base de données]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/137/fr&amp;diff=614449</id>
		<title>Translations:Selecting data using JDatabase/137/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/137/fr&amp;diff=614449"/>
		<updated>2019-06-10T19:48:23Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;Utiliser les méthodes d&amp;#039;union dans les requêtes de base de données&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Utiliser les méthodes d&#039;union dans les requêtes de base de données&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614448</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614448"/>
		<updated>2019-06-10T19:47:39Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;Insertion, mise à Jour et suppression de données à l&amp;#039;aide de JDatabase&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une table unique==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur unique ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une valeur unique de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un champ unique d&#039;une ligne unique d&#039;une table (ou un champ unique de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à ligne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à colonne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Using the union methods in database queries]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/136/fr&amp;diff=614447</id>
		<title>Translations:Selecting data using JDatabase/136/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/136/fr&amp;diff=614447"/>
		<updated>2019-06-10T19:47:35Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;Insertion, mise à Jour et suppression de données à l&amp;#039;aide de JDatabase&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Insertion, mise à Jour et suppression de données à l&#039;aide de JDatabase&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614446</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614446"/>
		<updated>2019-06-10T19:47:15Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loa...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une table unique==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur unique ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une valeur unique de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un champ unique d&#039;une ligne unique d&#039;une table (ou un champ unique de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à ligne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à colonne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Inserting, Updating and Removing data using JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Using the union methods in database queries]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/131/fr&amp;diff=614445</id>
		<title>Translations:Selecting data using JDatabase/131/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/131/fr&amp;diff=614445"/>
		<updated>2019-06-10T19:47:11Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loa...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A savoir: getNumRows() est seulement valide pour des déclarations comme SELECT ou SHOW qui retourne un véritable jeu de résultats. Si vous exécutez getNumRows() après loadRowList() - ou n&#039;importe quelle méthode d&#039;extraction - vous obtiendrez un avertissement PHP.&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614444</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614444"/>
		<updated>2019-06-10T19:42:09Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une table unique==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur unique ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une valeur unique de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un champ unique d&#039;une ligne unique d&#039;une table (ou un champ unique de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à ligne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à colonne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
retournera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note: getNumRows() is only valid for statements like SELECT or SHOW that return an actual result set. If you run getNumRows() after loadRowList() - or any other retrieval method - you will get a PHP Warning:&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Inserting, Updating and Removing data using JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Using the union methods in database queries]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/130/fr&amp;diff=614443</id>
		<title>Translations:Selecting data using JDatabase/130/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/130/fr&amp;diff=614443"/>
		<updated>2019-06-10T19:42:05Z</updated>

		<summary type="html">&lt;p&gt;Twister65: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;retournera :&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614442</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614442"/>
		<updated>2019-06-10T19:41:52Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&amp;#039;être lue. Pour obtenir un résultat à pa...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une table unique==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur unique ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une valeur unique de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un champ unique d&#039;une ligne unique d&#039;une table (ou un champ unique de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à ligne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à colonne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note: getNumRows() is only valid for statements like SELECT or SHOW that return an actual result set. If you run getNumRows() after loadRowList() - or any other retrieval method - you will get a PHP Warning:&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Inserting, Updating and Removing data using JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Using the union methods in database queries]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/129/fr&amp;diff=614441</id>
		<title>Translations:Selecting data using JDatabase/129/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/129/fr&amp;diff=614441"/>
		<updated>2019-06-10T19:41:48Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&amp;#039;être lue. Pour obtenir un résultat à pa...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; retournera le nombre de lignes résultantes trouvées par la dernière requête SELECT ou SHOW et en attente d&#039;être lue. Pour obtenir un résultat à partir de getNumRows(), vous devez l&#039;exécuter après la requête et avant d&#039;extraire tout résultat. Pour extraire le nombre de lignes affectées par une requête INSERT, UPDATE, REPLACE ou DELETE, utilisez getAffectedRows().&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614440</id>
		<title>Selecting data using JDatabase/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Selecting_data_using_JDatabase/fr&amp;diff=614440"/>
		<updated>2019-06-10T19:32:16Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&amp;#039;il n&amp;#039;a pas de valeur unique vous ne pourrez pas extra...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&amp;lt;languages /&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Joomla version|version=3.x}}{{Joomla version|version=2.5|status=eos}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{-}}&lt;br /&gt;
{{tip|Remarquez que de nombreux exemples cités utilisent &amp;lt;code&amp;gt;$db-&amp;gt;query()&amp;lt;/code&amp;gt; au lieu de &amp;lt;code&amp;gt;$db-&amp;gt;execute()&amp;lt;/code&amp;gt;. C&#039;était une méthode ancienne dans Joomla! 1.5 et 2.5 qui va émettre un message d&#039;obsolescence à partir de Joomla 3.0+.|title=Note de version}}&lt;br /&gt;
&lt;br /&gt;
Ce didacticiel est divisé en deux parties indépendantes :&lt;br /&gt;
* L&#039;insertion, la mise à jour et la suppression de données de la base de données.&lt;br /&gt;
* La sélection de données à partir d&#039;une ou plusieurs tables et la récupération sous différentes formes.&lt;br /&gt;
&lt;br /&gt;
Cette section de la documentation se focalise sur la sélection de données à partir d&#039;une table de la base de données et la récupère dans différents formats. Pour voir l&#039;autre partie&lt;br /&gt;
[[S:MyLanguage/Inserting,_Updating_and_Removing_data_using_JDatabase|cliquez ici]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Joomla! fournit une couche d&#039;abstraction sophistiquée de base de données pour en simplifier l&#039;utilisation pour les développeurs tierces. Les nouvelles versions de l&#039;API de la Plateforme Joomla! fournissent des fonctionnalités supplémentaires qui permettent d&#039;étendre encore plus la couche de base de données et d&#039;inclure des fonctionnalités telles que des connecteurs pour une plus grande variété de serveurs de base de données ou encore le chaînage de requêtes pour améliorer la lisibilité du code de connexion et simplifier le codage SQL.&lt;br /&gt;
&lt;br /&gt;
Joomla peut utiliser différentes sortes de systèmes de base de données SQL et s&#039;exécuter dans des environnements variés avec différents préfixes de table. En plus de ces fonctions, la classe (JDatabase) crée automatiquement la connexion à la base de données. Il suffit de deux lignes de code lors de l&#039;instanciation de l&#039;objet pour obtenir un résultat à partir de la base de données dans différents formats. L&#039;utilisation de la couche de base de données Joomla assure un maximum de compatibilité et de flexibilité pour vos extensions.&lt;br /&gt;
&lt;br /&gt;
==La Requête==&lt;br /&gt;
Faire une requête dans la base de données Joomla a changé avec l&#039;introduction de Joomla 1.6. Le moyen recommandé pour construire des requêtes de base de données se fait via le &amp;quot;chaînage de requêtes&amp;quot; (même si les requêtes en chaînes de caractères sont encore supportées).&lt;br /&gt;
&lt;br /&gt;
Le chaînage de requête fait référence à une méthode se connectant à un nombre de méthodes, les unes après les autres, où chaque méthode retourne un objet supportant la prochaine méthode, améliorant ainsi la lisibilité et la simplification du code.&lt;br /&gt;
&lt;br /&gt;
Pour obtenir une nouvelle instance de la classe JDatabaseQuery, nous utilisons la méthode getQuery de la classe JDatabaseDriver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;JDatabaseDriver::getQuery&amp;lt;/tt&amp;gt; prend un argument optionnel, &amp;lt;tt&amp;gt;$new&amp;lt;/tt&amp;gt;, qui peut être &#039;&#039;true&#039;&#039; (vrai) ou &#039;&#039;false&#039;&#039; (faux) (la valeur par défaut est &#039;&#039;false&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Pour interroger notre source de données, nous pouvons appeler un nombre de méthodes de la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;; ces méthodes encapsulent le langage de requête de la source de données (dans la plupart des cas SQL), en occultant la syntaxe de requête spécifique au développeur et en augmentant la portabilité du code source du développeur. &lt;br /&gt;
&lt;br /&gt;
Les méthodes les plus fréquemment utilisées incluent; &amp;lt;tt&amp;gt;select, from, join, where et order&amp;lt;/tt&amp;gt;. Il y a aussi des méthodes comme &amp;lt;tt&amp;gt;insert, update et delete&amp;lt;/tt&amp;gt; pour modifier des enregistrements dans la base de données. En chaînant ces appels de méthodes à d&#039;autres, vous pouvez créer presque n&#039;importe quelle requête à votre base de données sans compromettre la portabilité de votre code..&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements d&#039;une table unique==&lt;br /&gt;
&lt;br /&gt;
Ci-dessous se trouve un exemple de création de requête de base de données utilisant la classe &amp;lt;tt&amp;gt;JDatabaseQuery&amp;lt;/tt&amp;gt;. En utilisant les méthodes &#039;&#039;select&#039;&#039;, &#039;&#039;from&#039;&#039;, &#039;&#039;where&#039;&#039; et &#039;&#039;order&#039;&#039;, nous pouvons créer des requêtes flexibles, facilement lisibles et portable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all records from the user profile table where key begins with &amp;quot;custom.&amp;quot;.&lt;br /&gt;
// Order it by the ordering field.&lt;br /&gt;
$query-&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)));&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;));&lt;br /&gt;
$query-&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La requête peut également être chaînée pour la simplifier davantage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;profile_key&#039;) . &#039; LIKE &#039;. $db-&amp;gt;quote(&#039;\&#039;custom.%\&#039;&#039;))&lt;br /&gt;
    -&amp;gt;order(&#039;ordering ASC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le chaînage peut devenir utile quand des requêtes deviennent plus longues et plus complexes.&lt;br /&gt;
&lt;br /&gt;
Le groupement peut également être réalisé simplement. La requête suivante compterait le nombre d&#039;articles dans chaque catégorie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select( array(&#039;catid&#039;, &#039;COUNT(*)&#039;) )&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;))&lt;br /&gt;
    -&amp;gt;group($db-&amp;gt;quoteName(&#039;catid&#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une limite peut être définie pour une requête en utilisant &amp;lt;tt&amp;gt;setLimit&amp;lt;/tt&amp;gt;. Par exemple, dans la requête suivante, jusqu&#039;à 10 enregistrements seront retournés.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;user_id&#039;, &#039;profile_key&#039;, &#039;profile_value&#039;, &#039;ordering&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__user_profiles&#039;))&lt;br /&gt;
    -&amp;gt;setLimit(&#039;10&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sélectionner des enregistrements de plusieurs tables==&lt;br /&gt;
En utilisant les méthodes de [http://api.joomla.org/11.4/Joomla-Platform/Database/JDatabaseQuery.html#join jointure] de JDatabaseQuery, on peut sélectionner des enregistrements de multiples tables reliées. La méthode générique &amp;quot;join&amp;quot; prend deux arguments; le &amp;quot;type&amp;quot; de jointure (inner, outer, left, right) et la condition de jointure. Dans l&#039;exemple suivant vous remarquerez que l&#039;on peut utiliser tous les mots-clés qu&#039;on utiliserait normalement si on écrivait une requête SQL native, incluant le mot-clé AS pour donner un surnom aux tables et le mot-clé ON pour créer des relations entre les tables. Remarquez aussi que le surnom de la table est utilisé dans toutes les méthodes qui font référence aux colonnes de la table (c-a-d select, where, order).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Get a db connection.&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
&lt;br /&gt;
// Create a new query object.&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
&lt;br /&gt;
// Select all articles for users who have a username which starts with &#039;a&#039;.&lt;br /&gt;
// Order it by the created date.&lt;br /&gt;
// Note by putting &#039;a&#039; as a second parameter will generate `#__content` AS `a`&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
&lt;br /&gt;
// Load the results as a list of stdClass objects (see later for more options on retrieving data).&lt;br /&gt;
$results = $db-&amp;gt;loadObjectList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La méthode de jointure au-dessus nous permet d&#039;interroger les deux tables content et user, en extirpant les articles avec leur auteur. Il y a aussi des méthodes convenables pour les jointures:&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_innerJoin innerJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_leftJoin leftJoin()]&lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_rightJoin rightJoin()] &lt;br /&gt;
* [http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_outerJoin outerJoin()]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons utiliser plusieurs jointures pour interroger plus de deux tables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;, &#039;b.username&#039;, &#039;b.name&#039;, &#039;c.*&#039;, &#039;d.*&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;LEFT&#039;, $db-&amp;gt;quoteName(&#039;#__user_profiles&#039;, &#039;c&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;c.user_id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;join(&#039;RIGHT&#039;, $db-&amp;gt;quoteName(&#039;#__categories&#039;, &#039;d&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.catid&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;d.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarquez comment le chaînage rend le code source plus lisible pour ces longues requêtes.&lt;br /&gt;
&lt;br /&gt;
Dans certains cas, vous aurez aussi besoin d&#039;utiliser la clause AS lors de la sélection d&#039;éléments pour éviter des conflits de nom de colonne. Dans ce cas, plusieurs déclarations &amp;quot;select&amp;quot; peuvent être chaînées en conjonction de l&#039;utilisation de &amp;lt;tt&amp;gt;$db-&amp;gt;quoteName&amp;lt;/tt&amp;gt; dans le second paramètre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(&#039;a.*&#039;)&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.username&#039;, &#039;username&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(&#039;b.name&#039;, &#039;name&#039;))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un second tableau peut aussi être utilisé comme deuxième paramètre de la déclaration de &amp;quot;select&amp;quot; pour alimenter les valeurs de la clause AS. Souvenez-vous d&#039;inclure des &amp;quot;nulls&amp;quot; dans le second tableau aux colonnes correspondantes du premier tableau pour lesquelles vous ne voulez pas utiliser la clause AS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$query&lt;br /&gt;
    -&amp;gt;select(array(&#039;a.*&#039;))&lt;br /&gt;
    -&amp;gt;select($db-&amp;gt;quoteName(array(&#039;b.username&#039;, &#039;b.name&#039;), array(&#039;username&#039;, &#039;name&#039;)))&lt;br /&gt;
    -&amp;gt;from($db-&amp;gt;quoteName(&#039;#__content&#039;, &#039;a&#039;))&lt;br /&gt;
    -&amp;gt;join(&#039;INNER&#039;, $db-&amp;gt;quoteName(&#039;#__users&#039;, &#039;b&#039;) . &#039; ON (&#039; . $db-&amp;gt;quoteName(&#039;a.created_by&#039;) . &#039; = &#039; . $db-&amp;gt;quoteName(&#039;b.id&#039;) . &#039;)&#039;)&lt;br /&gt;
    -&amp;gt;where($db-&amp;gt;quoteName(&#039;b.username&#039;) . &#039; LIKE &#039; . $db-&amp;gt;quote(&#039;a%&#039;))&lt;br /&gt;
    -&amp;gt;order($db-&amp;gt;quoteName(&#039;a.created&#039;) . &#039; DESC&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Résultats de requête==&lt;br /&gt;
La classe &amp;lt;tt&amp;gt;JDatabase&amp;lt;/tt&amp;gt; possède plusieurs méthodes pour travailler avec un jeu de résultat d&#039;une requête.&lt;br /&gt;
&lt;br /&gt;
=== Résultat à valeur unique ===&lt;br /&gt;
==== loadResult() ====&lt;br /&gt;
Utilisez &#039;&#039;&#039;loadResult()&#039;&#039;&#039; quand vous souhaitez juste une valeur unique de retour de votre requête de base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
C&#039;est souvent le résultat d&#039;une requête de &amp;quot;comptage&amp;quot; pour obtenir un nombre d&#039;enregistrements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;COUNT(*)&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($value));&lt;br /&gt;
&lt;br /&gt;
// Reset the query using our newly populated query object.&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$count = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ou quand vous souhaitez juste un champ unique d&#039;une ligne unique d&#039;une table (ou un champ unique de la première ligne retournée).&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$db = JFactory::getDbo();&lt;br /&gt;
$query = $db-&amp;gt;getQuery(true);&lt;br /&gt;
$query-&amp;gt;select(&#039;field_name&#039;);&lt;br /&gt;
$query-&amp;gt;from($db-&amp;gt;quoteName(&#039;#__my_table&#039;));&lt;br /&gt;
$query-&amp;gt;where($db-&amp;gt;quoteName(&#039;some_name&#039;).&amp;quot; = &amp;quot;.$db-&amp;gt;quote($some_value));&lt;br /&gt;
&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadResult();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Résultats à ligne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner un seul enregistrement de la base de données même s&#039;il peut y avoir plusieurs enregistrements correspondant au critère donné. Pour obtenir plus d&#039;enregistrements vous devez encore appeler la fonction.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRow() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRow()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRow();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remarques :&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadAssoc() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssoc()&amp;lt;/tt&amp;gt; retourne un tableau associatif d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssoc();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;name&#039;] // e.g. $row[&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
==== loadObject() ====&lt;br /&gt;
loadObject retourne un objet PHP d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$result = $db-&amp;gt;loadObject();&lt;br /&gt;
print_r($result);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$result-&amp;gt;index // e.g. $result-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bien que vous pouvez répéter l&#039;appel pour obtenir d&#039;autres lignes, une des fonctions retournant plusieurs lignes peut être plus utile.&lt;br /&gt;
&lt;br /&gt;
=== Résultats à colonne unique ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner une seule colonne de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! nom !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- &lt;br /&gt;
| 1 || style=&amp;quot;background:yellow&amp;quot; | John Smith || johnsmith@domaine.exemple || johnsmith&lt;br /&gt;
|-&lt;br /&gt;
| 2 || style=&amp;quot;background:yellow&amp;quot; | Magda Hellman || magda_h@domaine.exemple || magdah&lt;br /&gt;
|-&lt;br /&gt;
| 3 || style=&amp;quot;background:yellow&amp;quot; | Yvonne de Gaulle || ydg@domaine.exemple || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadColumn() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;un seul enregistrement dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(&#039;name&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn();&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
# &amp;lt;tt&amp;gt;loadColumn()&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;loadColumn(0)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== loadColumn($index) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;une seule colonne dans la table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
$query-&amp;gt;select(array(&#039;name&#039;, &#039;email&#039;, &#039;username&#039;));&lt;br /&gt;
      -&amp;gt;from . . .&amp;quot;;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$column= $db-&amp;gt;loadColumn(1);&lt;br /&gt;
print_r($column);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera:&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$column[&#039;index&#039;] // e.g. $column[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;loadColumn($index)&amp;lt;/tt&amp;gt; vous permet d&#039;itérer à travers une série de colonnes dans les résultats&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
for ( $i = 0; $i &amp;lt;= 2; $i++ ) {&lt;br /&gt;
  $column= $db-&amp;gt;loadColumn($i);&lt;br /&gt;
  print_r($column);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera :&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( [0] =&amp;gt; John Smith, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; Yvonne de Gaulle ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith@domain.example, [1] =&amp;gt; magda_h@domain.example, [2] =&amp;gt; ydg@domain.example ),&lt;br /&gt;
Array ( [0] =&amp;gt; johnsmith, [1] =&amp;gt; magdah, [2] =&amp;gt; ydegaulle )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
=== Résultats Multi-Ligne ===&lt;br /&gt;
Chacune de ces fonctions de résultats va retourner plusieurs enregistrements de la base de données. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! id !! name !! email !! nom d&#039;utilisateur&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 1 || John Smith || johnsmith@domain.example || johnsmith&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 2 || Magda Hellman || magda_h@domain.example || magdah&lt;br /&gt;
|- style=&amp;quot;background:yellow&amp;quot;&lt;br /&gt;
| 3 || Yvonne de Gaulle || ydg@domain.example || ydegaulle&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== loadRowList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadRowList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux indexés à partir des enregistrements de la table retourné par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadRowList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [0] =&amp;gt; 1, [1] =&amp;gt; John Smith, [2] =&amp;gt; johnsmith@domain.example, [3] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [0] =&amp;gt; 2, [1] =&amp;gt; Magda Hellman, [2] =&amp;gt; magda_h@domain.example, [3] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [0] =&amp;gt; 3, [1] =&amp;gt; Yvonne de Gaulle, [2] =&amp;gt; ydg@domain.example, [3] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;index&#039;] // e.g. $row[&#039;2&#039;][&#039;3&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir:&lt;br /&gt;
# Les indices du tableau sont des nombres débutant à zéro.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList()&amp;lt;/tt&amp;gt; retourne un tableau indexé de tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
) &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;][&#039;column_name&#039;] // e.g. $row[&#039;2&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;clé&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;clé&#039; - des tableaux associatifs à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; Array ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; Array ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; Array ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;][&#039;column_name&#039;] // e.g. $row[&#039;johnsmith&#039;][&#039;email&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: clé doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadAssocList($key, $column) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadAssocList(&#039;key&#039;, &#039;column&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif, indexé sur &#039;key&#039;, de valeurs de la colonne nommée &#039;column&#039; retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadAssocList(&#039;id&#039;, &#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[1] =&amp;gt; John Smith, &lt;br /&gt;
[2] =&amp;gt; Magda Hellman, &lt;br /&gt;
[3] =&amp;gt; Yvonne de Gaulle,&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList()&amp;lt;/tt&amp;gt; retourne un tableau indexé d&#039;objets PHP à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList();&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[0] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[1] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[2] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;] // e.g. $row[&#039;2&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;index&#039;]-&amp;gt;name // e.g. $row[&#039;2&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loadObjectList($key) ====&lt;br /&gt;
&amp;lt;tt&amp;gt;loadObjectList(&#039;key&#039;)&amp;lt;/tt&amp;gt; retourne un tableau associatif - indexé sur &#039;key&#039; - d&#039;objets à partir des enregistrements de la table retournés par la requête:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$row = $db-&amp;gt;loadObjectList(&#039;username&#039;);&lt;br /&gt;
print_r($row);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera (avec les retours à la ligne pour la lisibilité):&lt;br /&gt;
&amp;lt;pre&amp;gt;Array ( &lt;br /&gt;
[johnsmith] =&amp;gt; stdClass Object ( [id] =&amp;gt; 1, [name] =&amp;gt; John Smith, &lt;br /&gt;
    [email] =&amp;gt; johnsmith@domain.example, [username] =&amp;gt; johnsmith ), &lt;br /&gt;
[magdah] =&amp;gt; stdClass Object ( [id] =&amp;gt; 2, [name] =&amp;gt; Magda Hellman, &lt;br /&gt;
    [email] =&amp;gt; magda_h@domain.example, [username] =&amp;gt; magdah ), &lt;br /&gt;
[ydegaulle] =&amp;gt; stdClass Object ( [id] =&amp;gt; 3, [name] =&amp;gt; Yvonne de Gaulle, &lt;br /&gt;
    [email] =&amp;gt; ydg@domain.example, [username] =&amp;gt; ydegaulle ) &lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder individuellement aux lignes en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;] // e.g. $row[&#039;johnsmith&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
et vous pouvez accéder individuellement aux valeurs en faisant:&amp;lt;pre&amp;gt;$row[&#039;key_value&#039;]-&amp;gt;column_name // e.g. $row[&#039;johnsmith&#039;]-&amp;gt;email&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;br /&gt;
&lt;br /&gt;
=== Méthodes de jeu de résultat divers ===&lt;br /&gt;
==== getNumRows() ====&lt;br /&gt;
&amp;lt;tt&amp;gt;getNumRows()&amp;lt;/tt&amp;gt; will return the number of result rows found by the last SELECT or SHOW query and waiting to be read. To get a result from getNumRows() you have to run it &#039;&#039;&#039;after&#039;&#039;&#039; the query and &#039;&#039;&#039;before&#039;&#039;&#039; you have retrieved any results. To retrieve the number of rows affected by a INSERT, UPDATE, REPLACE or DELETE query, use getAffectedRows().&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&#039;php&#039;&amp;gt;&lt;br /&gt;
. . .&lt;br /&gt;
$db-&amp;gt;setQuery($query);&lt;br /&gt;
$db-&amp;gt;execute();&lt;br /&gt;
$num_rows = $db-&amp;gt;getNumRows();&lt;br /&gt;
print_r($num_rows);&lt;br /&gt;
$result = $db-&amp;gt;loadRowList();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donnera : &amp;lt;pre&amp;gt;3&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note: getNumRows() is only valid for statements like SELECT or SHOW that return an actual result set. If you run getNumRows() after loadRowList() - or any other retrieval method - you will get a PHP Warning:&lt;br /&gt;
&amp;lt;pre&amp;gt;Warning: mysql_num_rows(): 80 is not a valid MySQL result resource &lt;br /&gt;
in libraries\joomla\database\database\mysql.php on line 344&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voir aussi ===&lt;br /&gt;
*[[S:MyLanguage/Inserting, Updating and Removing data using JDatabase|Inserting, Updating and Removing data using JDatabase]]&lt;br /&gt;
*[[S:MyLanguage/Using the union methods in database queries|Using the union methods in database queries]] (Joomla! 3.3+)&lt;br /&gt;
*[https://api.joomla.org/cms-3/classes/JDatabaseQuery.html Joomla CMS 3.8 API] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Database{{#translation:}}]]&lt;br /&gt;
[[Category:JFactory{{#translation:}}]]&lt;br /&gt;
[[Category:Extension development{{#translation:}}]]&lt;br /&gt;
[[Category:Development Recommended Reading{{#translation:}}]]&lt;br /&gt;
[[Category:Tutorials{{#translation:}}]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
	<entry>
		<id>https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/126/fr&amp;diff=614439</id>
		<title>Translations:Selecting data using JDatabase/126/fr</title>
		<link rel="alternate" type="text/html" href="https://docs.sandbox.joomla.org/index.php?title=Translations:Selecting_data_using_JDatabase/126/fr&amp;diff=614439"/>
		<updated>2019-06-10T19:32:13Z</updated>

		<summary type="html">&lt;p&gt;Twister65: Created page with &amp;quot;A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&amp;#039;il n&amp;#039;a pas de valeur unique vous ne pourrez pas extra...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A savoir: Key doit être un nom de colonne valide de la table; il ne doit pas être un index ou une clé primaire. Mais s&#039;il n&#039;a pas de valeur unique vous ne pourrez pas extraire les résultats fidèlement.&lt;/div&gt;</summary>
		<author><name>Twister65</name></author>
	</entry>
</feed>