PHP Wie identischen Wert aus DB mittels PHP ändern?

imaginary4751

Newbie
Registriert
Feb. 2009
Beiträge
2
Hallo,

stehe vor folgendem Problem und bräuchte einen Denkanstoß:
In meiner MySQL Datenbank ist eine Spalte, in der ab und zu doppelte Werte vorkommen.
Also z.Bsp.:
Hund
Katze
Wolf
Fisch
Katze
Fuchs

An und für sich ja kein Problem, ich möchte auch, dass die Werte so wie sie sind in der Datenbank bleiben.
Nur ist es so, dass diese Werte unter anderem auch als Dateinamen von durchs PHP-Script neu erstellten Dateien verwendet werden.
Also:
hund.php
katze.php
wolf.php
fisch.php
katze.php *
fuchs.php
* Nun, sollten einige Werte identisch sein möchte ich, dass dem identischen Wert eine Zahl hinzugefügt wird, weil ich kann ja schlecht gleiche Dateinamen haben. Die restlichen Werte aus der Spalte sollen aber ganz normal weiter unverändert abgefragt werden.

Also mein Ziel:
hund.php
katze.php
wolf.php
fisch.php
katze1.php
fuchs.php

Ausschnitt aus meinem Script: (Entwerfen des Dateinamen)
$file_name = strtolower($row[beispielspalte]);
$file_name = preg_replace('/[^0-9a-z]/i','_',$file_name);
$file_name = ereg_replace("__","_",$file_name);
$file_name = ereg_replace("__","_",$file_name);
$file_name = $file_name . ".php";


Danke.
 
Zuletzt bearbeitet:
meine idee wäre zuerst zu überprüfen ob eine datei mit dem namen vorhanden ist, und wenn doch eben ne zahl anhängen...überprüfen ob nam+zahl vorhanden, wenn nicht speichern, wenn doch zahl++ und nochmal probieren...

Pseudocode:

$number = 1;

if ( !FileExists($name) ){
FileCreate($name);
}else{
while ( FileExists($name.$number) ){
number++;
}
FileCreate($name.$number)
}
 
Zuletzt bearbeitet:
Diesen Dateinamen als Primary Key in der Datenbank definierten.
Wenn du nun einen gleichen reinschreibst bekommst einen Fehler zurück. d.h. du weißt dass der aktuelle Namen bereits vergeben ist und fügt dann die Zahl an + neues reinschreiben.

Verursacht zwar starken Zugriff auf die Datenbank, kommt mir aber am einfachsten vor.

Und was wäre wenn du eine weiter Tabelle einfügt mit "id" sowie "filename". Dann musst du nichtmehr "katze.php" reinschreiben sondern vll "1". Dann kann auch 100x 1 in der Spalte stehen ;)

lg
 
Wenn ich mich nicht irre, muss doch sowieso jede Tabelle einen eindeutigen Primärschlüssel (kann natürlich auch eine Kombination aus mehreren Attributen sein) haben.

Aber warum erzeugst du überhaupt neue PHP-Skripte für jeden Datenbankeintrag?
 
Danke mal für die Antworten.
Also die erstellten Dateien sind Content-Pages, die werden durch das Script ja auch gleich gefüllt, also:
Script-Ausschnitt: (Erstellung der Dateien)
$fp = fopen($file_name, "w+");
fwrite($fp, "beispielbeispiel");
fclose($fp);
chmod ($file_name, 0777);


Wie gesagt das Script ist im Prinzip fertig und funktioniert so wie ich will, es geht nur um die ein oder anderen doppelten Einträge...

Ich hab mir auch vorgestellt, dass ich das mit einer if-Abfrage hinbekomme, aber wo und wie ich die einbauen muss ist mir nicht klar...
am ehesten scheint von "zeroflow" der Vorschlag meinen Vorstellungen zu ähneln, aber wie ich den in meinem Fall anwende?

Klingt vielleicht blöd aber mir ist auch nicht klar ob ich die Abfrage (wie auch immer die aussehen mag) oben beim "entwerfen" des Dateinamen anwenden soll oder aber unten beim wirklichen erstellen.
 
Zuletzt bearbeitet:
Zurück
Oben