php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.11.2011, 17:37  
Erfahrener Benutzer
 
Registriert seit: 03.04.2010
Beiträge: 191
PHP-Kenntnisse:
Anfänger
Suralc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Wuestenfuchs Beitrag anzeigen
Ja aber wenn ich so eine Spalte mache, werden diese Einträge dann beim
Auslesen von der Tabelle ja immernoch angezeigt?
Du musst halt beim auslesen darauf achten, das du z.B. über eine Where bedingung, nur die Datensätze ausliest, die nicht "gelöscht" wurden.

Code:
SELECT 
     some, fields
FROM
     mydb
WHERE
    geloescht = 0
__________________
Zitat:
Zitat von nikosch Beitrag anzeigen
Naja, anscheinend spricht die Steckdose kein HTTP. LOL
Suralc ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.11.2011, 20:29  
Neuer Benutzer
 
Registriert seit: 08.11.2011
Beiträge: 21
PHP-Kenntnisse:
Anfänger
Wuestenfuchs befindet sich auf einem aufstrebenden Ast
Standard

Alles klar.
Und den Papierkorb könnte man ja dann so machen,
dass er die Einträge anzeigt, wo gelöscht auf 1 ist und dann
diese Einträge mit einem Delete-Befehl endgültig löschen.
Vielen Dank!
Wuestenfuchs ist offline   Mit Zitat antworten
Alt 10.12.2011, 17:01  
Neuer Benutzer
 
Registriert seit: 08.11.2011
Beiträge: 21
PHP-Kenntnisse:
Anfänger
Wuestenfuchs befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

entschuldigung für den Doppelpost, aber ich hätte noch eine Frage.
Meine Datensätze werden jetzt getrennt angezeigt.
Aber ich möchte Datensätze nun auch wiederherstellen und
endgültig löschen können, und das klappt nicht so ganz.
Ich habe es über ein Formular versucht.

