php.de

ZurĂŒck   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.02.2005, 20:23  
Benutzer
 
Registriert seit: 24.01.2005
BeitrÀge: 56
Melchior
Standard 2 kleine Fragen zu meinem Download Script

Hi, habe gerade ein Download script mit Benutzerverwaltung geschrieben. Jetzt ist es bis auf 2 Problemchen fertig. Vielleicht könnt ihr mir helfen? WÀre echt super.

Problem 1
Wenn man auf den Link zum Downloaden klickt (z.B. pass.php?down=2), soll die Aufforderung zum Dateispeichern kommen.
Meine Funktion liegt in einer Klasse, und sieht wie folgt aus:

PHP-Code:
<?php
    
function download ($id) {
        global 
$downpath;
        
        
$sql "SELECT * FROM pass_files WHERE id = $id";
        
$res $this->sql_exec($sql); 
        
$data mysql_fetch_assoc($res);

   
           
$application substr (strrchr ("$data[path]""."), 1);
           
$dateiname substr ("$data[path]"0,strrpos ("$data[path]""."));
           
  
           
header("Content-type: application/$application"); 
          
header("Content-Disposition: attachment; filename=".$dateiname.".".$application.""); 
           
header("Content-Description: File - Download");;

           
readfile("$downpath$dateiname.$application"); 

    }
?>
Logischerweise kommt es dann wieder zu den bekannten Headerproblemen (auf em homeserver funzt es perfekt) , aber auch wenn ich das script 'zerstĂŒckle' und teils vor den ersten Header schreibe, fĂ€ngt er an den Source der Datei im Browser zu öffnen. Habe dann nicht weiterprobiert, weil mir diese Lösung zu schwammig ist.
Gibt es nicht einen logischeren Weg? Javascript möchte ich nicht benutzen.

Problem 2
Ich habe drei EntitÀten.

- pass_accounts (Kontendaten)
- pass_access (Welches Konto hat welche Dateien)
- pass_files (Dateien)

Pass access sieht z.B. so aus (1,3,4) -> id 1, User 3, hat Datei 4.
Simple m:n beziehung.

Jetzt möchte ich, wenn ich ein Konto lösche, dass alle zugehörigen accesses und files gelöscht werden (ein file wird mom. nur von einem user benutzt, m-n deswegen, weil es spÀter noch erweitert werden soll)

Da ich leider im Bezug auf rekursives Löschen keine erfahrung habe, habe ich es erstmal so probiert

PHP-Code:
<?php
        $sql1 
"DELETE from pass_accounts WHERE id = $accid";
        
$res $this->sql_exec($sql1);    
        
        
$sql2 "DELETE pass_files from pass_access, pass_files, pass_accounts WHERE pass_files.id = pass_access.files_id AND pass_access.accounts_id = $accid";
        
$res $this->sql_exec($sql2);    
        
        
$sql3 "DELETE from pass_access WHERE accounts_id = $accid";
        
$res $this->sql_exec($sql3);    
?>
Auf meinem homeserver funktioniert es, auf dem Webserver bekomm ich ne SQL Fehlermeldung.
Gibt es da nicht eine schönere Lsg zu?

Viele Dank wenn ihr tipps habt, wÀre echt kewl :o)
Melchior ist offline  
Sponsor Mitteilung
PHP Code FlĂŒsterer

Registriert seit: 21.08.2005
BeitrÀge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.02.2005, 23:12  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
BeitrÀge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

zu problem 1, versuch mal als content-type
application/octet-stream

zu problem 2, was fĂŒr ne fehlermeldung?
mal bitte die komplette ausgabe eines beispielquerys posten das probleme macht.
robo47 ist offline  
Alt 24.02.2005, 01:26  
Benutzer
 
Registriert seit: 24.01.2005
BeitrÀge: 56
Melchior
Standard

hi robo

zu 1:
der download funktioniert ja auf meinem homeserver, auch wenn der Code irgendwo steht und der header bereits gesendet wurde. Online meckert er hingegen, deshalb wollte ich es vor den ersten 'offiziellen header', ganz am Anfang stellen. Nach dem Prinzip:

if isset download --> header content application ... readfile ... test.zip
else --- Original Header + CODE ---

Aber allg. bin ich da glaub ich, etwas auf dem falschen Weg. Soll ich viell die Header Sachen mit

PHP-Code:
<?php
    
