Bonjour,
Voilà, j'ai un script de petites annonces et je souhaite récupérer une variable de la BdD et je n'y arrive pas (j'avoue être peu compétent en PHP).
En fait, dans le listing des annonces, je veux pouvoir personnaliser le cadre de fond en fonction d'une option que le déposant choisi lors du dépôt, et créer une classe CCS pour chaque annonce, du style
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<div class  theme_<?php echo '$variable_option'; ?>
Le fichier à modifier est celui-ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
 
function htm_listing_ads($array, $affich, $type_listing)
{
	global $language, $param_gen, $cache_regions, $cache_counties, $cache_cat, $cache_lang, $cache_advertisement, $file_exit;
 
	if($type_listing == 1 || $type_listing >= 3)
	{
		$count_adv = 1;
 
		if(!isset($_SESSION['count_adv']))
		$_SESSION['count_adv'] = 1;
 
		$ad_selected = [];
 
		foreach($_COOKIE as $k => $v)
		{
			if(preg_match("#Script_PAG#", $v) == true)
			{
				$v = str_replace('Script_PAG', '', $v);
				$v = (int) $v;
			}
			else $v = 0;
 
			if($v != 0)
			$ad_selected[$v] = 1;
		}
 
		foreach($array as $row)
		{
			$id_ad = (int) $row['id_ad'];
			$id_reg = (int) $row['id_reg'];
			$id_county = (int) $row['id_county'];
			$id_cat = (int) $row['id_cat'];
 
			$disc = '';
			$cat_name = '';
			$reg_name = '';
			$county_name = '';
 
			foreach($cache_cat as $v)
			{
				if($id_cat == $v['id_cat'])
				{
					$disc = (int) $v['disc'];
 
					foreach($cache_lang as $lang)
					{
						$code_lang = stripslashes(htmlspecialchars($lang['code_lang'], ENT_QUOTES));
 
						if($_SESSION['code_lang'] == $code_lang)
						{
							$cat_name = (isset($v['name_cat_'. $code_lang])) ? stripslashes(htmlspecialchars($v['name_cat_'. $code_lang], ENT_QUOTES)) : '';
							break;
						}
					}
					break;
				}
			}
			foreach($cache_regions as $v)
			{
				if($id_reg == $v['id_reg'])
				{
					foreach($cache_lang as $lang)
					{
						$code_lang = stripslashes(htmlspecialchars($lang['code_lang'], ENT_QUOTES));
 
						if($_SESSION['code_lang'] == $code_lang)
						{
							$reg_name = (isset($v['name_reg_'. $code_lang])) ? stripslashes(htmlspecialchars($v['name_reg_'. $code_lang], ENT_QUOTES)) : '';
							break;
						}
					}
					break;
				}
			}
			foreach($cache_counties as $v)
			{
				if($id_county == $v['id_county'])
				{
					foreach($cache_lang as $lang)
					{
						$code_lang = stripslashes(htmlspecialchars($lang['code_lang'], ENT_QUOTES));
 
						if($_SESSION['code_lang'] == $code_lang)
						{
							$county_name = (isset($v['name_county_'. $code_lang])) ? stripslashes(htmlspecialchars($v['name_county_'. $code_lang], ENT_QUOTES)) : '';
							break;
						}
					}
					break;
				}
			}
 
			$title = stripslashes(htmlspecialchars($row['title']));
			$text = stripslashes(htmlspecialchars($row['text']));
			$postcode = htmlspecialchars($row['postcode'], ENT_QUOTES);
			$city = htmlspecialchars($row['city'], ENT_QUOTES);
			$status = (int) $row['status'];
			$type =(int) $row['type'];
			$date = (int) $row['date'];
			$price = (float) $row['price'];
			$price = number_format($price, 2, ',', ' ');
			$urgent = (int) $row['urgent'];
			$framed = (int) $row['framed'];
			$picture_name = htmlspecialchars($row['picture_name'], ENT_QUOTES);
			$video = htmlspecialchars($row['video'], ENT_QUOTES);
			$nb_pictures = htmlspecialchars($row['pictures_num'], ENT_QUOTES);
			$nb_visit = (int) $row['visit_num'];
			$comment_total = (int) $row['comment_total'];
			$comment_average = (double) $row['comment_average'];
 
 
			$name_picture = ($nb_pictures > 1) ? $language['picture_ad2'] : $language['picture_ad1'];
 
			//Url rewriting
 
			$accent = array('à', 'á', 'â', 'ã', 'ä', 'å', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'ç', 'Ç', 'é', 'è', 'ê', 'ë', 'È', 'É', 'Ê', 'Ë', 'ì', 'í', 'î', 'ï', 'Ì', 'Í', 'Î', 'Ï', 'ò', 'ó', 'ô', 'õ', 'ö', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'ù', 'ú', 'û', 'ü', 'Ú', 'Ù', 'Û', 'Ü', 'Ý', 'ý', 'ÿ', 'ñ', ''');
			$without_accent = array('a', 'a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A', 'A', 'A', 'c', 'C', 'e', 'e', 'e', 'e', 'E', 'E', 'E', 'E', 'i', 'i', 'i', 'i', 'I', 'I', 'I', 'I', 'o', 'o', 'o', 'o', 'o', 'O', 'O', 'O', 'O', 'O', 'u', 'u', 'u', 'u', 'U', 'U', 'U', 'U', 'y', 'y', 'y', 'n', '-');      
 
			$url_ad = $reg_name .'-'. $county_name .'-'. $cat_name .'-'. $title;
			$url_ad = str_replace($accent, $without_accent, $url_ad);
 
			$url = array();
 
			for ($i = 0; $i < strlen($url_ad); $i++) 
			array_push($url, $url_ad[$i]);
 
			$url_display = '';
 
			foreach($url as $url_ad)
			{
				if(preg_match('#^[a-zA-Z0-9]$#', $url_ad) != true)
				$url_ad = str_replace($url_ad, '-', $url_ad);
 
				$url_display .= $url_ad;
			}
Je ne vois pas du tout comment les variables sont récupérées
Le développeur (pas très loquace pour aider ) a fait son script avec un système de fichier cache qui sont des "array".


Voici les colonnes de la table ads_data , id_ad étant la référence de l'annonce

id_ad_data id_ad id_cat_opt id_val_data
4 1 15 30
3 1 18 49


Et donc, par exemple, je souhaite récupérer la valeur de id_val_data quand id_cat_opt = 18 ...ici, c'est 49

Dans le fichier cache_val_data , j'ai un array comme cela qui est créé dans la partie administration quand on créé les options :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$cache_val_data = array(
0=>
array(
'id_val_data' => '49',
'pos_val_data' => '1',
'val_data_fr' => 'standard',
'id_cat_opt' => '18',
'par_cat_opt' => '0',
),
1=>
array(
'id_val_data' => '35',
'pos_val_data' => '1',
'val_data_fr' => 'Autre',
'id_cat_opt' => '16',
'par_cat_opt' => '0',
),
Merci de votre aide.