Afficher le nom de la table sql ou les données sont stockés
Bonjour, Je suis entrain de réaliser un petit script qui affiche données depuis plusieurs tables d'une base de donnée. Un surfeur sur le forum ma bien idée à trouver la solution pour afficher les champs de multiple tables, moi ce que je cherche actuellement c'est ajouter une colon sur le tableau des résultats qui affiche le nom de la table d'où viens les données ou le nom du fournisseur un truc comme ca. Et aussi j'ai toujours le problème de suppression qui marche pas par ce que c'est un script que j'ai aménager pour les fournisseurs et là je le transforme pour Admin. bon voila le script et merci d'avance :
<?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="location"; // Database name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM partenaire1
UNION ALL
SELECT * FROM partenaire2
UNION ALL
SELECT * FROM partenaire3
";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
?>
<div align="center">
<b><font size="2" face="Tahoma" color="#AAAAAA">Gestion des voitures</font></b><table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><form name="form1" method="post" action="">
<table width="400" border="0" cellpadding="3" cellspacing="1" >
<tr>
<td align="center" bgcolor="#999999"> </td>
<td align="center" bgcolor="#999999"><strong>
<font size="2" face="Tahoma" color="#FFFFFF">Id</font></strong></td>
<td align="center" bgcolor="#999999"><strong>
<font size="2" face="Tahoma" color="#FFFFFF">Marque voiture</font></strong></td>
<td align="center" bgcolor="#999999"><strong>
<font size="2" face="Tahoma" color="#FFFFFF">Date début</font></strong></td>
<td align="center" bgcolor="#999999"><strong>
<font size="2" face="Tahoma" color="#FFFFFF">Date fin</font></strong></td>
<td align="center" bgcolor="#999999"><strong>
<font size="2" face="Tahoma" color="#FFFFFF">Fournisseur</font></strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td align="center"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['id']; ?>"></td>
<td><font size="2" face="tahoma"><? echo $rows['id']; ?></font></td>
<td><font size="2" face="tahoma"><? echo $rows['marque_voiture']; ?></font></td>
<td><font size="2" face="tahoma"><? echo $rows['date_debut']; ?></font></td>
<td><font size="2" face="tahoma"><? echo $rows['date_fin']; ?></font></td>
<td><font size="2" face="tahoma"><? echo $rows['nomtable']; ?></font></td>
</tr>
<?php
}
?>
<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF">
<input name="delete" type="submit" id="delete" value="Retiré de la liste"></td>
</tr>
<?
// Check if delete button active, start this
if(isset($_POST['delete'])){
for($i=0;$i<$count;$i++){
$del_id = $_POST['checkbox'][$i];
$sql = "DELETE FROM $tbl_name WHERE id ='$del_id'";
$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=sup2.php\">";
}
}
mysql_close();
?>
</table>
</form>
</td>
</tr>
</table></div>
Réponses apportées à cette discussion
À partir d'une requête UNION, ce n'est tout simplement pas possible. Ce genre de requête élémine les doublons et ne permet pas d'indiquer de quelle sous-requête est issue telle ou telle donnée, laquelle donnée pourrait venir d'une seule ou de plusieurssources.
oui c'est ce que je me suis dis aussi, mais la je suis un peut perdu comment faire?
avez vous une idée d'une solution possible pour que le nom du fournisseur s'affiche a côté du resultat, par exemple un chanp qui porte le nom du fournisseur dans la table!
....
À part en effectuant des requêtes individuelles permettant cette identification en amont, je ne vois pas. Et à partir de là, il faudra traiter et éventuellement dédoublonner par traitement..
Bonjour,
tu peux récupérer le nom de la table dans les résultats, il faut l'intégrer au résultat.
Select count () || ' partenaire1' FROM partenaire1 UNION ALL
Select count () || ' partenaire2' FROM partenaire2 UNION ALL
Select count (*) || ' partenaire3' FROM partenaire3;
cela va ajouter le nom de la table sur le résultat, il est meme possible d'ajouter un having count (*) > 0 pour ne pas récupérer les lignes vide en cas d'utilisation de clause where
lol, salut Paz59000, pas sûr qu'il attendait encore la réponse depuis plus de 10 ans, je veux croire qu'il a résolu sont problème depuis. Pas sûr non plus que cette syntaxe existait dans MySQL à ce moment là.
Ceci étant, ça pourra éventuellement servir à d'autres qui se heurteraient à un problème similaire. ;-)