function download ($id) {
        global 
$downpath;
        
        
$sql "SELECT * FROM pass_files WHERE id = $id";
        
$res $this->sql_exec($sql); 
        
$data mysql_fetch_assoc($res);

   
           
$application substr (strrchr ("$data[path]""."), 1);
           
$dateiname substr ("$data[path]"0,strrpos ("$data[path]""."));
           
  
           
header("Content-type: application/$application"); 
          
header("Content-Disposition: attachment; filename=".$dateiname.".".$application.""); 
           
header("Content-Description: File - Download");;

           
readfile("$downpath$dateiname.$application"); 

    }
?>
in eine extra Datei wie down.php machen? Umleiten vor dem Hauptheader funktioniert ohne Probleme, aber wenn ich down.php aufrufe habe ich ja nach start des Downloades einen weissen Screen, hmm *grĂŒbel*

Zu 2:
Hier die Fehlermeldung, wie gesagt, auf meinem homeserver funktioniert es:

PHP-Code:
<?php
Achtung
Fehler beim AusfĂŒllen von SQL-Befehl"DELETE pass_files from pass_access, pass_files, pass_accounts WHERE pass_files.id = pass_access.files_id AND pass_access.accounts_id = 4" 

In Zeile26 /kunden/xxxxx.de/subdomains/pass/pass_object.php
MySQL 
FehlermeldungYou have an error in your SQL syntax near 'pass_files from pass_access, pass_files, pass_accounts WHERE pass_files.id = pas' at line 1
?>
Gruß Marco
Melchior ist offline  
Alt 24.02.2005, 04:12  
Erfahrener Benutzer
 
Registriert seit: 14.01.2004
BeitrÀge: 2.543
fantast
fantast eine Nachricht ĂŒber ICQ schicken
Standard

1. welche "bekannten Headerproblemen" ? fehlermeldung ?
2. was soll denn "rekursives Löschen" sein ?
__________________
Was ist validitÀt?
fantast ist offline  
Alt 24.02.2005, 12:56  
Benutzer
 
Registriert seit: 24.01.2005
BeitrÀge: 56
Melchior
Standard

Habe Problem 1 ganz einfach gelöst

PHP-Code:
<?php
<?php session_start (); 

    include (
"pass_object.php");
    include 
"config.inc.php";
    require_once 
"vlibTemplate.php"
    
