listare tabele ce indeplinesc o anumita conditie
Moderatori: Moderatori, Start Moderator
-
surrogates
- PHPRomania Supporter
- Mesaje: 8
- Membru din: Joi Oct 06, 2011 12:54 pm
listare tabele ce indeplinesc o anumita conditie
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
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
- misu
- PHPRomania Supporter
- Mesaje: 23
- Membru din: Joi Sep 01, 2011 2:54 pm
- Localitate: Brasov
- Contact:
Cod: Selectaţi tot
while ($row = mysql_fetch_row($result)) {
if($count=mysql_num_rows(mysql_query("SELECT * FROM $row[0] WHERE camp1='a'"))) {
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>";
}
}
interesanta structura bazei tale de date...
- zeuscool
- Senior Member
- Mesaje: 250
- Membru din: Mie Sep 05, 2007 10:59 am
- Localitate: Constanta
- Contact:
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
Follow me on (Da cu share, like, +1 sau ce mai stii !!!) sau comenteaza articolele, sugereaza etc, FII SOCIAL ...
marianzburlea.com
-
surrogates
- PHPRomania Supporter
- Mesaje: 8
- Membru din: Joi Oct 06, 2011 12:54 pm
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
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
- misu
- PHPRomania Supporter
- Mesaje: 23
- Membru din: Joi Sep 01, 2011 2:54 pm
- Localitate: Brasov
- Contact:
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'";
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'";
-
surrogates
- PHPRomania Supporter
- Mesaje: 8
- Membru din: Joi Oct 06, 2011 12:54 pm
-
quadmachine
- Senior Member
- Mesaje: 807
- Membru din: Sâm Iul 10, 2010 4:58 pm
- Localitate: Ploiesti
- Contact:
Cod: Selectaţi tot
Nu confundati femeia de serviciu cu profesoara de Limba si Literatura Romana.-
surrogates
- PHPRomania Supporter
- Mesaje: 8
- Membru din: Joi Oct 06, 2011 12:54 pm
-
quadmachine
- Senior Member
- Mesaje: 807
- Membru din: Sâm Iul 10, 2010 4:58 pm
- Localitate: Ploiesti
- Contact:
Nici asa nu iti functioneaza?
[php]
<?php
if($count = mysql_query("SELECT COUNT(`camp`) FROM $row[0] WHERE camp1='a'" )))
?>
[/php]
[php]
<?php
if($count = mysql_query("SELECT COUNT(`camp`) FROM $row[0] WHERE camp1='a'" )))
?>
[/php]
Cod: Selectaţi tot
Nu confundati femeia de serviciu cu profesoara de Limba si Literatura Romana.@surrogates păi problema ta e una singură.
Conform semnăturii funcției mysql_num_rows():
vei observa ca pentru mysql_num_rows() ca să funcționeze va trebui să "hrănești" funcția cu un parametru de tip resursă. Acest parametru de tip resursă îl obții de la: mysql_query() care conform manualului funcția are semnătura:
cu precizarea că:
ceea ce ne duce cu gândul la parametrul opțional a lui mysql_query():
care spune că:
Din toate acestea rezultă că probabil tu nu ai o conexiunea către baza de date. Pentru a verifica dacă poți stabili o conexiune cu baza de date testează cu:
Dacă vei primi ca output o resursă => că te poți conecta la baza de date dar mysql_query() este pus într-un context în care nu poate avea acces la resursa returnată de mysl_connect() deci va trebui să salvezi această resursă într-o variabilă care să fie vizibilă în contextul în care folosești mysql_query() și să îi dai această resursă lui mysql_query() ca să poată funcția la rândul ei, să returneze resursa aferentă ei către mysql_num_rows() și astfel să scapi de acel warning.
Sper să îți fi fost de ajutor și încearcă să înțelegi foarte bine ceea ce ți-am zis astfel putându-te ajuta pe tine însuți într-un final.
Sfat: Renunță la extensia Mysql, folosește Mysqli în locul ei. Mysql nu mai este folosită de ceva timp.
Spor.
Conform semnăturii funcției mysql_num_rows():
Cod: Selectaţi tot
int mysql_num_rows ( resource $result ) vei observa ca pentru mysql_num_rows() ca să funcționeze va trebui să "hrănești" funcția cu un parametru de tip resursă. Acest parametru de tip resursă îl obții de la: mysql_query() care conform manualului funcția are semnătura:
Cod: Selectaţi tot
resource mysql_query ( string $query [, resource $link_identifier ] )cu precizarea că:
Cod: Selectaţi tot
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error. ceea ce ne duce cu gândul la parametrul opțional a lui mysql_query():
Cod: Selectaţi tot
[, resource $link_identifier ]care spune că:
Cod: Selectaţi tot
The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If no connection is found or established, an E_WARNING level error is generated. Din toate acestea rezultă că probabil tu nu ai o conexiunea către baza de date. Pentru a verifica dacă poți stabili o conexiune cu baza de date testează cu:
Cod: Selectaţi tot
<?php var_dump(mysql_connect('localhost', 'mysql_user', 'mysql_password'));Dacă vei primi ca output o resursă => că te poți conecta la baza de date dar mysql_query() este pus într-un context în care nu poate avea acces la resursa returnată de mysl_connect() deci va trebui să salvezi această resursă într-o variabilă care să fie vizibilă în contextul în care folosești mysql_query() și să îi dai această resursă lui mysql_query() ca să poată funcția la rândul ei, să returneze resursa aferentă ei către mysql_num_rows() și astfel să scapi de acel warning.
Sper să îți fi fost de ajutor și încearcă să înțelegi foarte bine ceea ce ți-am zis astfel putându-te ajuta pe tine însuți într-un final.
Sfat: Renunță la extensia Mysql, folosește Mysqli în locul ei. Mysql nu mai este folosită de ceva timp.
Spor.
-
surrogates
- PHPRomania Supporter
- Mesaje: 8
- Membru din: Joi Oct 06, 2011 12:54 pm
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 ...
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 ...
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 30 vizitatori
