php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


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! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 10-12-2006, 19:45
SilverVegeto
 Newbie
Links : Onlinestatus : SilverVegeto ist offline
Registriert seit: Apr 2004
Beiträge: 118
SilverVegeto ist zur Zeit noch ein unbeschriebenes Blatt
Standard ID finden und Eintrag löschen?

Ich bin gerade ein Newssystem mit Adminpanal zu schreiben. Also die News klappen auch. Jetzt möchte ich gerne im Adminpanal einen Bereich erstellen wo der User gewisse Einträge löschen kann, was dann so ausehen soll:
05: Neues von uns [bearbeiten | löschen]
Mein Problem ist jetzt nur, wie ich rausfinden kann welche ID der Beitrag hat und wie ich eine Funktion auslöse, dass wenn ich auf einen Link klicke. Wie z.B.: "bearbeiten".
Mit Zitat antworten
  #2 (permalink)  
Alt 10-12-2006, 20:20
nOe
 Registrierter Benutzer
Links : Onlinestatus : nOe ist offline
Registriert seit: Nov 2006
Ort: GAMERny
Beiträge: 253
nOe ist zur Zeit noch ein unbeschriebenes Blatt
nOe eine Nachricht über ICQ schicken
Standard

Lass' dir einfach die Newstitel ausgeben (der Reihe nach) und füge deine zwei Links am Ende hinzu. Und dann machst du als <a href Code \"bla.php?deletenews=",$row->id,"\". Je nachdem, wie du deine SELECT-Abfrage gestaltest...
__________________
"I am what I am and I do what I can..."
Meine HP -- Mein GPG-Key
Meine Projekte: WebStorage 2.0 -- easyAJAX-Chat 2.2.0 (beta)
Mit Zitat antworten
  #3 (permalink)  
Alt 10-12-2006, 20:28
SilverVegeto
 Newbie
Links : Onlinestatus : SilverVegeto ist offline
Registriert seit: Apr 2004
Beiträge: 118
SilverVegeto ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja wenn ich das mache und ich zuvor einen Newsbeitrag lösche, dann stimmt die Reihenfolge doch nichtmehr oder? Weil wenn ich z. B.: ID 2 lösche dann ist die Reihenfolge 1, 3, 4, 5 usw. oder klappt das schon?
Wie muss ich den Link dann genau definieren, hab meinen Code mal dazugeschrieben?
Und das mit den Link mein ich eigentlich so das der PHP-Code in der selben Datei steht, aber erst drauf zugegriffen wird wenn ich auf den Link klicke.

PHP-Code:
<?php
    error_reporting
(E_ALL);
    include 
"inc/config.php"// die Konfigurationsdateien lesen.

    // Verbindung zu MySQL Aufbauen
    
@mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
    
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

    
// news.php
    
$sql "SELECT
                Titel,
                Inhalt,
                Datum
            FROM
                News
            ORDER BY
                Datum DESC"
;
    
$result mysql_query($sql) OR die(mysql_error());
    if(
mysql_num_rows($result)) {
        while(
$row mysql_fetch_assoc($result)) {
            echo 
"    <div class=\"news\"><b>";
            echo 
$row['Titel'];
            echo 
"    </b></div>\n";
            echo 
"    <div class=\"text\">(";
            echo 
$row['Datum'];
            echo 
")    </div>\n";
            echo 
"    <div class=\"text\">\n";
            echo 
nl2br($row['Inhalt']); // \n in <br /> umwandeln
            
echo "    </div>\n";
            echo 
"    <br><center><img src=\"img/line2.jpg\"></center>";
            echo 
"</div>\n";
        }
    } else {
        echo
"<p>Keine News vorhanden</p>\n";
    }
?>
Mit Zitat antworten
  #4 (permalink)  
Alt 10-12-2006, 23:04
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Um welche Reihenfolge machst du dir sorgen?
Prinzipiell macht man es so:
Jeder Eintrag hat eine eindeutige ID. Anhand dieser ID kann ein Beitrag identifiziert werden. Und anhand einer ID kann ein Beitrag dann auch gelöscht werden.

