php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.04.2005, 19:55  
Gast
 
Beiträge: n/a
Standard Löscht, trägt aber neue Daten nicht nach

Hi,

also dieser Script soll updaten, aber zur Zeit löscht er nur und trägt keine neuen Daten ein.
Was ist der fehler:

PHP-Code:
<?php

if(isset($_POST["schritt"])){
  
$offizier = isset($_POST["offizier"]);
  
$email = isset($_POST["email"]);
  
$newsletter = isset($_POST["newsletter"]);

 
        
$dbName "ghostsoldier";
        
$dbHost "localhost";
        
$dbUser "root";
        
$dbPW "";
        
        if (!((
$dblink mysql_connect($dbHost,$dbUser,$dbPW)) && (mysql_select_db($dbName,$dblink)))) die(mysql_error());
    

$sql ="UPDATE  register
                     SET 
                             offizier = '$offizier',
                              email = '$email',
                              newsletter = '$newsletter'
                     WHERE
                             username = '"
.$_SESSION['user_username']."'";
   
$result mysql_query ($sql);


    if (
mysql_num_rows ($result) > 0)
    {
    
$data mysql_fetch_array ($result);
        
    
header ("Location: aenderung.php");

    }
    else
    {
    
header ("Location: einstellungenuser.php");
    }

}


?>
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.04.2005, 20:04  
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

man man, glaubst du so hilft dir jemadn wenn du alle 5 minuten nen neuen post aufmachst ? das ist ja schlimm.

1. schwachfug:
[php]
if (mysql_num_rows ($result) > 0)

