| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

09-08-2005, 12:47
|
|
kmergen
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 20
|
|
Array erstellen
Hallo,
ich möchte Daten aus eine MySQL Tabelle in ein Array einlesen.
Die Daten kommen aus 5 verschiedenen Felder der Tabelle.
Es sollen aber nur die Felder eingelesen werden die auch einen Wert enthalten.
Wie muss ich den folgenden Code erweitern oder kann mann direkt in der SQL-Anweisung nur die mit Werten gefüllten Felder auslesen.
Hier der Code
PHP-Code:
mysql_select_db($db,$conn);
$sql="SELECT fzid, foto1, foto2, foto3, foto4, foto5 FROM tblfz";
$erg=mysql_query($sql,$conn);
$row=mysql_fetch_array($erg);
//Neuer Teil
$fotodaten=array($row[foto1], $row[foto2], $row[foto3], $row[foto4],
Gruss Klaus
|

09-08-2005, 13:01
|
Shurakai
Master  
|
|
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.090
|
|
sind das NULL werte?
WHERE field IS NOT NULL oder halt auf einen leeren wert prüfen ...
btw.: das ist doch schon nen array wieso machst du das nochmal?
und: strings sind mit ' ' einzuschließen!
|

09-08-2005, 13:17
|
|
kmergen
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 20
|
|
Hallo,
danke für die schnelle Antwort.
Ja es sind Nullwerte.
Das Problem ist nur wie die Abfrage dann aussehen kann.
Es kann z.B. sein das foto1 einen Wert hat, fot2 Null ist und foto5 wieder einen Wert hat.
Deswegen wollte ich die Daten die einen Wert haben in ein neues Array einlesen.
Ist klar, wenn es direkt mit ser sql geht ist das nicht notwendig.
Gruss Klaus
|

09-08-2005, 17:58
|
|
kmergen
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 20
|
|
Hallo,
ich habe es jetzt folgendermassen versucht:
PHP-Code:
//Fotos in Array einlesen
mysql_select_db($db,$conn);
$sql="SELECT foto1, foto2, foto3, foto4, foto5 FROM tblfz";
$erg=mysql_query($sql,$conn);
$verz=opendir ('../img/fz/gross/');
$row = mysql_fetch_assoc($erg);
$zaehler=0;
while ($file = readdir ($verz)) {
if (in_array($file,$row) != true){
print_r ($file);
//unlink($file);
$zaehler=$zaehler+1;
echo "<br>";
}
}
echo "Es wurden insgesamt " . "$zaehler" . " Dateien gelöscht";
closedir($verz);
mysql_free_result($erg)
Das funktioniert aber nicht
Er gibt mir dann alle Dateien die in $verz vorhanden sind aus.
Woran liegt das?
Gruss Klaus
|

09-08-2005, 20:44
|
|
hhcm
PHP Senior
|
|
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.829
|
|
Shurakai hat dich schonmal gefragt warum du ein bestehendes Array in ein neues einliest.
Wenn "WHERE field IS NOT NULL" ein Array liefert sind da keine leeren Felder mehr drin. Du kannst also dein Ergebnis mit z.B
PHP-Code:
while ($i=0;$i<count($erg);$i++)
{
usw...
}
auslesen.
Versteh ich irgendetwas anders als andere?
__________________
gruss Chris
Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
|

09-08-2005, 21:13
|
|
kmergen
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 20
|
|
Hallo,
danke für deine Antwort.
Ich habe jetzt erstmal "WHERE field IS NOT NULL" in den SQL-String eingebaut aber er funktioniert nicht. Was bedeutet denn "field".
Ich frage ja dann über die while-Schleife ob die Datei im Array $row enthalten ist.
Irgendwie passt das aber noch nicht so recht.
Gruss Klaus
|

09-08-2005, 22:08
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Zitat:
Original geschrieben von hhcm
PHP-Code:
while ($i=0;$i<count($erg);$i++)
{
usw...
}
|
Er wollte for schreiben.
Probiere es mal hiermit:
PHP-Code:
mysql_select_db($db, $conn);
$sql = 'SELECT foto1, foto2, foto3, foto4, foto5 FROM tblfz';
$erg = mysql_query($sql, $conn);
$pfad = '../img/fz/gross/';
$zaehler = 0;
while ($row = mysql_fetch_row($erg)) {
foreach ($row as $fotox) {
if (is_file($pfad.$fotox)) {
echo $pfad.$fotox.' wäre gelöscht<br />';
// unlink($pfad.$fotox);
$zaehler++;
}
}
}
echo "Es wurden insgesamt $zaehler Dateien gelöscht";
|

09-08-2005, 22:26
|
|
kmergen
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 20
|
|
Hallo,
vielen Dank für deine schnelle Antwort.
Wenn ich das jetzt so mache werden 1352 Dateien gelöscht.
Es dürften aber nur etwa 350 sein.
Das ist etwa die Anzahl an nicht mehr benötigten Dateien im Verzeichnis "img/fz/gross/".
bzw. die Dateinamen die nicht mehr in der Datenbank enthalten sind.
Meine Frage ist jetzt, ob im Array nach nicht mehr vorhandenen Dateinamen gesucht wird.
Dafür hatte ich es mit "in_array" versucht und mit "mysql_fetch_assoc"
Kannst du mir wieiterhelfen.
Gruss Klaus
Geändert von kmergen (09-08-2005 um 22:44 Uhr)
|

10-08-2005, 07:03
|
|
hhcm
PHP Senior
|
|
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.829
|
|
Zitat:
Original geschrieben von onemorenerd
Er wollte for schreiben.
|
OffTopic:
ARG Ja wollte er....
__________________
gruss Chris
Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
|

10-08-2005, 09:00
|
|
kmergen
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 20
|
|
Hallo,
verstehe die Antwort mit "for" schreiben nicht.
Die Lösung mit der foreach-Schleife ist ja gut, aber das Script würde ja dann alle Dateien löschen die in der Tabelle einen entsprechenden Eintrag haben.
Es sollen aber nur diejenigen Dateien gelöscht werden, die keinen Eintrag mehr in der Tabelle haben.
Also wenn im Verzeichnis eine Datei "1345.jpg" ist und in der Tabelle nicht mehr, dann soll diese Datei gelöscht werden.
Wie man das Script nicht dementsprechend umschreiben.
Gruss Klaus
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|