(Hinweis: Es handelt es sich um keinen für dein Problem konkret zugeschnittenen Code... Ich möchte dir hier nur das Prinzip erläutern.)
PHP-Code:
$sql "SELECT id, title FROM table_news";
$result mysql_query($sql)
    or die(
mysql_error());

while (
$row mysql_fetch_assoc($result))
{
    
// liste aller einträge erstellen
    
print '<a href="?action=delete&news_id=' $row['id'] . '">' $row['title'] . '</a>';

Jetzt musst du nur noch an geeigneter Stelle überprüfen, ob
Code:
$_GET['action']
delete entspricht und
Code:
$_GET['news_id']
mit übergeben wurde. Falls ja, dann Eintrag mit der jeweiligen ID löschen.

Geändert von Griecherus (10-12-2006 um 23:23 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 11-12-2006, 17:34
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Jetzt musst du nur noch an geeigneter Stelle überprüfen, ob
Code:
$_GET['action']
delete entspricht und
Code:
$_GET['news_id']
mit übergeben wurde. Falls ja, dann Eintrag mit der jeweiligen ID löschen.
Versteht sich natürlich von alleine, das du auf integer achtest (sql-injection) und nur benutzer mit entsprechenden rechten die aktionen ausführen dürfen!!
Mit Zitat antworten
  #6 (permalink)  
Alt 11-12-2006, 17:58
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von PHP-Desaster
Versteht sich natürlich von alleine, das du auf integer achtest (sql-injection) und nur benutzer mit entsprechenden rechten die aktionen ausführen dürfen!!
Natürlich. Nur ist das seine Aufgabe, nicht meine. Ich habe ihm nur das Prinzip vermitteln wollen.
Mit Zitat antworten
  #7 (permalink)  
Alt 12-12-2006, 11:09
SilverVegeto
 Newbie
Links : Onlinestatus : SilverVegeto ist offline
Registriert seit: Apr 2004
Beiträge: 118
SilverVegeto ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also ich habe mein Problem jetzt mal so gelöst, aber ich denke nicht das dies die beste Möglichkeit ist. Bitte gibt mir mal Tipps/Möglichkeiten wie ich das System verbessern kann.
Brauch ich überhaupt zwei PHP-Seiten um den Vorgang "löschen" zu aktivieren?
Wie genau kann ich denn über $_GET-Funktion die ID übermitteln?

Es funktioniert so:

Über die news.php werden alle News aufgelistet.
news.php
PHP-Code:
<?php include ("checkuser.php"); ?>
<br><center>[<a href="news_anlegen.php">News anlegen</a>]</center><br>
<?php
    error_reporting
(E_ALL);
    include 
"../inc/config.php";

    
// Verbindung zu MySQL Aufbauen
    
@mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
    
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

    
$sql "SELECT
        ID,
                Titel
            FROM
                News
            ORDER BY
                Datum DESC"
;
    
$result mysql_query($sql) OR die(mysql_error());
    if(
mysql_num_rows($result)) {
        while(
$row mysql_fetch_assoc($result)) {
            echo 
"<div class=\"news\"><b>&nbsp;ID ";
            echo 
$row['ID'];
            echo 
":&nbsp;";
            echo 
$row['Titel'];
            echo 
"</b> [<a href=\"news_bearbeiten.php?id=" $row['ID'] . "\">
bearbeiten</a> | <a href=\"news_loeschen.php?id=" 
$row['ID'] . "\">
löschen</a>]</div>\n"
;
        }
    } else {
        echo
"<p>Keine News vorhanden</p>\n";
    }
    echo
"<br>";
?>
Wenn der User jetzt auf löschen geht wird die Seite news_loeschen.php aufgerufen und die ID wird per URL mitgeliefert.

news.loeschen.php
PHP-Code:
<?php include ("checkuser.php"); ?>
<?php
    error_reporting
(E_ALL);
    include 
"../inc/config.php";

    
// Verbindung zu MySQL Aufbauen
    
@mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
    
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

    
$nr $id;

    
$sql "DELETE FROM
        News
            WHERE
                ID=$nr"
;
    
$result mysql_query($sql);

    
header("Location: cp.php");
    exit;
?>

Geändert von SilverVegeto (12-12-2006 um 11:13 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 12-12-2006, 12:14
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du brauchst nicht unbedingt zwei PHP-Skripte dafür, du kannst das auch in einer Datei lösen, sofern du das so möchtest. Die Grundlage dafür ist, unterscheiden zu können, welche Aktion der User gerade "aufruft", also z.B. Einträge anzeigen, Eintrag bearbeiten oder löschen usw. Das lässt sich in der Regel ganz gut über GET-Parameter regeln.

Beispiel:
PHP-Code:

$action 
$_GET['action'];

if (
$action == 'list')
{
    
// alle beiträge anzeigen
}
elseif (
$action == 'edit' && !empty($_GET['news_id'])
{
    
// beitrag mit der id "news_id" bearbeiten (in form anzeigen)
}
elseif (
//...)
{
    
// und so weiter und so fort
}

// alternativ ließe sich das auch über einen switch lösen 
So benötigst du nicht für jede Aktion eine eigene Datei. Dafür solltest du umso mehr auf Struktur und Übersichtlichkeit achten. Und nicht vergessen: Bei meinem Code-Beispiel handelt es sich nur um eine mögliche prinzipielle Funktionsweise. Die Detailarbeit in jeglicher Hinsicht bleibt natürlich bei dir.

Du hast in der new.loeschen.php übrigens einen "Fehler". Die news_id wird nämlich nirgends übergeben, sofern register_globals auf "off" gestellt ist. Dann müsste es nämlich
Code:
$_GET['param_name'];
heissen, um dein_script.php?param_name=param_value anzusprechen. In deinem Fall $id = $_GET['id'];.
Sollte register_globals auf "on" sein, dann sofort etwas dagegen tun. Mehr dazu hier.
Mit Zitat antworten
  #9 (permalink)  
Alt 12-12-2006, 21:20
SilverVegeto
 Newbie
Links : Onlinestatus : SilverVegeto ist offline
Registriert seit: Apr 2004
Beiträge: 118
SilverVegeto ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also ich hab das jetzt mal probiert, aber es erscheint immer folgende Fehlermeldung:
Zitat:
Parse error: parse error, unexpected '{' in /srv/www/web1/html/..../news.php on line 36
Mein Code:
PHP-Code:
<?php include ("checkuser.php"); ?>
<br><center>[<a href="news_anlegen.php">News anlegen</a>]</center><br>
<?php
    error_reporting
(E_ALL);
    include 
"../inc/config.php";

    
// Verbindung zu MySQL Aufbauen
    
@mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
    
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());


$action $_GET['action'];

if (
$action == '')
{
    
$sql "SELECT
        ID,
                Titel
            FROM
                News
            ORDER BY
                Datum DESC"
;
    
$result mysql_query($sql) OR die(mysql_error());
    if(
mysql_num_rows($result)) {
        while(
$row mysql_fetch_assoc($result)){
    
// liste aller einträge erstellen
    
print '<a href="?action=edit&news_id=' $row['id'] . '">' $row['title'] . '</a>';
    }
    } else {
        echo
"<p>Keine News vorhanden</p>\n";
    }
    echo
"<br>";

}
elseif (
$action == 'edit' && !empty($_GET['news_id'])
# Zeile 36
    
$sql "DELETE FROM
        News
            WHERE
                ID=$news_id"
;
    
$result mysql_query($sql);

    
header("Location: news.php");
}
?>
Mit Zitat antworten
  #10 (permalink)  
Alt 12-12-2006, 21:35
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Och Kinders, lernt doch bitte, bevor ihr mit etwas komplexeren Sachen rumspielt, erst mal die Grundlagen der Syntax so weit, dass ihr einen besch***enen simplen parse error selber finden könnt ...

PHP-Code:
elseif ($action == 'edit' && !empty($_GET['news_id'])

Na, was fehlt denn da am Ende der Zeile vor der geschweiften Klammer noch?

Konzentriere dich, nimm deine ganzen Grundschulmathekenntnisse zusammen - und zähle die verdammten Runden Klammern ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #11 (permalink)  
Alt 12-12-2006, 21:56
SilverVegeto
 Newbie
Links : Onlinestatus : SilverVegeto ist offline
Registriert seit: Apr 2004
Beiträge: 118
SilverVegeto ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Okay, sry das war ein dummer Fehler von mir. Nun zu den hoffe ich mal vorerst letzten Fragen. Hab noch zwei Fehlermeldungen wobei ich folgenden Code benutze:

Wenn die News aufgelistet werden:
Zitat:
Notice: Undefined index: action in /srv/www/web1/html/hosted/.../news.php on line 12
Nach dem Löschvorgang:
Zitat:
Warning: Cannot modify header information - headers already sent by (output started at /srv/www/web1/html/hosted/.../cp.php:13) in /srv/www/web1/html/hosted/.../news.php on line 45
PHP-Code:
<?php include ("checkuser.php"); ?>
<br><center>[<a href="news_anlegen.php">News anlegen</a>]</center><br>
<?php
    error_reporting
(E_ALL);
    include 
"../inc/config.php";

    
// Verbindung zu MySQL Aufbauen
    
@mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());
    
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());


$action $_GET['action']; # Zeile 12

if ($action == "")
{
    
$sql "SELECT
        ID,
                Titel
            FROM
                News
            ORDER BY
                Datum DESC"
;
    
$result mysql_query($sql) OR die(mysql_error());
    if(
mysql_num_rows($result)) {
        while(
$row mysql_fetch_assoc($result)){
    
// liste aller einträge erstellen
                
echo "    <div class=\"news\"><b>";
            echo 
$row['ID'];
            echo 
$row['Titel'];
            echo 
"</div>\n";
    }
    } else {
        echo
"<p>Keine News vorhanden</p>\n";
    }
    echo
"<br>";

}
elseif (
$action == "edit" && !empty($_GET["news_id"]))
# Zeile 36
    
$sql "DELETE FROM
        News
            WHERE
                ID=$news_id"
;
    
$result mysql_query($sql);

  
header ("Location: cp.php"); # Zeile 46
}
?>
Mit Zitat antworten
  #12 (permalink)  
Alt 12-12-2006, 22:04
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Notice: Undefined index: action in [...]
-> Suchfunktion!
Zitat:
Warning: Cannot modify header information - headers already sent by [...]
-> Suchfunktion & und der extra zu diesem Thema hier im Forum immer oben angezeigte Sticky Thread zu diesem dämlichen Thema!


OffTopic:
Verdammte Gamer-Kiddies ... können die sich eigentlich selber den Hintern abwischen?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
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.

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


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

Maqetta Open Source  HTML5-Editor ansehen Maqetta Open Source HTML5-Editor

Einen WYSIWYG-Editor zur visuellen Erstellung von Userinterfaces in HTML5 (Drag-and-Drop)

13.05.2019 Berni | Kategorie: HTML5/ EDITOR
NodeBB

NodeBB ist eine Foren-Software auf NodeJS-Basis

13.05.2019 Berni | Kategorie: PHP/ Forum PHP Software
EJS TreeGrid ansehen EJS TreeGrid

EJS TreeGrid is DHTML component written in pure JavaScript to display and edit data in table, grid, tree view or grid with tree on HTML page

09.04.2019 coqsoft@ | Kategorie: JAVASCRIPT/ Components
 Alle PHP Scripte anzeigen

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