Hilfe mit mysql und php

  • #1
W

woelfin

Mitglied
Themenersteller
Dabei seit
23.03.2005
Beiträge
12
Reaktionspunkte
0
Ort
Österreich
Hi

Kann mir wer vielleicht helfen. Ich hab da ein privates projekt und komm leider nicht so voran wie ich will.

Ich hab probleme mit der mysql. Ich will über ein php formular einen Datensatz zu ändern. Den ich mir auf der ausgangseite abgefragt habe und ihn mir in einer Tabelle anzeigen lasse.

Wenn ich auf den link des jeweiligen Datensatzes klicke den ich ändern will verlinkt er eben auf die

So schaut der link aus:

Code:
echo <a href = bearbeiten.php?pro_Bez=$pro_Bez&pro_Detail=$pro_Detail&pro_Preis=$pro_Preis&kate_Bez=$kate_Bez&bearbeiten=1>$pro_Bez</a>;

und die bearbeiten.php schaut so aus:

Code:
If ($bearbeiten==1)
    {
       //$sql1=REPLACE INTO produkt (Produkt_Bez, Produkt_Detail, Produkt_Preis) VALUES 
                    //('$pro_Bez',->$pro_Detail',->$pro_Preis');

       $sql1=update produkt set Produkt_Bez=$pro_Bez AND Produkt_Detail=$pro_Detail AND
               Produkt_Preis=$pro_Preis;
       $res1Id=mysql_query($sql1,$linkID);
       echo $sql1;
    }

Nur irgendwie tut er das nicht wirklich so wie ich will.

Komm einfach nicht drauf. Bin schon etwas aus der übung was php angeht leider. (Vielleicht kann mich wer in php auch unterstützen)

Vielleicht kann mir doch wer helfen.

LG Wölfin
 
  • #2
woelfin schrieb:
Code:
<?php

$sql1=update produkt set Produkt_Bez=$pro_Bez AND Produkt_Detail=$pro_Detail AND Produkt_Preis=$pro_Preis;

?>

Nur mal als Zusatzinfo ;)

Welche Datentypen sind:

Produkt_Bez
Produkt_Detail
Produkt_Preis

Sind sie bzw. nur einer ein String, musst du diese Variable in Hochkomma setzen.
Du kannst auch alle Variablen in Hochkomma setzen, dann ist es auf jeden Fall richtig ;)

z.B.
Code:
<?php

$sql1=UPDATE produkt 
      SET Produkt_Bez=-> . $pro_Bez .->, 
          Produkt_Detail=-> . $pro_Detail .->, 
          Produkt_Preis=->  . $pro_Preis .-> ;

?>

(Bitte die Leerschritte entfernen, die sind nur damit man es besser sieht)

Die AND Anweisung brauchst du hier nicht !

Ich kenne natürlich dein Projekt nicht, aber sollte bei einer Updateanweisung nicht auf einen Speziellen Datensatz hingewiesen werden ???

z.B.

WHERE id = ?

Im Moment würdest du alle Datensätze in der Tabelle produkt updaten ;)

gruss conny
 
  • #3
Hi

Also

Produkt_Bez = varchar
Produkt_Detail=longtext
Produkt_Preis=dezimal

Die gleiche Abfrage über where Produkt_ID=$pro_ID habe ich auch schon ausprobiert nur das hat auch nicht geklappt.

Ich hab deiner neuen $sql1  bei mir geändert habe. Und wenn ich mir die neuen Daten
die ich geändert habe mir anzeige dann hat er sie auch geändert aber nicht in der DB.

ich habe ja einen link auf den jeweiligen Datensätze wenn ich eben auf den klicke das man ihn ändern kann.

LG Wölfin
 
  • #4
OK, versuche mal folgendes:

Code:
<?php

$sql1=UPDATE produkt
      SET Produkt_Bez=->. $pro_Bez .',
          Produkt_Detail=->. $pro_Detail .',
          Produkt_Preis=-> . $pro_Preis .' 
      WHERE Produkt_ID=$pro_ID;
mysql_query($sql1);
echo $sql1.<hr>;
echo mysql_errno() . :  . mysql_error() . \n;

?>

Dazu solltest du aber in deinem Link die Produkt_ID mit übergeben.

Das Ergebnis bitte hier Posten ;)

Sind bei dir in der php.ini register_globals auf on oder off gestellt ???

Generell solltest du eh mit register_globals off arbeiten.
D.H du musst den Request abfragen. z.B.:

Code:
<?php
if($_REQUEST['bearbeiten'] == 1) {

}
?>


gruss conny
 
  • #5
Entschulige aber was heißt heir posten ! Bin seit heute erst hier ?