Code:
<?php
 if(isset($_POST['abschicken']))
 {
  $dswiederherstellen = mysql_real_escape_string($_POST['dswiederherstellen']);
  $dsloeschen = mysql_real_escape_string($_POST['dsloeschen']);

  mysql_query("
  INSERT INTO
        test.testtabelle (papierkorb)
  VALUES
        ('0')
  WHERE
        id='$dswiederherstellen");
  mysql_query("
  DELETE FROM
        test.testtabelle
  WHERE
        id='$dsloeschen");
 }

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta name="author" content="S">
<meta name="editor" content="html-editor phase 5">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000" background="bg.jpg" >
Im Papierkorb können die Datensätze endgültig gelöscht werden,
oder wiederhergestellt werden.
<?php
  // Verbindung zur Datenbank
  mysql_connect("localhost","root","") or die("Fehler bei der Verbindung zur Datenbank.");

  mysql_select_db("test") or die("Fehler beim Öffnen der DB.");

  // Papierkorb ausgeben
  $sql="SELECT * FROM testtabelle
        WHERE
        papierkorb=1";
  $table = mysql_query($sql);
  echo "<pre>";
  // Datensätze ausgeben
  while ($row = mysql_fetch_assoc($table))
  {
   print_r($row);
   echo "";
  }
  echo "</pre>";
?>
<form action"" method="post">
<p>Datensatz löschen:          <input type="text" size="20" maxlength="250" name="dsloeschen"></p>
<p>Datensatz wiederherstellen: <input type="text" size="20" maxlength="250" name="dswiederherstellen"></p>
<p>
<input type="submit" name="abschicken" value="Speichern">
</p>
</body>
</html>
Die Lösch- und Wiederherstellvariablen sind die IDs von den Datensätzen die
wiederhergestellt werden.
Danke schonmal im voraus!
Wuestenfuchs ist offline   Mit Zitat antworten
Alt 11.12.2011, 13:52  
Erfahrener Benutzer
 
Registriert seit: 03.04.2010
Beiträge: 191
PHP-Kenntnisse:
Anfänger
Suralc befindet sich auf einem aufstrebenden Ast
Standard

Lass dir mal die beiden SQL-Queries ausgeben, denn so ganz kann das nicht stimmen.

Außerdem kannst/solltest du Zahlen mit int/intval() anstelle von *real_escape_string verwenden. Und vorher überprüfen, ob sie überhaupt gesetzt wurden, und dementsprechend den passenden Query absenden(Wobei dein Papieerkorb und deine ID keine Strings sein sollten(Oder sind die beiden ' die unter anderem deinen Query zerschießen nur ausversehen dort? )
Desweiteren solltest du die Rückgabewerte der Queries auswerten und gegebenenfalls mysql_error o.Ä. ausgeben lassen.

btw. Bitte PHP-Tags hir im Forum benutzen
__________________
Zitat:
Zitat von nikosch Beitrag anzeigen
Naja, anscheinend spricht die Steckdose kein HTTP. LOL
Suralc ist offline   Mit Zitat antworten
Alt 12.12.2011, 17:13  
Neuer Benutzer
 
Registriert seit: 08.11.2011
Beiträge: 21
PHP-Kenntnisse:
Anfänger
Wuestenfuchs befindet sich auf einem aufstrebenden Ast
Standard

Dankeschön!
Also mein Papierkorb ist jetzt bis auf eine Sache voll funktionsfähig.
Das einzige was nicht funktioniert, ist Datensätze in den Papierkorb
zu verschieben bzw. die Variable auf 1 zu setzen. Ich habe den Code
von dem Wiederherstellen kopiert und einfach die Variablen geändert
und die 0 in eine 1 geändert, aber ich bekomme diesen Fehler mit
mysql_error:

1064: You have an error in your SQL syntax; check the manual that
corresponds to your MYSQL server version for the right syntax to use near
'WHERE id=4' at line 5.

Dabei ist WHERE id=4 gar nicht in Zeile 5 und der Block ist identisch mit dem
Code von Wiederherstellen, wo es funktioniert...

PHP-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<?php
 
// Prueft, ob der Submit Button gedrueckt wurde
 
if(isset($_POST['loeschen']))
 {
  
$db mysql_connect("localhost","root","")
  or die(
"Fehler bei der Verbindung zur Datenbank.");

  
mysql_select_db("test")
  or die(
"Fehler beim Öffnen der DB.");

  
$loeschen intval($_POST['frage']);

  
mysql_query("
  INSERT INTO
        test.testtabelle (papierkorb)
  VALUES
        (0)
  WHERE
        id=$loeschen"
);

  echo 
mysql_errno() . ": " mysql_error(). "\n";
  
mysql_close($db);
 }
?>
<title>Datensaetze in den Papierkorb verschieben</title>
<meta name="author" content="">
<meta name="editor" content="html-editor phase 5">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000" background="bg.jpg">
Es wird die Frage in den Papierkorb verschoben, die die von Ihnen eingetragene ID trägt.
<form action"" method="post">
<p>ID: <input type="text" size="20" maxlength="250" name="frage"></p>
<p>
<input type="submit" name="loeschen" value="loeschen">
</p>
</form>
</body>
</html>
Wuestenfuchs ist offline   Mit Zitat antworten
Alt 12.12.2011, 17:28  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

INSERT INTO ... WHERE? Meintest du vllt UPDATE?
chorn ist offline   Mit Zitat antworten
Alt 13.12.2011, 21:13  
Neuer Benutzer
 
Registriert seit: 08.11.2011
Beiträge: 21
PHP-Kenntnisse:
Anfänger
Wuestenfuchs befindet sich auf einem aufstrebenden Ast
Standard

Danke, nun funktioniert alles =)
Wuestenfuchs ist offline   Mit Zitat antworten
Alt 14.12.2011, 05:14  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Alternativ kannst du auch einen Trigger erzeugen der vor dem löschen ( BEFORE DELETE ) den Datensatz in eine andere Tabelle schaufelt, da is dann nix im PHP Script was du warten musst, nur nen trigger den du mitunter vielleicht entfernen müsstes in der Datenbank ( geringster anzunehmener Wartungsaufwand ).

Guggst du da: http://dev.mysql.com/doc/refman/5.1/...e-trigger.html

Bedenke das Datenbanken als "Pseudosystem" auf deinem Computer laufen, und nicht wie Dateien funktionieren. So etwas hinzubekommen das du eine Datei in deinem Papierkorb vorfindest wenn ein Datensatz in einer Datenbank gelöscht wird, ist zwar möglich, kostet aber zuersteinmal unnötige Ressourcen ( Trigger in der Datenbank fürs automatische exportieren + Cronjob der Löscht und wiederherstellt ) noch hat das ganze einen erfassbaren Sinn.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Antwort


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
[MySQL] x Datensätze ohne Schleife gelöscht? MaNuu Datenbanken 2 09.09.2011 02:53
Datensätze aus 2 Querys in eine Variable für While-Schleife Paeisi PHP Tipps 2010 10 20.07.2010 15:00
Mehrere Datensätze updaten, die zuvor durch Checkboxen ausgewählt wurden. peefonic PHP Tipps 2008 4 22.09.2009 11:23
Nested Sets Node verschieben stayInside PHP-Fortgeschrittene 0 09.08.2009 16:25
Datensätze aus Datenbank in Flash auflisten beta02 JavaScript, Ajax und mehr 5 23.06.2009 16:03
Datensätze sind auf einmal weg web4free Datenbanken 17 15.08.2008 20:57
[Erledigt] Fehlende Datensätze bei Ausgabe... Ramona86 Datenbanken 8 04.07.2008 12:12
nested set dbmodell subtrees verschieben raffnix Datenbanken 12 08.06.2008 13:27
mehrere datensätze mit mehreren submits ändern kladotti PHP Tipps 2008 2 27.04.2008 21:43
Datensätze verschieben Hilfe benötigt Stefano Datenbanken 4 16.04.2008 12:52
MySQL lädt immer nur 127 Datensätze einer CSV-Datei Klaus Datenbanken 4 15.11.2005 16:40
Datensätze in tabelle anzeigen tommi89 Datenbanken 5 23.09.2005 11:44
Datensätze kampfnickel PHP Tipps 2005 4 17.01.2005 13:41
Datensätze löschen für die kein Eintrag in anderer Tabelle.. robo47 Datenbanken 7 10.11.2004 09:42
Datensätze verschieben? von Tabelle in eine andere? Datenbanken 3 04.06.2004 11:10


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:24 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