Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

UPDATE in mySQL geht nicht

Frage Entwicklung PHP

Mitglied: dark3zz

dark3zz (Level 1) - Jetzt verbinden

09.09.2010, aktualisiert 12.10.2010, 5187 Aufrufe, 32 Kommentare

möchte eine form in meiner mySQL updaten. geht nicht. habe das gleiche script auf einer anderen seite, gleicher webserver. da funktioniert es. irgendwo hat es noch einen "hund" drin.

Guten Morgen liebe Gemeinde.

Ich hoffe nun das hier bei Administrator jemand einen Fehler findet. Komatas etc habe ich alle 100x geprüft..... Laut Fehlermeldung kann es das aber auch nicht sein. Ich denke ich habe etwas logisches vergessen, nur was !

Ich habe PHP 4.3 installiert. Nein, kein Upgrade möglich


Ich habe eine Seite wo ich Rechte anhand der Checkboxen vergebe. Beim "UPDATE"n der db bekomme ich folgende Fehlermeldung:
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 5
Und mit Line5 meint er den Eintrag in die db wo er die daten mit der ID zustellt...
01.
<?php 
02.
attr_liefer='$_POST[attr_liefer]' WHERE id = $_POST[id]"; 
03.
?>
Und hier das Script:
01.
  
02.
<?php 
03.
 
04.
    include "../dbcon.php"
05.
    include "auth.php"
06.
    include "navigation.php"
07.
    include "../functions.php"
08.
 
09.
    session_start(); 
10.
 
11.
    $submit = $_POST['submit']; 
12.
 
13.
    echo "Folgende Daten sind vorhanden<br><br>"
14.
 
15.
    // formulardaten mit strip_tags = html & php ignorieren 
16.
    $vorname = strip_tags($_POST['vorname']); 
17.
    $nachname = strip_tags($_POST['nachname']); 
18.
    $attr_prim = strip_tags($_POST['attr_prim']); 
19.
    $attr_add = strip_tags($_POST['attr_add']); 
20.
    $attr_liefer = strip_tags($_POST['attr_liefer']); 
21.
    $attr_admin = strip_tags($_POST['attr_admin']); 
22.
 
23.
    if(isset($_POST['submit'])) 
24.
25.
    $update = "UPDATE db SET 
26.
    attr_admin='$_POST[attr_admin]', 
27.
    attr_prim='$_POST[attr_prim]', 
28.
    attr_add='$_POST[attr_add]', 
29.
    attr_liefer='$_POST[attr_liefer]' WHERE id = $_POST[id]"; 
30.
 
31.
    mysql_query($update) or die(mysql_error()); 
32.
 
33.
    echo "Erfolgreich gespeichert<br><br>Bitte warten...<meta http-equiv='refresh' content='2;url=xxxxxx.php'>"
34.
        die(); 
35.
36.
 
37.
    if(!isset($_POST['submit'])) 
38.
 
39.
    // holt sich mit * alle daten aus der table temporär 
40.
    $result = mysql_query("SELECT * FROM db WHERE infocode='$infocode' ORDER BY id ASC") or die(mysql_error()); 
41.
 
42.
    // speichert die geholten daten in die variable $row 
43.
    while($row = mysql_fetch_array($result)) 
44.
45.
    ?> 
46.
    <form method="post" action="<?php echo $SERVER['PHP_SELF']; ?>"
47.
        <table width="800" border="0" bgcolor="#BBBBBB" cellspacing="1" cellpadding="2"
48.
            <tr> 
49.
                <td width="200" bgcolor="#F4F4F4"><b><?php echo $row['vorname']; ?> <?php echo $row['nachname']; ?></b></td> 
50.
                <td bgcolor="#F4F4F4"><input type="radio" name="attr_prim" value="ON" <? echo(is_checked($row[attr_prim]=='ON')); ?>>Schön ist die Welt</td> 
51.
                <td bgcolor="#F4F4F4"><input type="checkbox" name="attr_add" value="ON" <? echo(is_checked($row[attr_addt]=='ON')); ?>>Da hast Du recht</td> 
52.
                <td bgcolor="#DDDDDD"><input type="radio" name="attr_liefer" value="ON" <? echo(is_checked($row[attr_liefer]=='ON')); ?>>Halleluja</td> 
53.
                <td bgcolor="#D6A04B"><input type="checkbox" name="attr_admin" value="ON" <? echo(is_checked($row[attr_admin]=='ON')); ?>>Joe</td> 