das wird nie passieren, weil mysql_num_rows dir bei UPDATE nichts zurückgibt.
2. setze error_reporting ein:
error-reporting
Zum testen von Scripts setzt man normalerweise am anfang des scripts (oder direkt in einer config-datei die immer Includet wird) [php:1cdadf4485]error_reporting(E_ALL); [/php:1cdadf4485] damit werden dann alle Fehler ausgegeben.
3.
mysql error
man sollte in seinen Scripten immer mysql_error() verwenden, in etwa so:
[php:1cdadf4485]
$sql = "SELECT feld1,feld2 FROM table WHERE id=5";
$result = mysql_query($sql) or die(mysql_error().'
Query: '.$sql);
[/php:1cdadf4485]

4. benutze anstatt dem mysql_num_rows ein mysql_affected_rows das bringt dir vieleicht was.


btw ist das die letze antwort die du hier auf dem forum von mir bekommst, wenn du weiter doppel und zigfach posts machst. und nciht fähig bist
1. qualitativ zu arbeiten
2. mal machst was dir die leute sagen und es ausprobierst
3. nicht sauber arbeitest und dich heir an ein paar grundregeln hällst

das ist ja teilweise zum .... hier :P

mfg
robo47
robo47 ist offline  
Alt 21.04.2005, 20:30  
Gast
 
Beiträge: n/a
Standard

Hier noch mal alles überarbeitet, er leitet weieter und alles, aber er trägt nichts uin die DB ein.
PHP-Code:
<?php

   error_reporting
(E_ALL);
if(isset(
$_POST["schritt"])){
  
$offizier = isset($_POST['offizier']) ? mysql_real_escape_string($_POST['offizier']) : "";
  
$email = isset($_POST['email']) ? mysql_real_escape_string($_POST['email']) : "";
  
$newsletter = isset($_POST['newsletter']) ? mysql_real_escape_string($_POST['newsletter']) : "";


  
$dbName "ghostsoldier";
  
$dbHost "localhost";
  
$dbUser "root";
  
$dbPW "";

  if (!((
$dblink mysql_connect($dbHost,$dbUser,$dbPW)) && (mysql_select_db($dbName,$dblink)))) die(mysql_error());



$sql ="UPDATE  register
                     SET
                              offizier = '"
.$offizier."',
                              email = '"
.$email."',
                              newsletter = '"
.$newsletter."'
                     WHERE
                             username = '"
.$_SESSION['user_username']."'";
   
$result mysql_query($sql) or die(mysql_error().'
Query: '
.$sql);

header("Location:http://localhost/ghostsoldier/aenderung.php");

}
?>
nach oben
 
Alt 21.04.2005, 20:34  
Gast
 
Beiträge: n/a
Standard

Du benutzt Session-Daten ohne ein session_start();

Gruß
phpfan
 
Alt 21.04.2005, 20:42  
Gast
 
Beiträge: n/a
Standard

ok daran liegt es nicht, die include datein checkuser.php prüft ob eine session besteht ja oder nein.
er trägt aber immer noch nicht in die db ein.
 
Alt 21.04.2005, 20:45  
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

lass mal das query ausgeben und check mit mysql_affected_rows wie viele datensätze verändert wurden und dann teste mal in phpmyadmin das query. würde sagen dein WHERE stimmt einfach nicht

mfg
robo47
robo47 ist offline  
Alt 21.04.2005, 20:47  
Gast
 
Beiträge: n/a
Standard

Dann hilft wohl nur noch:

Richtig debuggen
1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
3. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
4. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
5. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
6. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
7. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt, was eigentlich selbstverständlich sein sollte.

Gruß
phpfan
 
Alt 21.04.2005, 20:55  
Gast
 
Beiträge: n/a
Standard

Notice: Undefined index: username in D:\apachefriends\xampp\htdocs\ghostsoldier\einstel lungenuser.php on line 50

Notice: Undefined index: password in D:\apachefriends\xampp\htdocs\ghostsoldier\einstel lungenuser.php on line 51
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 '= ''' at line 8
Query: UPDATE register SET offizier = '', email = '', newsletter = '' WHERE username like '' AND . p

das sind die fehler vom query

und hier ist die oho anweisung

PHP-Code:
<?php
   error_reporting
(E_ALL);
if(isset(
$_POST["schritt"])){
  
$offizier = isset($_POST['offizier']) ? mysql_real_escape_string($_POST['offizier']) : "";
  
$email = isset($_POST['email']) ? mysql_real_escape_string($_POST['email']) : "";
  
$newsletter = isset($_POST['newsletter']) ? mysql_real_escape_string($_POST['newsletter']) : "";

 
        
$dbName "ghostsoldier";
        
$dbHost "localhost";
        
$dbUser "root";
        
$dbPW "";
        
        if (!((
$dblink mysql_connect($dbHost,$dbUser,$dbPW)) && (mysql_select_db($dbName,$dblink)))) die(mysql_error());
    


$sql ="UPDATE  register
                     SET
                              offizier = '"
.$offizier."',
                              email = '"
.$email."',
                              newsletter = '"
.$newsletter."'
                     WHERE
                                 username like '"
.$_SESSION["username"]."' AND .
                                password = '"
.$_SESSION["password"]."'";
   
$result mysql_query($sql) or die(mysql_error().'
Query: '
.$sql); 

    
header("Location: http://localhost/ghostsoldier/aenderung.php");

}
?>
 
Alt 21.04.2005, 21:00  
Gast
 
Beiträge: n/a
Standard

In dem anderen Thread von dir zu dem Thema habe ich dir schon geschrieben:

Da wird es wohl $_POST["offizier"], $_POST["email"] und $_POST["newsletter"] nicht geben.

AND .

ist Quatsch, was macht der Punkt da? password ist ein reserviertes Wort, damit kann es auch Probleme geben, siehe http://dev.mysql.com/doc/mysql/de/reserved-words.html

Gruß
phpfan
 
Alt 21.04.2005, 21:01  
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 deine session is wohl leer, genauso wie deine post-daten.

da kann das ja auch nicht funktionieren.

wie wärs mal wenn du dein formular und so dazu postest, aber bitte komplett-
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
Mehrere Arrays unterschiedlicher Größe kombinieren querfisch PHP Tipps 2007 9 31.03.2007 21:34
Session Frage - gleiches Formular 2 mal alle Daten behalten NetLook PHP Tipps 2007 1 21.11.2005 18:42
beim bearbeiten werden keine neue Daten übernommen... PHP Tipps 2005-2 2 24.10.2005 12:25
[Erledigt] sql daten für einen kunden auslesen/ändern im Formular PHP Tipps 2005-2 3 12.10.2005 08:36
[Erledigt] Daten aus mehreren Tabellen holen Datenbanken 0 19.09.2005 17:14
Daten auslesen und ändern Datenbanken 2 17.09.2005 19:28
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
abfrage => neue Daten Datenbanken 17 01.06.2005 08:39
javascript und PHP seiten neuladen wenn neue daten vorhanden PHP-Fortgeschrittene 3 18.05.2005 10:59
Daten überschreiben in einer txt datei!? CHRIS PHP Tipps 2005 2 02.03.2005 15:02
Daten in Datenbank ändern PHP Tipps 2005 3 27.01.2005 14:40
[Erledigt] MySQL-DB gibt keine Daten zurück!!! Datenbanken 4 21.12.2004 21:00
.txt daten sollen nicht durch neue überschieben werden PHP Tipps 2004 2 18.09.2004 13:51
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
Neue Datenbank? Alte Daten gelöscht? was ist los? Off-Topic Diskussionen 37 21.06.2004 23:16


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