php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.06.2009, 16:46  
Neuer Benutzer
 
Registriert seit: 12.06.2009
Beiträge: 11
PHP-Kenntnisse:
Anfänger
homermg befindet sich auf einem aufstrebenden Ast
Standard Datensätze ändern

Hallo Leute,

ich habe mir da was zusammengebastelt aus div.Tutorials
Im Prinzip nur einen Datensatz anlegen der wird oben als Link angezeigt.
Wenn man auf den Link klickt wird dieser aufgerufen und dann kann ich an diesem was ändern und wieder speicher. Leider wird zwar die Änderung übernommen aber es wird zusätzlich noch ein Datensatz angelegt.
Kann mir da jekmad helfen den Fehler zu finden.
PS. bin nur ein blutiger Anfänger in Sachen PHP


PHP-Code:
<?php
mysql_connect
("localhost""root""root");
mysql_select_db("test");

// Prüfen, ob eine bestimmte Adress-ID gelesen werden soll
if ($_GET['id'] > 0)
{
    
$sql "select * from adressen where id = '" $_GET['id'] . "'";
    
// echo "sql: $sql<br>";
    
$result mysql_query($sql);
    echo 
mysql_error();
    
    
$items mysql_fetch_array($result);
    
// die gefundenen Werte in das POST-Array eintragen
    
foreach ($items as $key => $value)
    {
        
$_POST[$key] = $value;
    }


if ( isset(
$_POST['save']) )
{
      
// Neue Adresse anlegen
    
$sql "insert into adressen (id, name, anschrift, plz, ort, mail)
        VALUES
        (0, 
        '" 
$_POST['name'] . "',
        '" 
$_POST['anschrift'] . "',
        '" 
$_POST['plz'] . "',
        '" 
$_POST['ort'] . "',
        '" 
$_POST['mail'] . "'  )";
    
// echo "sql: $sql<br>";
    
$result mysql_query($sql);
    echo 
mysql_error();
}


if ( isset(
$_POST['update']) )
{
      
// Adresse ändern
    
$sql "update adressen set
        name = '" 
$_POST['name'] . "',
        anschrift = '" 
$_POST['anschrift'] . "',
        plz = '" 
$_POST['plz'] . "',
        ort = '" 
$_POST['ort'] . "'
        where id = '"
$_POST['id'] . "'";
    
// echo "sql: $sql<br>";
    
$result mysql_query($sql);
    echo 
mysql_error();
}

// alle adressen auslesen
$sql "select id, name, ort from adressen";
$result mysql_query($sql);
echo 
mysql_error();

// die Adressen zur Bearbeitung als Link anzeigen
while ($items mysql_fetch_array($result))
{
    echo 
'<a href="' $_SERVER['PHP_SELF'] .
        
'?id=' $items['id'] . '">' .
        
$items['name'] . ' ' $items['ort'] .
        
'</a> | ';
}
echo 
"<hr>";

// Formular anzeigen
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="id" value="<?php echo $_GET['id'?>">
Adressen-ID: <?php echo $_POST['id'?><br />
Name: <br /><input type="text" 
            name="name" 
            value="<?php echo $_POST['name'?>"><br />
Anschrift: <br /><input type="text" 
          name="anschrift" 
            value="<?php echo $_POST['anschrift'?>"><br />
PLZ: <br /><input type="text" 
      name="plz" 
            value="<?php echo $_POST['plz'?>"><br />
Ort: <br /><input type="text" 
      name="ort" 
            value="<?php echo $_POST['ort'?>"><br />


mail: <br /><input type="text" 
            name="mail" 
            value="<?php echo $_POST['mail'?>"><br />
            
            
            
Suchen: <br /><input type="text" 
            name="suchen" 
            value=""><br />            



<input type="submit" name="save" value="speichern">




<a href="mailto:<? echo $_POST['mail'];?>?subject=test&body=<? echo $_POST['name'];?>" >eMail Versand</a>







<a href="lesen.php">all Datens‰tze zeigen</a>
</form>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="submit" name="update" value="Update">
</form>
homermg ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 14.06.2009, 17:19  
Erfahrener Benutzer
 
Registriert seit: 14.08.2008
Beiträge: 157
Hexe befindet sich auf einem aufstrebenden Ast
Standard

Eigentlich kann da gar nichts geändert werden. Du hast 2 getrennte Formulare und wenn du auf Update klickst, werden keine weiteren Felder mit übergeben.

Und was sollen eigentlich die Links mitten im Formular?
Hexe ist offline  
Alt 14.06.2009, 17:26  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Die Tuts die du dir rein gezogen hast scheinen nicht gerade von großer Qualität zu sein. Das zeigt mir der ganze Code. Extrem anfällig für SQL-Injections, XSS Attacken.

Der Code von der Strukturierung mega hässlich dargestellt und den Rest hat hexe ja schon geschrieben. Wie da ein Datensatz geändert werden kann frage ich mich auch, weil in dem Formular keine ID übergeben wird.

Ungesichertes $_SERVER['PHP_SELF'] sollte man nicht einsetzen.

echo mysql_error(); ist aber Quatsch. Formatiere deine SQL-Statements mal besser und vor allem leserlicher.

Normalerweise gehst du folgendermaßen vor.
  1. Datensatz aus DB auslesen
  2. Werte aus der DB in ein Formular schreiben
  3. Nach den Werten also der ID das update machen
Du verwendest ein while Schleife obwohl du nur einen Datensatz haben willst. Das ist Quatsch. Hier kannst nachlesen für was eine while Schleife gut ist.

Im Prinzip ist der Code schrecklich. Überdenke nochmal alles genau, nimm Papier und Stift zu hand und schreibe es auf, zur Not auch ein Struktogramm. Und dann beginne den Code zu schreiben. So wird das nichts werden.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de

Geändert von litterauspirna (14.06.2009 um 17:31 Uhr).
litterauspirna ist offline  
Alt 14.06.2009, 18:15  
Neuer Benutzer
 
Registriert seit: 12.06.2009
Beiträge: 11
PHP-Kenntnisse:
Anfänger
homermg befindet sich auf einem aufstrebenden Ast
Standard

Hi Leute,

vielen Dank für die Tips,

für die Sicherheit habe ich auch schon ein Tutorial gefunden habe nur noch nicht eingebaut.

Könntet Ihr mir bitte helfen das Umzusetzen das mit dem updaten der Datensätze?

Das Auslesen geschieht doch damit:
PHP-Code:
// alle adressen auslesen
$sql "select id, name, ort from adressen";
$result mysql_query($sql);
echo 
mysql_error();

// die Adressen zur Bearbeitung als Link anzeigen
while ($items mysql_fetch_array($result))
{
    echo 
'<a href="' $_SERVER['PHP_SELF'] .
        
'?id=' $items['id'] . '">' .
        
$items['name'] . ' ' $items['ort'] .
        
'</a> | ';
}
echo 
"<hr>"
nur wie mache ich das mit der ID?
homermg ist offline  
Alt 14.06.2009, 18:20  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Zuerst mal ist das mit der id 0 Quatsch. Lege die Spalte in der Tabelle für die ID so an das sie auto_increment ist. So brauchst du nicht die ID mit eintragen wenn einen Datensatz anlegst.

Naja ich sagte schon deine Statement Struktur ist nicht gut, gewöhne dir eine bessere Schreibweise dafür an, übersichtlicher.

Was ich auch sagte wenn du einen Datensatz haben willst, ist die while Schleife Quatsch.

Ansonsten eine ausgelesene ID aus der DB trägst du einfach so ins hidden Feld ein und danach machst dann dein update.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 14.06.2009, 18:39  
Neuer Benutzer
 
Registriert seit: 12.06.2009
Beiträge: 11
PHP-Kenntnisse:
Anfänger
homermg befindet sich auf einem aufstrebenden Ast
Standard

kannst du mir vielleicht in meinen Code einbauen ich habe jetzt ein paar sachen durchgelesen aber irgendwie wieß ich noch immer nicht wie ich dran gehen soll?

die ID wird ja hier mit ausgelesen:
PHP-Code:
// alle adressen auslesen
$sql "select id, name, ort from adressen";
$result mysql_query($sql);
echo 
mysql_error(); 
und hier wird dann das hiddenfeld eingebaut?
if ( isset($_POST['update']) )
{
// Adresse ändern
$sql = "update adressen set
name = '" . $_POST['name'] . "',
anschrift = '" . $_POST['anschrift'] . "',
plz = '" . $_POST['plz'] . "',
ort = '" . $_POST['ort'] . "'
where id = '". $_POST['id'] . "'";
// echo "sql: $sql<br>";
$result = mysql_query($sql);
echo mysql_error();
}
homermg ist offline  
Alt 14.06.2009, 20:34  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Das ist doch net so schwer und ich habe dir doch schon geschrieben wie du da ran gehen musst. Das sind Grundlagenkenntnisse.

Noch mal.

Du liest den Datensatz aus der Tabelle aus.

Übergibst die Variablen aus der Tabelle in deine Formularfelder.

Dort machst du dir ein hidden Feld rein in das du die ID aus dem Datensatz rein schreibst.

Dann machst du dein Update und schreibst die $_POST superglobale für das hidden Feld der ID des Datensatzes in die Where Clausel.

So das war es, mehr ist es nicht.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna 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 Datensätze updaten, die zuvor durch Checkboxen ausgewählt wurden. peefonic PHP Tipps 2008 4 22.09.2009 11:23
Userdaten einlesen und ändern 54ch4 PHP Tipps 2009 3 16.03.2009 22:54
Registrierte User sollen ihre Daten ändern können 54ch4 PHP Tipps 2009 17 14.03.2009 14:29
Formularauswertung mit Arrays -> Datensätze ändern r-ene PHP Tipps 2009 11 06.03.2009 01:54
Daten per Formular ändern AJ79 PHP Tipps 2008 1 20.10.2008 21:44
[Erledigt] Fehlende Datensätze bei Ausgabe... Ramona86 Datenbanken 8 04.07.2008 12:12
mehrere datensätze mit mehreren submits ändern kladotti PHP Tipps 2008 2 27.04.2008 21:43
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
Datensätze ändern toko1284 PHP Tipps 2006 3 18.03.2006 07:29
Datensätze ändern PHP Tipps 2007 1 04.12.2005 18:45
ändern des document root für ein verzeichnis lomtas Server, Hosting und Workstations 2 01.05.2005 10:43
Datensätze kampfnickel PHP Tipps 2005 4 17.01.2005 13:41
Bild für MySQl Datensätze ändern PHP Tipps 2005 3 15.01.2005 11:37
datensätze einer mysql datenbank ändern PHP Tipps 2004 4 25.08.2004 17:54
[Erledigt] Datensätze anzeigen lassen und dann ändern? Datenbanken 3 10.07.2004 13:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
einlesen in db wird immer id_0 miteingetragen php, echo($_post[id]);

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