54.
            </tr> 
55.
        </table> 
56.
      <br> 
57.
    <?php 
58.
        } #schluss der abfragen schleife 
59.
    ?> 
60.
        <br><br> 
61.
        <input type='hidden' name='id' value='<?php echo $_GET['id']; ?>' /><input type='button' value='Zurück' onClick='history.back()'> <input type="reset"> <input type="submit" name="submit" value="Speichern"
62.
    </form>

Laut Fehlermeldung (Andere mySQL Version....?? - Auf einer anderen Seite, derselbe Server funktionierts einwandfrei..)

was stimmt hier nicht :--) help, help !
32 Antworten
Mitglied: MrTrebron
09.09.2010 um 12:33 Uhr
Wie sieht denn der SQL Befehl aus wenn du ihn dir mal Anzeigen läßt
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 12:38 Uhr
Zitat von MrTrebron:
Wie sieht denn der SQL Befehl aus wenn du ihn dir mal Anzeigen läßt

SQL-Befehl:
UPDATE `db` SET `attr_admin` = '',
`attr_prim` = '',
`attr_add` = '',
`created` = NOW( ) WHERE `id` =150 LIMIT 1 ;

in meiner form schreib ich da ON rein falls angehakt. der SQL ist nun wenn man es abhakt, also leerer eintrag
Bitte warten ..
Mitglied: MrTrebron
09.09.2010 um 12:42 Uhr
Wenn du

01.
$update = "UPDATE db SET  
02.
26. 
03.
    attr_admin='$_POST[attr_admin]',  
04.
27. 
05.
    attr_prim='$_POST[attr_prim]',  
06.
28. 
07.
    attr_add='$_POST[attr_add]',  
08.
29. 
09.
    attr_liefer='$_POST[attr_liefer]' WHERE id = $_POST[id]"; 
Durchlaufen hast, wie ist dann der Inhalt von $update.
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 12:46 Uhr
string(0) "" NULL NULL string(2) "ON" string(2) "ON" string(2) "ON" 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 5
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 12:48 Uhr
nehme ich das WHERE id = $_POST[id] ganz weg, schreibt er mir einfach alles ein irgendwo hakt es mit der id
Bitte warten ..
Mitglied: MrTrebron
09.09.2010 um 12:51 Uhr
Sieht so aus

Die scheint wohl irgendwo verloren zu gehen
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 12:55 Uhr
Das Anzeigen der hinterlegten "ON"s in der db funktioniert. also kennt er ja die id. Ich lasse mir aber mehrere User anzeigen, alle die er findet unter " WHERE infocode='$infocode'" Das ist ein hinterlegter Code.

Warum schreibt er aber nichts mehr rein.... ANsonsten muss ich mir nochmals das andere Script reinkopieren und anpassen. Ich seh den Baum vor lauter Wald nicht mehr *gg*
Bitte warten ..
Mitglied: SlainteMhath
09.09.2010 um 14:03 Uhr
Moin.

darf ich noch ne Anmerkung zum Code machen? Die Seite ist anfällig für SQL Injection Angriffe: http://de.wikipedia.org/wiki/SQL-Injection

1. Du schmeisst zwar php & html aus den $_POST's benutzt dann aber trotzdem die $_POST Variable im Update:
01.
    $update = "UPDATE db SET  
02.
    attr_admin='$_POST[attr_admin]',  
03.
  [...}
2. strip_tags schützt dich zwar davor das htmlcode den der Benutzer eingeben hat in der DB und dann wieder auf der Webseite landet, aber vor SQL Injection schützt das nicht. Du möchtest $_POST zusätzlich mit mysql_real_escape_string bearbeiten, siehe http://php.net/manual/de/function.mysql-real-escape-string.php

lg,
Slainte

/EDIT: Tippfehler beseitigt
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 14:07 Uhr
Zitat von SlainteMhath:
Moin.

darf ich noch ne Anmerkung zum Code machen? Die Seite ist anfällig für SQL Injection Angriffe:
http://de.wikipedia.org/wiki/SQL-Injection

1. Du schmeisst zwar php & html aus den $_POST's benutzt dann aber trotzdem die $_POST Variable im Update:
01.
>     $update = "UPDATE db SET  
02.
>     attr_admin='$_POST[attr_admin]',  
03.
>   [...} 
04.
> 
2. strip_tags schützt dich zwar davor das htmlcode den der Benutzer eingeben hat in der DB und dann wieder auf der Webseite
landet, aber vor SQL Injection schützt das nicht. Du möchtest $_POST zusätzlich mit mysql_real_escape_string
bearbeiten, siehe http://php.net/manual/de/function.mysql-real-escape-string.php