$pass_link=new class_pass;

    if (isset(
$un)) {
    
        
$id=$pass_link->login_check ($_POST[un], $_POST[up]);
        if ( 
$id == 0) {
            
            
header('Location: pass.php?wronglogin=1');
            
        }
    
        else if (
$id == 1) {
            
header('Location: pass.php');

        }
        
        else 
header('Location: pass.php');

    }
    
    else if (
$action=="logout") {
    
        
session_unset();
        
session_destroy();
        
header('Location: pass.php');
    }
    
    else if (isset(
$download)) $pass_link->download($download);    
    
    else {

?>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1"><LINK 
href="style.css" type=text/css rel=stylesheet>
....
<?php
?>
Zu Problem 2:

Ich möchte einfach, dass wenn ich ein konto löschen, alle zugehörigen Dateien auch aus der Datenbank entferne. Da ich eine n-n beziehung habe, gibt es ein Tabelle, die die Zugehörigkeiten speichert (accesses). Diese sollen natĂŒrlich auch dann gelöscht werden

Gruß
Melchior ist offline  
Alt 24.02.2005, 13:13  
Erfahrener Benutzer
 
Registriert seit: 14.01.2004
BeitrÀge: 2.543
fantast
fantast eine Nachricht ĂŒber ICQ schicken
Standard

das hat doch aber nichts mit rekursion zu tun... www.wikipedia.de/Rekursion

das is einfach ein syntax fehler bei dir. DELETE FROM [tablename]... geht das...
__________________
Was ist validitÀt?
fantast ist offline  
Alt 24.02.2005, 13:18  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
BeitrÀge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von fantast
das is einfach ein syntax fehler bei dir. DELETE FROM [tablename]... geht das...
habs im manual grad mal ĂŒberflogen, multitablesyntax :P hat mich auch gewundert:

Code:
 Multiple-table syntax:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
       tbl_name[.*] [, tbl_name[.*] ...]
       FROM table_references
       [WHERE where_definition]

Or:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
       FROM tbl_name[.*] [, tbl_name[.*] ...]
       USING table_references
       [WHERE where_definition]
naja ich bevorzuge dann doch 3 querys :P
robo47 ist offline  
Alt 24.02.2005, 13:58  
Benutzer
 
Registriert seit: 24.01.2005
BeitrÀge: 56
Melchior
Standard

Danke. Werds spÀter gleich ma testen, kann mir zwar momentan nicht viel drunter vorstellen - google dann aber nochmal nach

greetz auch aus em Odenwald [reinheim/ober-ramstadt die ecke]
__________________
MF goes Melchior
Melchior ist offline  
Alt 25.02.2005, 15:59  
Benutzer
 
Registriert seit: 24.01.2005
BeitrÀge: 56
Melchior
Standard

Ich komm einfach nicht weiter, auf meinem homeserver funktionieren alle variationen, auf dem webserver hingegeben bekomme ich immer eine fehlermeldung *urgz*

Hier nochmal mal Code
PHP-Code:
<?php
    
function accid_delete ($accid) {
            
        
$sql1 "DELETE from pass_accounts WHERE id = $accid";  //Accounts löschen
        
$res $this->sql_exec($sql1);    
        
        
$sql2 "DELETE pass_files from pass_files INNER JOIN  pass_access AS pass_access ON (pass_access.accounts_id = $accid) WHERE pass_files.id = pass_access.files_id";  // Files löschen
        
$res $this->sql_exec($sql2);    
        
        
$sql3 "DELETE from pass_access WHERE accounts_id = $accid";  // Accesses löschen
        
$res $this->sql_exec($sql3);    
    }
?>
Und hier dann die Ausgabe (Webserver)
PHP-Code:
<?php
Fehler beim AusfĂŒllen von folgendem Befehl
"DELETE pass_files from pass_files INNER JOIN pass_access AS pass_access ON (pass_access.accounts_id = 2) WHERE pass_files.id = pass_access.files_id" 

In Zeile26 /kunden/xxxxxxx/pass/pass_object.php
MySQL 
FehlermeldungYou have an error in your SQL syntax near 'pass_files from pass_files INNER JOIN pass_access AS pass_access ON (pass_acces' at line 1
?>
WÀre echt super, wenn jmd einen Tipp hÀtte, ich raffs net

Gruß Marco
Melchior ist offline  
Alt 25.02.2005, 16:06  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
BeitrÀge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

tja dann hast du wohl offline ne mysql-version die diese syntax schon versteht (neuere version) und online nicht, musst du halt mal das mysql-manual wĂ€lzen welche versionen was unterstĂŒtzen und dann gegebenenfalls deine querys anpassen oder das problem anders lösen.

mfg
robo47
robo47 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf BeitrÀge zu antworten.
Es ist dir nicht erlaubt, AnhÀnge hochzuladen.
Es ist dir nicht erlaubt, deine BeitrÀge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
2 kleine Fragen :-) Jeffry PHP Tipps 2008 4 28.06.2008 10:23
2 Fragen zu meinem Script PHP Tipps 2005-2 8 06.08.2005 23:29
Download Problem PHP Tipps 2005-2 3 22.07.2005 16:11
[Erledigt] Verzögerung durch included Script? Umgehen? PHP Tipps 2005-2 4 10.07.2005 19:26
[Erledigt] Relay Script PHP-Fortgeschrittene 11 01.06.2005 16:02
PHP Programmierer Gesucht fĂŒr Kleine Script erstellung Beitragsarchiv 3 13.05.2005 20:00
[Erledigt] Hilfe bei Download Verwaltungs Script PHP Tipps 2005 8 04.05.2005 10:29
[Suche] Script -> Banerklick -> Download Frei Beitragsarchiv 5 27.04.2005 14:46
Fehler bei Script, welches Ordner erstellt PsychoEagle PHP Tipps 2005 3 23.04.2005 16:03
Welches download Script? Beitragsarchiv 7 14.04.2005 12:14
[Erledigt] Suche dringend Download Script mit einmalig Paßwort Freigabe PHP Tipps 2005 6 05.04.2005 18:58
PHP Script aus PHP aufrufen StĂŒmper PHP Tipps 2004 5 26.09.2004 08:15
"das" Script oder "der" Script?? Simbo Off-Topic Diskussionen 31 16.09.2004 17:04
download script PHP Tipps 2004 1 31.07.2004 16:43

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
header location download sql, download scripĂŒt mit benutzerverwaltung, downloadscript benutzerverwaltung

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:11 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.