Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Schnelle Überprüfung ob alle Felder einer Tabelle einen Inhalt haben [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Schnelle Überprüfung ob alle Felder einer Tabelle einen Inhalt haben


 
ExInfernis
09-01-2004, 17:25 
 
Hallo an Alle,

sitze gerade an meiner bisher größten DB, und komme an meine Grenzen.

Suche eine Funktion oder einen von mir noch nicht entdeckten kurzen befehl, mit dem ich testen kann, ob in einer Tabelle für eine bestimmte ID alle Variablen einen Wert haben, oder nicht.

Sinn und Zweck:

DB besteht aus 7 Tabellen, jede steht für eine Gruppe von Einträgen.
Über 7 Fromulare können die daten eingefügt bzw. Bearbeitet werden, zu den einzelnen Formularen gelangt man über eine Navigation.

In dieser Naviagtion werden die Links verschiedenfarbig dargestellt:

grüne Schrift -> Daten zu ID vorhanden, alle Felder ausgefüllt -- BEREITS UMGESETZT
orange Schrift -> Daten zu ID vorhanden, nicht alle Felder ausgefüllt
rote Schrift -> Daten zu ID nicht vorhanden -- BEREITS UMGESETZT

Die Tabellen haben zw. 20 u. 30 Werte, will jetzt nicht jeden mit strlen() testen.

Gibts da was ?

Vielen Dank im Voraus !!!

 
Abraxax
09-01-2004, 17:36 
 
meinst du sowas?

SELECT id, name FROM tabelle WHERE name IS NULL OR name = ''


btw *VERSCHIEB* nach sql

 
ExInfernis
09-01-2004, 18:57 
 
Kannst du mir deinen Code erklären, verstehe grad nett was der macht !

Danke fürs verschieben !!

 
Abraxax
09-01-2004, 18:59 
 
was soll ich da erklären?
das ist doch eine ganz einfache query.

was verstehst du daran nicht?

aber schaue vorher bei www.mysql.com vorbei, bevor ich dir einen SELECT erklären muss.

 
ExInfernis
10-01-2004, 03:19 
 
Sorry, war zu faul zu denken und hatte schon quadratische Augen.

SELECT id, name FROM tabelle WHERE name IS NULL OR name = ''

An sowas hab ich schon gedacht, da meine Tabellen aber bis zu 30 Spalten haben is das dann ja ein elendig langer befehl

SELECT * FROM tabelle WHERE id=$id and (spalte1 IS NULL OR spalte1 = '' OR spalte2 IS NULL OR spalte2 = '' ...

Andererseits mit einem Array mit allen spaltennamen und einem für die Tabellennamen und ein bis zwei Schleifen müsste das eigentlich gehen.

Werde das übers WE mal testen, danke für den Denkanstoss ! :-)

Schönes WE an Alle !

 
ExInfernis
11-01-2004, 00:29 
 
So,

hab es hinbekommen, und falls es nochmal jemand brauchen kann, hier ist der Code :

<?PHP
//Liste der zu durchsuchenden Tabellen
$dbanken=array('db1','db2',...);
//Liste der zu überprüfenden Spalten der einzelnen Tabellen
$spalten=array( array('spalte1','spalte2','spalte3'),
array(...),
...);
connect();
for($i=0;$i<sizeof($dbanken);$i++)
{
$db=$dbanken[$i];
//Überprüfung ob Eintrag überhaupt vorhanden ist
$sql="SELECT * FROM $db WHERE id='$id'";
$result= mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($result)>0)
{
//Wenn Eintrag gefunden wird, Überprüfung ob alle eintraege nicht NULL und nicht leer sind

for($j=0;$j<sizeof($spalten[$i]);$j++)
{

$spaltname=$spalten[$i][$j];
$sql="SELECT * FROM $db WHERE id='$id' AND ($spaltname IS NULL OR $spaltname='')";
$result2= mysql_query($sql) or die(mysql_error());
if ( mysql_num_rows($result2)>0)
{
//Es wurde ein leerer Eintrag gefunden, Wert wird gespeichert und Suche abgebrochen
$ergebnis[$i]="1";
$j=sizeof($spalten[$i]);

}
@mysql_free_result($result2);
}
//Festlegung der Schriftfarbe anhand der Ergebnisse
if($ergebnis[$i]=="1") $farbe="orange";
else $farbe="gruen";

//Ausgabe der Links zur Berabeitungsseite, entweder orange oder grün hinterlegt
echo"<a href=\"bearb.php\" target=\"_parent\"><span class=\"".$farbe."\">BLABLA[$i]</span></a>";

}
//Kein Eintrag gefunden, Link zur Erstellung des Datensatzes
else
{
//Ausgabe zur Write-Seite, da Datensatz noch nicht vorhanden
echo"<a href=\"write.php\" target=\"_parent\"><span class=\"rot\">BLABLA[$i]</span></a></td>";
}
}

@mysql_free_result($result);
@mysql_close();
?>

Schönen Sonntag noch,

EI

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:47 Uhr.