lg,
Slainte

/EDIT: Tippfehler beseitigt

hoi, ja danke fuer die anmerkung. hab den real_escape_string nicht während des codens schon eingebaut, lauter faulheit Ist mir aber bekannt.

PS: wäre mir lieber du findest den FEHLER
Bitte warten ..
Mitglied: SlainteMhath
09.09.2010 um 14:30 Uhr
PS: wäre mir lieber du findest den FEHLER


Wird denn id korrekt per GET übergeben? Was steht im der HTML Quelle. wenn die Seite angezeigt wird (Zeile 61) ?

btw. die korrekte Schreibweise ist
01.
 $_POST['id')
ohne die ' erzeugt das zumindest eine NOTICE, oder einen falschen Wert, falls id als Konstante benutzt wird
Tipp: immer mit E_STRICT oder E_ALL entwickeln

[...] nicht während des codens schon eingebaut, lauter faulheit
Ich hab schon sooo viele PHP Seiten in Produktiv-Systemen gesehen, die "eingentlich nur zum debugen" waren
Bitte warten ..
Mitglied: manuel-r
09.09.2010 um 14:33 Uhr
Kannst du mal in Zeile 30 ein
01.
 echo $update
einbauen?
Das hier
string(0) "" NULL NULL string(2) "ON" string(2) "ON" string(2) "ON"
kann nämlich unmöglich der Inhalt von $update sein, weil alleine schon das UPDATE db SET aus Zeile 25 ganz am Anfang fehlt.

Manuel
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 14:46 Uhr
Zitat von manuel-r:
Kannst du mal in Zeile 30 ein
01.
 echo $update
einbauen?
Das hier
> string(0) "" NULL NULL string(2) "ON" string(2) "ON" string(2) "ON"
kann nämlich unmöglich der Inhalt von $update sein, weil alleine schon das UPDATE db SET aus Zeile 25 ganz am Anfang
fehlt.

Manuel


hoi manuel. ja hab nun mal den update query eingebaut. folgendes kommt zurück:

01.
UPDATE portal_user SET attr_admin='ON', attr_prim='ON', attr_add='ON', attr_liefer='ON', WHERE id = 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 =' at line 6
ich denke mit der id stimmt was nicht. habs nun auch nur mit einem user probiert. er schreibt nicht mal mit einem angezeigten user diese "ON" in die db.
die daten empfängt er schön = ON
Bitte warten ..
Mitglied: manuel-r
09.09.2010 um 14:51 Uhr
Klarer Fall: $_POST[id] ist leer. Dort wo deren Inhalt stehen sollte, also hinter id=, ist nämlich nur warme Luft. Jetzt musst du nur noch herausfinden, warum die Variable leer ist. Wird sie überhaupt vom Formular mitgeschickt?
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 15:03 Uhr
Zitat von manuel-r:
Klarer Fall: $_POST[id] ist leer. Dort wo deren Inhalt stehen sollte, also hinter id=, ist nämlich nur warme Luft.
Jetzt musst du nur noch herausfinden, warum die Variable leer ist. Wird sie überhaupt vom Formular mitgeschickt?

Ja die ID ist nirgendwo ich gebe die "id" unten als "hidden field" mit, aber das scheint nicht zu klappen. die frage ist, woher kriegt das script die "id" wenn ich es mit "GET" löse..... oder gibt es andere lösungen ?
Bitte warten ..
Mitglied: SlainteMhath
09.09.2010 um 15:08 Uhr
*hust*

vor einer guten halben stunde hab ich schonmal gefragt:


> Wird denn id korrekt per GET übergeben? Was steht im der HTML Quelle. wenn die Seite angezeigt wird (Zeile 61) ?
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 15:09 Uhr
hmm... funktionieren tut es wenn ich als URL logischerweise das hier übergebe:

http://www.aaaaaa.aa/aaaaaaaaa.php?id=151

die seite übergebe ich aber nicht mit einer ID in der url, da ich mehrere user anzeige und verwalten will, als eine art rechte verteillung.......



ich bin ganz auf dem holzweg.....


