#1 (permalink)  
Alt 21.09.2004, 12:28
Benutzerbild von thyphoon  
Registriert seit: 30.06.2004
Beiträge: 63
Standard

Hallo,


habe gerade angefangen PHP zu lernen und habe mir hierf?r das Buch "Einstieg in PHP 5" gekauft. Kann ich nur jedem Empfehlen der mit PHP anfangen will.

Naja jetzt kommt mein Problem. Ich habe angefangen mir ein Formular zu erstellen, mit dem es leichter ist die Preise und den Status der Produkte im XTC Shop zu ?berarbeiten.

Da ich erst mal ausprobieren wollte ob es funktioniert, um nicht die SQL Datenbank von XTC zu zerlegen, habe ich das ganze an einer einfachen Datenbank mit Adressdaten ausprobiert. Hier funktioniert das Ganze. Aber wenn ich das Ganze jetzt auf die XTC Datenbank umschreibe und anwende werden die ?nderungen nicht gespeicht.

Noch eins zur Funktion man soll die M?glichkeit haben erst die ?nderungen zu machen und dann am schluss alles auf einmal zu speichern und nicht jeden Artikel einzeln wie im XTC Shop (Dies ist n?mlich sehr l??tig, wenn man viele Artikel auf einmal ?ndern muss).

Der PHP Code sieht wie folg aus.

Code:
<?php
  // Verbindung
  $host = "localhost";
  $user = "admin";
  $pass = "";
  
  mysql_connect($host,$user,$pass);
  mysql_select_db("shop");

  /* Datens?tze ?ndern */
   
  $res = mysql_query("select * from products");

  while ($dsatz = mysql_fetch_assoc($res))
  {
   $id = $dsatz["products_id"];
  $sqlab = "update products set products_price = '$pr[$id]', ";
   $sqlab .= " products_status = '$st[$id]',";
   $sqlab .= " where products_id = $id";
   mysql_query($sqlab);
  }
   
  /* Formular-Beginn */
  echo "<form action='xtc_update.php' method='post'>";
   
  /* Tabellen-Beginn */
  echo "<table>";
  echo "<tr><td>Produkt ID</td><td>Artnr.</td>";
  echo "<td>Preis</td><td>Status</td></tr>";
  
  /* Anzeigen */
  $res = mysql_query("select * from products order by products_model asc");

  /* Alle vorhandenen Datens?tze */
  while ($dsatz = mysql_fetch_assoc($res))
  {
   $id = $dsatz["products_id"];
   echo "<tr>";
  echo "<td>$id</td>";
  echo "<td>". $dsatz["products_model"] . "</td>";
   echo "<td><input name='pr[$id]' value='"
     . $dsatz["products_price"] . "' size='10'></td>";
   echo "<td><input name='st[$id]' value='"
     . $dsatz["products_status"] . "' size='10'></td>";
   echo "</tr>";
  }
  echo "<tr>";
  echo "<td><input type='submit' value='Speichern'></td>";
  echo "<td><input type='reset'></td>";
  echo "</tr>";
  echo "</table></form>";
?>
An was kann das Ganze liegen, dass die Daten nicht gespeichert werden? Oder hat jemand eine andere L?sung?

Vielen Dank im Voraus f?r eure Hilfe.

Gruss

thyphoon
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #2 (permalink)  
Alt 21.09.2004, 12:51
 
Registriert seit: 18.08.2004
Beiträge: 72
Standard

bin mir zwar nicht sicher aber k?nnte daran liegen:

$sqlab .= " where products_id = $id";
-----------------------------------^

muss entweder "==" oder sowas stehen, oder?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #3 (permalink)  
Alt 21.09.2004, 12:56
 
Registriert seit: 18.08.2004
Beiträge: 72
Standard

oh, nein, da hab ich doch was bl?des geschrieben st: :abgelehnt:
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #4 (permalink)  
Alt 21.09.2004, 13:00
 
Registriert seit: 18.08.2004
Beiträge: 72
Standard

und ich w?rde dir

das

Code:
while ($dsatz = mysql_fetch_assoc($res))
 {
   $id = $dsatz["products_id"];
   $sqlab = "update products set products_price = '$pr[$id]', ";
   $sqlab .= " products_status = '$st[$id]',";
   $sqlab .= " where products_id = $id";
   mysql_query($sqlab);
 }
