Pagina 1 din 1

listare tabele ce indeplinesc o anumita conditie

Scris: Joi Oct 27, 2011 3:03 pm
de surrogates
intampin urmatoarea problema ...
am o baza de date in care sunt n tabele ce au aceeasi structura, dar numarul acestor tabele mai creste din cand in cand
chiar daca numarul acestora creste, vreau sa afisez doar acele tabele care au o anumita valoare intr-un camp ... sa zicem cele care au in campul camp1 valoarea a
pana acum am reusit sa afisez toate tabelele din acea baza de date, folosind scriptul:

<?php
$dbname = 'test';
if (!mysql_connect('localhost', 'root', '1234')) {
echo 'Could not connect to mysql';
exit;
}
//
$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql);

if (!$result) {
echo "DB Error, could not list tables\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}

//afisare
echo "<table width='200' border='1' align='center'>";
echo "<tr>
<th>Nume tabela</th>
</tr>";

while ($row = mysql_fetch_row($result)) {
echo "<br>";
echo "<tr align='left'><td>";
echo "{$row[0]}";
echo "</td></tr>";
}

echo "</table>";

mysql_free_result($result);
?>

cum pot sa afisez doar acele tabele care ma intereseaza?
multumesc mult

Scris: Joi Oct 27, 2011 4:35 pm
de misu

Scris: Joi Oct 27, 2011 11:20 pm
de zeuscool
interesnat este ca nu stiti html ... ce cauta br in structura la table nu stiu .. dar in fine, o luati ca pe o observatie si invatati sper

Scris: Vin Oct 28, 2011 11:35 am
de surrogates
multumesc pt. solutie, insa ... nu am rezolvat problema ...
imi apare eroarea:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\jpgraph\aa.php on line 25

linia 25 este urmatoarea:
if($count = mysql_num_rows(mysql_query("SELECT * FROM $row[0] WHERE time = '-1'"))) {

si afisaza de asemenea mesajul:
nu am gasit inregistrari corespunzatoare in tabelul aaa
cu toate ca am asemenea inregistrai in tabelul aaa

Scris: Vin Oct 28, 2011 12:20 pm
de misu
asta se intampla probabil pentru ca ai in baza de date unul sau mai multe tabele ce nu contin campul time.
prefixeaza acele tabele care au structura identica, ex: tm_tabel, le redenumesti,
apoi selectezi doar tabelele cu "tm_" in fata (unde esti sigur ca exista campul time)
$sql = "SHOW TABLES FROM $dbname LIKE 'tm_%'";

sau poti selecta doar tabelele care contin campul time astfel:
$sql = "SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('time') AND TABLE_SCHEMA='$dbname'";

Scris: Lun Oct 31, 2011 9:23 am
de surrogates
toate tabelele contin campul time ... ideea e ca din n tabele, doar un numar de x tabele au in campul time valoarea -1
inca nu am gasit solutia sa le afisez doar pe cele cu valoarea -1 ...

Scris: Lun Oct 31, 2011 8:32 pm
de quadmachine

Scris: Joi Noi 03, 2011 10:19 am
de surrogates

Scris: Joi Noi 03, 2011 1:43 pm
de MihaiA

Scris: Joi Noi 03, 2011 3:50 pm
de quadmachine
Nici asa nu iti functioneaza?

[php]
<?php
if($count = mysql_query("SELECT COUNT(`camp`) FROM $row[0] WHERE camp1='a'" )))
?>
[/php]

Scris: Vin Noi 04, 2011 11:05 am
de starlays

Scris: Lun Noi 07, 2011 12:51 pm
de surrogates
mii de multumiri tuturor ...
m-am mai jucat putin cu acel cod si l-am modificat (inclusiv partea de conectare) ...
acum arata asa:

<?php

$id = @mysql_connect("localhost","root","1234");
mysql_select_db("test",$id);

//
$sql = "SHOW TABLES FROM test";
$result = mysql_query($sql);

if (!$result) {
echo "DB Error, could not list tables\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}

//afisare
echo "<table width='200' border='1' align='center'>";
echo "<tr>
<th>Nume tabela</th>
</tr>";

while ($row = mysql_fetch_row($result)) {
if($count = mysql_num_rows(mysql_query("SELECT count('time') FROM $row[0] WHERE time = '-1'", $id))) {
// if($count = mysql_query("SELECT COUNT('time') FROM $row[0] WHERE time='-1'", $id)) {
echo "<br>";
echo "<tr align='left'><td>";
echo 'am gasit '.$count.' inregistrari corespunzatoare in tabelul '.$row[0];
echo "</td></tr>";
} else {
echo "<br>";
echo "<tr align='left'><td>";
echo 'nu am gasit inregistrari corespunzatoare in tabelul '.$row[0];
echo "</td></tr>";
}
}

?>

cu acest cod, obtin urmatorul rezultat:

am gasit 1 inregistrari corespunzatoare in tabelul 1
am gasit 1 inregistrari corespunzatoare in tabelul 2
...

daca folosesc insa linia:
if($count = mysql_query("SELECT COUNT('time') FROM $row[0] WHERE time='-1'", $id)) {
obtin un rezultat de forma:
am gasit Resource id #5 inregistrari corespunzatoare in tabelul 1
am gasit Resource id #6 inregistrari corespunzatoare in tabelul 2
...

e ceva care inca imi scapa ...