par
damaskinos » 12 août 2008, 19:46
Merci beaucoup sékiltoyai,
j'ai changé ma requete et là j'ai plus de redondance. Par contre j'ai un problème qui apparait. Je dois construire un xml qui ressemble à:
Code : Tout sélectionner
<records>
<record><data semantic_name="mark idMark" value="1" flag="primary_key" />
<data semantic_name="mark make" value="Acura" flag="normal" />
<data semantic_name="model idModel" value="1" flag="primary_key" />
<data semantic_name="model model" value="MDXxxx" flag="normal" />
<data semantic_name="model desc" value="One of the nicest car" flag="normal" />
<data semantic_name="model price" value="300000" flag="normal" />
<data semantic_name="model year" value="127" flag="normal" />
<data semantic_name="model warranty" value="6" flag="normal" />
<data semantic_name="model pic" value="http://server.com/server/img/acuramdx.jpg" flag="normal" />
</record>
<record>
<data semantic_name="mark idMark" value="1" flag="primary_key" />
<data semantic_name="mark make" value="Acura" flag="normal" />
<data semantic_name="model idModel" value="2" flag="primary_key" />
<data semantic_name="model model" value="RDX" flag="normal" />
<data semantic_name="model desc" value="The second of the nicest car done by Acura" flag="normal" />
<data semantic_name="model price" value="20000" flag="normal" />
<data semantic_name="model year" value="127" flag="normal" />
<data semantic_name="model warranty" value="3" flag="normal" />
<data semantic_name="model pic" value="http://server.com/server/img/2007_acura_rdx.jpg" flag="normal" />
</record>
</records>
semantic_name nous donne le nom de la table et la colonne,
value, la valeur de la requete,
flag me laisse savoir si le champ est une clé primaire ou pas.
Avant je change ma requete tout était ok. Maintenant je blogue au niveau de la récupération des métadonnées.
je poste le bout de code concerné.
$sql = "SELECT mark.`idMark` AS `mark idMark` , mark.`make` AS `mark make` , GROUP_CONCAT( model.`idModel` ) AS `model idModel` , GROUP_CONCAT( model.`model` ) AS `model model` , GROUP_CONCAT( model.`desc` ) AS `model desc` , GROUP_CONCAT( model.`price` ) AS `model price` , GROUP_CONCAT( model.`year` ) AS `model year` , GROUP_CONCAT( model.`warranty` ) AS `model warranty` , GROUP_CONCAT( model.`pic` ) AS `model pic` FROM `mark` , `model` WHERE mark.`idMark` = model.`idMark` GROUP BY mark.`idMark`";
if($stmt->prepare($sql))
{
//echo "*****";
$stmt->bind_result($v1,$v2,$v3,$v4,$v5,$v6,$v7,$v8,$v9);
$stmt->execute();
/*construction of the metadata array*/
$result = $stmt->result_metadata();
while($field = $result->fetch_field())
{
//var_dump($field);
$tmp = $field->name."@$".$field->flags; //marche plus
array_push($tabMeta,$tmp);
}
var_dump($tabMeta);
/*construction of the result set*/
while($stmt->fetch())
{
/* @$separate the value with the field name and his flag ; # start another colonne*/
$tmp = $v1."@$".$tabMeta[0]."#".$v2."@$".$tabMeta[1]."#".$v3."@$".$tabMeta[2]."#".$v4."@$".$tabMeta[3]."#".$v5."@$".$tabMeta[4]."#".$v6."@$".$tabMeta[5]."#".$v7."@$".$tabMeta[6]."#".$v8."@$".$tabMeta[7]."#".$v9."@$".$tabMeta[8];
array_push($tabResu,$tmp);
}
Toute suggestion est bienvenue.
Merci d'avance
Merci beaucoup sékiltoyai,
j'ai changé ma requete et là j'ai plus de redondance. Par contre j'ai un problème qui apparait. Je dois construire un xml qui ressemble à:
[code]
<records>
<record><data semantic_name="mark idMark" value="1" flag="primary_key" />
<data semantic_name="mark make" value="Acura" flag="normal" />
<data semantic_name="model idModel" value="1" flag="primary_key" />
<data semantic_name="model model" value="MDXxxx" flag="normal" />
<data semantic_name="model desc" value="One of the nicest car" flag="normal" />
<data semantic_name="model price" value="300000" flag="normal" />
<data semantic_name="model year" value="127" flag="normal" />
<data semantic_name="model warranty" value="6" flag="normal" />
<data semantic_name="model pic" value="http://server.com/server/img/acuramdx.jpg" flag="normal" />
</record>
<record>
<data semantic_name="mark idMark" value="1" flag="primary_key" />
<data semantic_name="mark make" value="Acura" flag="normal" />
<data semantic_name="model idModel" value="2" flag="primary_key" />
<data semantic_name="model model" value="RDX" flag="normal" />
<data semantic_name="model desc" value="The second of the nicest car done by Acura" flag="normal" />
<data semantic_name="model price" value="20000" flag="normal" />
<data semantic_name="model year" value="127" flag="normal" />
<data semantic_name="model warranty" value="3" flag="normal" />
<data semantic_name="model pic" value="http://server.com/server/img/2007_acura_rdx.jpg" flag="normal" />
</record>
</records>
[/code]
semantic_name nous donne le nom de la table et la colonne,
value, la valeur de la requete,
flag me laisse savoir si le champ est une clé primaire ou pas.
Avant je change ma requete tout était ok. Maintenant je blogue au niveau de la récupération des métadonnées.
je poste le bout de code concerné.
[php]
$sql = "SELECT mark.`idMark` AS `mark idMark` , mark.`make` AS `mark make` , GROUP_CONCAT( model.`idModel` ) AS `model idModel` , GROUP_CONCAT( model.`model` ) AS `model model` , GROUP_CONCAT( model.`desc` ) AS `model desc` , GROUP_CONCAT( model.`price` ) AS `model price` , GROUP_CONCAT( model.`year` ) AS `model year` , GROUP_CONCAT( model.`warranty` ) AS `model warranty` , GROUP_CONCAT( model.`pic` ) AS `model pic` FROM `mark` , `model` WHERE mark.`idMark` = model.`idMark` GROUP BY mark.`idMark`";
if($stmt->prepare($sql))
{
//echo "*****";
$stmt->bind_result($v1,$v2,$v3,$v4,$v5,$v6,$v7,$v8,$v9);
$stmt->execute();
/*construction of the metadata array*/
$result = $stmt->result_metadata();
while($field = $result->fetch_field())
{
//var_dump($field);
$tmp = $field->name."@$".$field->flags; //marche plus
array_push($tabMeta,$tmp);
}
var_dump($tabMeta);
/*construction of the result set*/
while($stmt->fetch())
{
/* @$separate the value with the field name and his flag ; # start another colonne*/
$tmp = $v1."@$".$tabMeta[0]."#".$v2."@$".$tabMeta[1]."#".$v3."@$".$tabMeta[2]."#".$v4."@$".$tabMeta[3]."#".$v5."@$".$tabMeta[4]."#".$v6."@$".$tabMeta[5]."#".$v7."@$".$tabMeta[6]."#".$v8."@$".$tabMeta[7]."#".$v9."@$".$tabMeta[8];
array_push($tabResu,$tmp);
}
[/php]
Toute suggestion est bienvenue.
Merci d'avance