müsste ich bei den checkboxen in der VALUE mit ids arbeiten... hmmm ich weiss es nicht..
Bitte warten ..
Mitglied: manuel-r
09.09.2010 um 15:09 Uhr
Genau das wollte ich jetzt auch grad nochmal fragen...
Bitte warten ..
Mitglied: SlainteMhath
09.09.2010 um 15:21 Uhr
ok, langsam wird ein schuh draus ^^

Die Checkboxen müssen "attr_prim[<id>]" benannt werden.
01.
.... name="attr_prim[' <? echo $row["id"] ?> ']" ....
dann wird das als Array übergeben.

Einlesen kannst Du das dann in etwa so
01.
$attr_prim=$_POST["attr_prim"]; 
02.
foreach($attr_prim as $id => $value) { 
03.
 $update.. usw 
04.
}
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 15:41 Uhr
Zitat von SlainteMhath:
ok, langsam wird ein schuh draus ^^

lol da hast du ver*** nochmal recht


Die Checkboxen müssen "attr_prim[<id>]" benannt werden.
01.
> .... name="attr_prim[' <? echo $row["id"] ?> ']" .... 
02.
> 
habe ich mir doch gedacht. danke fuer den hinweis


dann wird das als Array übergeben.

Einlesen kannst Du das dann in etwa so
01.
> $attr_prim=$_POST["attr_prim"]; 
02.
> foreach($attr_prim as $id => $value) { 
03.
>  $update.. usw 
04.
> } 
05.
> 

muss ich das FOREACH für jede checkbox machen ?
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 16:04 Uhr
Zitat von SlainteMhath:
> [...] nicht während des codens schon eingebaut, lauter faulheit
Ich hab schon sooo viele PHP Seiten in Produktiv-Systemen gesehen, die "eingentlich nur zum debugen" waren

hab grad gesehen das ich diese funktion automatisch laufen habe (included file)


This stops SQL Injection in POST vars
foreach ($_POST as $key => $value)
{
$_POST[$key] = mysql_real_escape_string($value);
}

This stops SQL Injection in GET vars
foreach ($_GET as $key => $value)
{
$_GET[$key] = mysql_real_escape_string($value);
}
Bitte warten ..
Mitglied: godlie
09.09.2010 um 16:22 Uhr
Hallo,

also wenn du dein Script ohne den nötigen GetParameter aufrust ( index.php?id=12 ) dann wird in deinem Hiddenfield auch nichts stehen...
In deiner Form method ist die action falsch dort sollte $_SERVER stehen, weiters hast du eine Klammer vergessen für das If bei
!isset($_POST[submit])

Das wäre mal so was mir aufgefallen ist ich würd mal schwer an den Basics arbeiten und nicht nur irgendwelches zeug zusammenkopieren ...
Bitte warten ..
Mitglied: SlainteMhath
09.09.2010 um 16:27 Uhr
muss ich das FOREACH für jede checkbox machen ?
Nein, für jede vorhandene id, du willst ja jede Zeile die ausgegeben wurde auch wieder zurückschreiben
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 16:29 Uhr
eazy. das script habe ich nicht zusammen kopiert, wie kommst du drauf ? ist doch schön aufgebaut, die comments sind alle von mir. hey, jeder fängt mal irgendwann an oder.....



die klammer kann sein das sie beim copy&pasten verloren ging. stimmt so alles.

$SERVER geht so auch, habs nun in $_SERVER geändert

das hidden field hab ich nun auch weggelassen. stimmt, jetzt wo dus sagst: ich brauch das gar nicht weils nichts nutzt

aber genug offtopic !
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 16:36 Uhr
Zitat von SlainteMhath:
> muss ich das FOREACH für jede checkbox machen ?
Nein, für jede vorhandene id, du willst ja jede Zeile die ausgegeben wurde auch wieder zurückschreiben

ich kapiers noch nicht ganz. wir haben die variable $attr_prim. die steht da im FOREACH befehl. wo ist denn der rest meiner checkboxen ? hab ja noch attr_liefer attr_admin und attr_add

ps: ich les nebenbei noch in meinem "php von kopf bis fuss" buch ^^ mir raucht echt der kopf...
Bitte warten ..
Mitglied: SlainteMhath
09.09.2010 um 16:43 Uhr
01.
$attr_prim=$_POST["attr_prim"];  
02.
$attr_test=$_POST["attr_test"];  
03.
foreach($attr_prim as $id => $value) {  
04.
  $update = sprintf("UPDATE blubb SET attr_prim='%s', attr_test='%s' WHERE ID=%s", $attr_prim[$id], $attr_test[$id],$id]); 