nur dann ausf?hren, wenn du auch die daten vom formular abgeschickt hast, also ung. so:

Code:
if($_REAQUEST["Speichern"])
 while ($dsatz = mysql_fetch_assoc($res))
 {
   $id = $dsatz["products_id"];
   $sqlab = "update products set products_price = '$pr[$id]', ";
   $sqlab .= " products_status = '$st[$id]',";
   $sqlab .= " where products_id = $id";
   mysql_query($sqlab);
 }
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #5 (permalink)  
Alt 21.09.2004, 13:19
Benutzerbild von thyphoon  
Registriert seit: 30.06.2004
Beiträge: 63
Standard

Hallo,

danke f?r die schnelle Antwort.

Habe es mal so ?bernommen aber das eigentliche Problem hat ich immer noch.

Kann es vieleicht mit der Datenbank zusammen h?ngen, dass man vieleicht bei der XTC Datenbank das nicht so einfach ?ber externen Zugriff ?ndern kann?

Hab n?mlich auch schon mehrere Wege probiert.

Leider kenn ich mich aber nicht ganz so gut mit Datenbankstruktur von XTC aus.

Aber wenn jemand eine L?sung hat w?re ich sehr dankbar.

Gruss

thyphoon
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #6 (permalink)  
Alt 21.09.2004, 13:26
 
Registriert seit: 18.08.2004
Beiträge: 72
Standard

mh, denke nicht, dass das mit der datenbank zu tun hat...

probiere einfach ein query im phpmyadmin auszuf?hren:

update products set products_price = 1, products_status = 1 where products_id = 1;

und gucke, ob fehlermeldung ausgespuckt wird...
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #7 (permalink)  
Alt 21.09.2004, 14:01
Benutzerbild von thyphoon  
Registriert seit: 30.06.2004
Beiträge: 63
Standard

Hallo,

ich hab den Fehler selbst gefunden.

Und zwar hab ich in der Variable $sqlab ein Komma zu viel gemacht.

Die funktionsf?hige Datei sieht wie folgt aus.

Code:
<?php
  // Verbindung
  $host = "localhost";
  $user = "";
  $pass = "";
  
  mysql_connect($host,$user,$pass);
  mysql_select_db("shop");

  /* Datens?tze ?ndern */
   
  $res = mysql_query("select * from products order by products_model asc");

  while ($dsatz = mysql_fetch_assoc($res))
  {
   $id = $dsatz["products_id"];
  $sqlab = "update products set products_price = $pr[$id], ";
   $sqlab .= " products_status = $st[$id]";
   $sqlab .= " where products_id = $id";
   mysql_query($sqlab);
  }
   
  /* Formular-Beginn */
  echo "<form action='xtc_update.php' method='post'>";
   
  /* Tabellen-Beginn */
  echo "<table>";
  echo "<tr><td>Produkt ID</td><td>Artnr.</td>";
  echo "<td>Preis</td><td>Status</td></tr>";
  
  /* Anzeigen */
  $res = mysql_query("select * from products order by products_model asc");

  /* Alle vorhandenen Datens?tze */
  while ($dsatz = mysql_fetch_assoc($res))
  {
   $id = $dsatz["products_id"];
   echo "<tr>";
  echo "<td>$id</td>";
  echo "<td>". $dsatz["products_model"] . "</td>";
   echo "<td><input name='pr[$id]' value='"
     . $dsatz["products_price"] . "' size='10'></td>";
   echo "<td><input name='st[$id]' value='"
     . $dsatz["products_status"] . "' size='10'></td>";
   echo "</tr>";
  }
  echo "<tr>";
  echo "<td><input type='submit' value='Speichern'></td>";
  echo "<td><input type='reset'></td>";
  echo "</tr>";
  echo "</table></form>";
?>
Ich hofe irgendjemand kann es gebrauchen.

Man kann damit nat?rlich alle anderen Daten auch pflegen. Bitte nicht vergessen die Zugangsdaten f?r die mysql Datenbank zu ?ndern oder ein "include" Verweis ein zu bauen.

Gruss

thyphoon
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
eingabeformular, probleme

Themen-Optionen
Ansicht

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 aus
Pingbacks are aus
Refbacks are aus



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 Uhr.

Copyright © 2011 xt:Commerce GmbH / xt:Commerce International Ltd. - All Rights Reserved

xt:Commerce is a SafeCharge brand