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)
Eintrag verhindern falls vorhanden [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Eintrag verhindern falls vorhanden


 
karabey81
18-06-2011, 17:17 
 
Hallo,

Ich möchte gerne hier den Eintrag verhindern wenn schon eines existiert. Was sollte ich dazwischen genau einsetzen?

Original
if(isset($_GET['up']))
{
if(strlen($_GET['up'])==71)
{
db_conn();
$raw = explode(":",$_GET['up']);
$sql = "UPDATE ".$database_table." SET status='".$raw[1]."',upl_time='".time()."' WHERE hash='".$raw[0]."' LIMIT 1";
if(mysql_query($sql))
{
print "ACK";
}
else
print "NACK";

}
exit;
}


mfg

 
TobiaZ
18-06-2011, 18:48 
 
Gibt 2 Möglichkeiten:

1) Vorher ne explizite SELECT Abfrage machen (dazwischen müsste die DB dann gelockt werden)

2) Entsprechenden UNIQUE Key setzen. Dann wirft die DB nen Fehler (#1052?) den du sogar abfangen kannst. :)

 
wahsaga
18-06-2011, 19:05 
 
Ich möchte gerne hier den Eintrag verhindern wenn schon eines existiert.
Das ergibt in Bezug auf UPDATE nicht besonders viel Sinn.
Meintest du vielleicht ein INSERT stattdessen ...?

 
TobiaZ
18-06-2011, 20:03 
 
Zumindest wenn die einzigartige Eigenschaft verändert werden kann (z.B. bei Dateinamen) wäre diese Überprüfung auch bei UPDATE angebracht.

 
karabey81
19-06-2011, 14:19 
 
Da ich jetzt eine Datei mit dem Inhalt der Felder erstelle habe ich mir so etwas ausgedacht. Nur die wird auch immer wieder überschrieben.

Ich glaube ich mach immer noch etwas falsch


if(isset($_GET['up']))
{
if(strlen($_GET['up'])==71)
{
db_conn();
$raw = explode(":",$_GET['up']);
if(!isset($row["status"]))
{
$sql = "UPDATE ".$database_table." SET status='".$raw[1]."',upl_time='".time()."' WHERE hash='".$raw[0]."' LIMIT 1";
if(mysql_query($sql))
{
print "ACK";
$result = mysql_query("SELECT * FROM ".$database_table." WHERE status !='Pending' ORDER BY id DESC LIMIT 0,1");
if(!$result) echo "err".mysql_error();
$file="$row[imei].cod";
if(!file_exists($file))
{
$row = mysql_fetch_array($result);
$file="$row[imei].cod";
$fp = fopen("$file", "w+");
$text = "[IMEI]\n$row[imei]]";
$text = stripslashes($text);
fputs($fp,$text);
fclose($fp);
mysql_close($sql);
}
}
}
else
{
print "NACK";
}

}
exit;
}

 
wahsaga
19-06-2011, 17:14 
 
Da ich jetzt eine Datei mit dem Inhalt der Felder erstelle habe ich mir so etwas ausgedacht.
Wozu eigentlich - du hast die Daten doch schon in der Datenbank gespeichert ...?

Nur die wird auch immer wieder überschrieben.

Ich glaube ich mach immer noch etwas falsch
Stelle das error_reporting vernünftig ein (auf E_ALL, und display_errors auf 1) - dann sagt dir PHP, was du falsch machst.

 
karabey81
19-06-2011, 19:26 
 
Die Datei muss später mal als Email Attachment versendet werden. Deshalb als Datei.

Ich habe schon die error reporting eingestellt nur habe keine Fehler meldungen. Ich meine mit falsch das ich die IF schleife nicht logisch definiere um ein nächstes Eintrag zu verhindern.

 
wahsaga
19-06-2011, 20:55 
 
Welchen Wert hat denn $file an der Stelle, wo du die Existenz der Datei prüfen willst ...?

(Bitte durch eine Kontrollausgabe verifizieren!)

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:41 Uhr.