05.
  mysql_query($update); 
06.
 } 
so in etwa
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 17:17 Uhr
Zitat von SlainteMhath:
01.
> $attr_prim=$_POST["attr_prim"];  
02.
> $attr_test=$_POST["attr_test"];  
03.
> foreach($attr_prim as $id => $value) {  
04.
>   $update = sprintf("UPDATE blubb SET attr_prim='%s', attr_test='%s' WHERE ID=%s", $attr_prim[$id], 
05.
> $attr_test[$id],$id]); 
06.
>   mysql_query($update); 
07.
>  }  
08.
> 
so in etwa

holy smoly ! ich probier das doch glatt mal aus, danke dir.... verstehen werd ichs wohl erst wenns funktioniert. aber so ist das nun mal. einzelne datensätze zu speichern, ändern und updaten habe ich soweit begriffen. arrays und foreach ist nun meine nächste "Nemesis".....
Bitte warten ..
Mitglied: dark3zz
09.09.2010 um 17:41 Uhr
ich frage mich wozu das" => $value " verwendet wird.... das kommt ja nirgends mehr vor.. oder ist das ein globaler string ?
Bitte warten ..
Mitglied: godlie
09.09.2010 um 17:52 Uhr
Ist ein wenig komisch konstruiert der foreach.

01.
$attr['one'] = "first"; 
02.
$attr['two'] = "second"; 
03.
 
04.
foreach($attr as $id => $value) {  
05.
   echo "Key/ID: ".id" Value: ".$value; 
06.
}  
07.
Ausgabe: 
08.
 
09.
Key/ID: one Value: first 
10.
Key/ID: two Value: second
Damit dürfte es verständlicher sein.