Also ich hab das geändert aber er kommt bei mir mit einer fehlermeldung dich ich nicht ganz verstehen

Code:
UPDATE produkt SET Produkt_Bez =->Schrank', Produkt_Detail =->Bauern', Produkt_Preis =->35000' WHERE Produkt_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->' at line 4UPDATE produkt SET Produkt_Bez =->Schrank', Produkt_Detail =->Bauern', Produkt_Preis =->35000' WHERE Produkt_ID =

Also irgendwie findet er anscheinden die $pro_ID nicht aber ich habe sie im Link mit übergeben.

Code:
echo <a href = bearbeiten.php?Produkt_ID=$pro_ID&pro_Bez=$pro_Bez&pro_Detail=$pro_Detail&pro_Preis=$pro_Preis&kate_Bez=$kate_Bez&bearbeiten=1>$pro_Bez</a>;


Und die berarbeiten.php habe ich auf das jetzt geändert :

Code:
  If($_REQUEST['bearbeiten']==1)
    {
              
    $sql1=UPDATE produkt SET Produkt_Bez=->. $pro_Bez .',
                   Produkt_Detail=->. $pro_Detail .',
                   Produkt_Preis=-> . $pro_Preis .'
                   WHERE Produkt_ID=$pro_ID;

       $res1Id=mysql_query($sql1,$linkID)
               or print $sql1.'<br />'.\n.mysql_error(); 
       echo $sql1;
    }

LG Wölfin
 
  • #6
woelfin schrieb:
Code:
UPDATE produkt SET Produkt_Bez =->Schrank', Produkt_Detail =->Bauern', Produkt_Preis =->35000' WHERE Produkt_ID =

Also irgendwie findet er anscheinden die $pro_ID nicht aber ich habe sie im Link mit übergeben.

Sieht nicht so aus als ob du die Produkt_ID übergeben hast ;)

mach mal ein:
Code:
<?php
print_r($_REQUEST);
?>

ganz am Anfang der Datei. Dann sollten dir alle Variablen angezeigt werden die per Request übergeben werden.

Fehlt der Wert bei Produkt_ID, ist der Fehler ersteinmal woanders zu suchen ;)

gruss conny

edit: Posten => Antworten
 
  • #7
Kommando zurück ;)

Ich glaube, ich habe den Verursacher gefunden :D

im Link übergibst du die Variable Produkt_ID,
und in dem SQL-String fragst du die Variable $pro_ID ab.

Die 2 Variablen sollten schon gleich sein ;)


gruss conny
 
  • #8
Also zu deiner voherigen Hilfe

Mit der $_Request

Hab ich folgdes heraus bekommen
Code:
Array ( [Produkt_ID] => 42 [pro_Bez] => Schrank [pro_Detail] => Bauern [pro_Preis] => 35000 [kate_Bez] => Holz [bearbeiten] => 1 [pma_theme] => original [pma_lang] => de-iso-8859-1 [pma_charset] => iso-8859-1 )

Und soweit ich es sehe über gibt er mir die Produkt_ID
 
  • #9
woelfin schrieb:
Und soweit ich es sehe über gibt er mir die Produkt_ID

Gut, also muss deine Abfrage so aussehen:
Code:
<?php
If($_REQUEST['bearbeiten']==1)
  {
       
  $sql1=UPDATE produkt SET Produkt_Bez=->. $pro_Bez .',
          Produkt_Detail=->. $pro_Detail .',
          Produkt_Preis=-> . $pro_Preis .'
          WHERE Produkt_ID=.$Produkt_ID.;

    $res1Id=mysql_query($sql1,$linkID)
        or print $sql1.'<br />'.\n.mysql_error();
    echo $sql1;
  }
?>

gruss conny
 
  • #10
Und zu deiner zweiten Hilfe

Auf der Ausgangsseite habe ich eine Tabelle wo die Datensätze drinnen stehen die ich mit der Select Abfrage heraus lese

Aber wieso Produkt_ID ist die Spalte in der Tabelle produkt
und $pro_ID habe ich so zugewiesen

Code:
$abfrage = SELECT produkt.Produkt_ID, produkt.Produkt_Bez, 
                   produkt.Produkt_Detail, produkt.Produkt_Preis,
                   kategorie.Kategorie_Bez from produkt, kategorie where 
                   produkt.Kategorie_ID = kategorie.Kategorie_ID;

while($zeile = mysql_fetch_array($resId,MYSQL_BOTH)) 
   { 
        //Spalte Prokdukt ID 
        $pro_ID =$zeile[0]; 
        //Spalte Produkt Bez 
        $pro_Bez=$zeile[1]; 
        //Spalte Produkt Detail 
        $pro_Detail=$zeile[2]; 
        //Spalte Produkt Preis 
        $pro_Preis=$zeile[3]; 
        //Spalte Kategorie Bez 
       $kate_Bez=$zeile[4]; 
   }