Aber ncoh ein ansatz für deinen Query:
01.
string attribs = ""; 
02.
foreach($attr_prim as $id => $value) { 
03.
  $attribs .= $id."='".$value."'","; 
04.
05.
$atrribs = substr(0,strlen($attribs) - 1; 
06.
 
07.
$query = "UPDATE blub SET ".$attribs." WHERE ID=".$id; 
08.
mysql_query($query);
Bitte warten ..
Mitglied: SlainteMhath
10.09.2010 um 07:44 Uhr
Moin,

ja stimmt, das $value gehört eigentl. raus..sowas kommt von c&p :P

lg,
Slainte
Bitte warten ..
Mitglied: SlainteMhath
10.09.2010 um 07:52 Uhr
Moin,

@godlie:
Aber ncoh ein ansatz für deinen Query:
[...]

Nein so klappt das nicht.

Er bekommt aus dem Form ein mehrere Arrays über $_POST die in etwa so aussehen:
01.
attr_prim { 
02.
   [0] =>  "wert1" 
03.
   [1] =>  "wert2" 
04.
   [2] =>  "wert3" 
05.
06.
 
07.
attr_test { 
08.
   [0] =>  "wert1" 
09.
   [1] =>  "wert2" 
10.
   [2] =>  "wert3" 
11.
}
Der Key der Arrays ist jeweils die ID des Datensatzes der upgedatet werden soll.

(Pseudo Code)
01.
 foreach(i = keys(attr_prim)) { 
02.
  UPDATE blubb SET attr_prim=<attr_prim[i]>, attr_test=<attr_test[i]> WHERE id=<i> 
03.
}
Dabei wird davon ausgegangen, das für jeden key in jedem array ein element vorhanden ist.

lg,
Slainte
Bitte warten ..
Mitglied: dark3zz
10.09.2010 um 17:05 Uhr
yo tnx. hatte folgende fehlermeldungen:

Notice: Undefined index: ON in ccccccccccccccccccccccccccccccccccc.php on line 22

ich werde nun mal den key aus jedem arra yauslesen anhand des bsp von Slainte.
Bitte warten ..
Mitglied: Guenni
19.09.2010 um 11:27 Uhr
Hi dark3zz,

bist du dir hier . . .

das hidden field hab ich nun auch weggelassen. stimmt, jetzt wo dus sagst: ich brauch das gar nicht weils nichts nutzt

. . . sicher, dass es nichts nutzt bzw. nicht funktioniert ??


Ich denke mal, das funkt. sehr wohl!!


Die Schreibweise . . . value='<?php echo $_GET['id']; ?>' . . . läßt darauf schließen, das du die Datensätze via Link

aufrufst.


Ein Grund, warum es nicht funktionieren könnte wäre, dass man aus Gründen der Lesbarkeit gerne Leerzeichen zwischen

Operanden und Operatoren läßt, z.B.: erg = a + b. Wenn du das bei Links machst: . . . datei.php?id = 1, wird das Leerzeichen

mit übertragen und PHP interpretiert die Variable als Zeichenkette, wobei letzteres zwar nur eine Vermutung von mir ist, aber

so geht es tatsächlich nicht, die ID wird nicht korrekt übertragen.

Anbei mal ein altes Script, das ich ein bißchen "umgefrickelt" habe:

01.
<?php 
02.
/* 
03.
* Formular wurde gesendet ? ************************************************************************* 
04.
*/ 
05.
if(isset($_POST['cmd'])){ 
06.
 /* 
07.
 * Update ausführen. Wenn eine Checkbox gesendet wurde(heißt, im Formular wurde das "Häkchen" gesetzt), 
08.
 * bekommen die Variablen die Zeichenkette "checked" zugewiesen, ansonsten nichts. 
09.
 */ 
10.
 $attr_a = isset($_POST['attr_a']) ? "checked" : ""
11.
 $attr_b = isset($_POST['attr_b']) ? "checked" : ""
12.
 $attr_c = isset($_POST['attr_c']) ? "checked" : ""
13.
 $attr_d = isset($_POST['attr_d']) ? "checked" : ""
14.
 /* 
15.
 * user_id ist das Hidden-Textfeld im Formular 
16.
 */ 
17.
 $user_id = $_POST['user_id']; 
18.
 $query="update tabelle6 set attr_a='$attr_a',attr_b='$attr_b',attr_c='$attr_c',attr_d='$attr_d' where id=$user_id"
19.
 mysql_query($query); 
20.
 /* 
21.
 * Die Seite ohne Parameter aufrufen, um GET- und POST-Daten zu löschen  
22.
 */ 
23.
 header("location:edit-user2.php"); 
24.
25.
/* 
26.
* *************************************************************************************************** 
27.
*/ 
28.
?> 
29.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
30.
<html> 
31.
<head> 
32.
<title>Update mit Checkboxen</title> 
33.
</head> 
34.
<body> 
35.
<?php 
36.
/* 
37.
* ***************** Tabelle abfragen und die Einträge als Link anzeigen **************************
38.
* Die ID des Datensatzes wird als Parameter an die URL angehangen und im Formular in einem  
39.
* Hidden-Textfeld gespeichert. 
40.
*/ 
41.
$query="select * from tabelle6"
42.
$result=mysql_query($query); 
43.
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){ 
44.
 echo "<a href=\"edit-user2.php?id=$row[id]\">$row[nachname], $row[vorname]</a><br>"
45.
46.
/* 
47.
* ************************************************************************************************* 
48.
* Link angeklickt ? ******************************************************************************* 
49.
* Datensatz mit der entspr. ID abfragen($_GET['id']) und im Formular ausgeben. 
50.
*/ 
51.
if(isset($_GET['id'])){ 
52.
 $id=$_GET['id']; 
53.
 $user="select * from tabelle6 where id=$id"
54.
 $result_user=mysql_query($user); 
55.
 $row=mysql_fetch_array($result_user,MYSQL_ASSOC); 
56.
 ?> 
57.
 <form action="" method="post"
58.
 <input type="text" name="vorname" value="<?php echo $row['vorname'];?>"/><br> 
59.
 <input type="text" name="nachname" value="<?php echo $row['nachname'];?>"/><br> 
60.
 <input type="checkbox" name="attr_a" value="checked" <?php echo $row['attr_a'];?>/> attr_a<br> 
61.
 <input type="checkbox" name="attr_b" value="checked" <?php echo $row['attr_b'];?>/> attr_b<br> 
62.
 <input type="checkbox" name="attr_c" value="checked" <?php echo $row['attr_c'];?>/> attr_c<br> 
63.
 <input type="checkbox" name="attr_d" value="checked" <?php echo $row['attr_d'];?>/> attr_d<br> 
64.
 <input type="hidden" value="<?php echo $id;?>" name="user_id"/> 
65.
 <input type="submit" name="cmd" value="Edit"/> 
66.
 </form> 
67.
 <?php 
68.
69.
?> 
70.
</body> 
71.
</html>
Gruß
Günni
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...