Und der berabeiten link schaut so aus:

Code:
echo <a href = bearbeiten.php?Produkt_ID=$pro_ID&pro_Bez=$pro_Bez&pro_Detail=$pro_Detail&pro_Preis=$pro_Preis&kate_Bez=$kate_Bez&bearbeiten=1>$pro_Bez</a>;


Das heißt er soll das was in Spale 0 drinnen steht also in der Spalte Produkt_ID in die Variable $pro_ID zuweisen.
 
  • #11
Ich hab es genau so gemacht ! und er kommt wieder mit der selben Fehlermeldung !

Ich verstehs irgendwie nicht. :'(
 
  • #12
OK, dan mach jetzt mit dieser Abfrage noch mal print_r und gebe nochmal die Fehlermeldung aus.
Beides nochmal hier schreiben.
 
  • #13
Die bearbeiten.php hab ich auf das jetzt geändert

Code:
  If($_REQUEST['bearbeiten']==1)
    {

    $sql1=UPDATE produkt SET Produkt_Bez=->. $pro_Bez .',
                   Produkt_Detail=->. $pro_Detail .',
                   Produkt_Preis=-> . $pro_Preis .'
                   WHERE Produkt_ID=$pro_ID;

       $res1Id=mysql_query($sql1,$linkID)
               or print $sql1.'<br />'.\n.mysql_error(); 
       echo $sql1;
    }

Und er kommt mir wieder mit der Fehlermeldung

Code:
UPDATE produkt SET Produkt_Bez=->Test', Produkt_Detail=->Test', Produkt_Preis=->1' WHERE Produkt_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->' at line 4UPDATE produkt SET Produkt_Bez=->Test', Produkt_Detail=->Test', Produkt_Preis=->1' WHERE Produkt_ID=

Obwohl die $_request mir das ausgibt

Code:
Array ( [Produkt_ID] => 43 [pro_Bez] => Test [pro_Detail] => Test [pro_Preis] => 1 [kate_Bez] => Glas [bearbeiten] => 1 [pma_theme] => original [pma_lang] => de-iso-8859-1 [pma_charset] => iso-8859-1 )
 
  • #14
OK, nochmal langsam zu mitschreiben ;)

Wenn du in einem Link die Variable A an die Folgeseite übergibst,
kannst du nicht auf der Folgeseite die Variable B abfragen.

In deinem Beispiel:

Du übergibst per Link die Variable Produkt_ID,
und auf der bearbeiten Seite Fragst du nach der Variablen pro_ID,
dass kann nicht klappen.

Entweder du übergibst im Link die Variable pro_ID=$pro_ID, dann kannst du bearbeiten.php so lassen.

Oder du lässt den Link so wie er ist Produkt_ID=$pro_ID,
dann musst du in der SQL-Abrage die Where-Klausel in WHERE Produkt_ID=$Produkt_ID ändern.
 
  • #15
ich hab jetzt nur die sql anweisung geändert

und mit mysql_error hat er mir folgendes gebracht

Code:
UPDATE produkt SET Produkt_Bez=->Test', Produkt_Detail=->Test', Produkt_Preis=->1' WHERE Produkt_ID=43

Das heißt er hat zumindes die Produkt_ID gefunden.

aber in der DB hat er mir wieder nichts geändert.
 
  • #16
Ok, immerhin etwas.

Wenn du phpMyAdmin zur verfügung hast, probieren wir es mal damit.

Im phpMyAdmin die betreffende Datenbank öffnen und den SQL-Befehl

UPDATE produkt SET Produkt_Bez=->Test', Produkt_Detail=->Test', Produkt_Preis=->1' WHERE Produkt_ID=43;

einmal direkt ausführen.
Wenn es eine Fehlermeldung gibt, hier Posten
 
  • #17
Also mit

Code:
UPDATE produkt SET Produkt_Bez=->Test', Produkt_Detail=->Test', Produkt_Preis=->1' WHERE Produkt_ID=43;

Bringt er mir keine fehlermeldung aber er änder nichts

Und wenn ich die selbe Abfrage mache mit

Code:
UPDATE produkt SET Produkt_Bez=->Danny Test', Produkt_Detail=->Danny Test', Produkt_Preis=->1000' WHERE Produkt_ID=43;

Das heißt ich gebe ihm fix einen einen andern Wert ein dann ändert er es mir in dem Datensatz wo die ID = 43 ist.
Ohne Fehlermeldung
 
Thema:

Hilfe mit mysql und php

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.959
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben