Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Es führt offensichtlich zu Verwirrungen, denn du suchst nach Scripten auf Javascript-Basis, findest aber "Java"-Scripte, diese können nicht funktionieren.

Mit Javascript kann man keine MySQL-Datenbank erreichen, mit Java schon.
Mag sein dass du den Unterschied kennst, aber vor allem wenn du hier nach Lösungen fragst sollten der Fragende und der Antwortende von der gleichen Basis ausgehen.

Ein Beispiel aus dem Webmasterforum, das häufiger vorkommt, da fragen dann Leute nach "CSS-Servern" oder diversen Problemen mit CSS, weil sie irgendwo das Stichwort gelesen haben und dann ins Webmaster-Forum kommen.
Gemeint ist dann aber nicht Cascading Style Sheets sondern CounterStrike Source --> hier "können" die Fragenden in der Regel zwar nichts dafür, aber ich hoffe du verstehst worauf ich hinaus will ;)

So Leute,

ich habe verstanden was ihr meint, auch schon nach dem ersten mal ;).
Aber jetzt habe ich noch ein Problem. Ich war brav und hab das alles so gemacht wie ihr gesagt habt, also ich hab es einfach als .php abgespeichert. Ich habe da eben einen kleinen Denkfehler gehabt.

Aber zu meinem jetzigen Problem:

Auf dieser Seite lese ich jetzt Daten aus der Datenbank ein und zeig die dann an. Damit da keine Irrtümer aufkommen und Komentare dazu sage ich gleich dass die Ausgabe nicht fertig formatiert ist ;)

Also der code:


<?php
$mysqlhost="*********";
$mysqluser="********";
$mysqlpwd="*****";
$mysqldb="*****";
$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die
("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht
waehlen.");
$eingabe = 1;
$sql = "SELECT * FROM artikel1 WHERE top = '$eingabe'";
$adressen_query = mysql_query($sql) or die("Anfrage nicht erfolgreich");
?>
<?php
while ($adr = mysql_fetch_array($adressen_query)){
?>
<?php

<div style="float: left; border: solid; margin-right: 20px; margin-top: 20px; width: 300px; height: 110px; border: 2px; border-color: #0099FF">
  <table>
    <td><a href="http://www.pcsysonline.de"><img src="<?php echo $adr['link'];?>" alt=""/></a></td>
   <td><font color="#000000" face="arial"><?=$adr['name']?></font><br />
   <b><font color="#FF0000" face="arial">Euro&nbsp;<?=$adr['preis']?></font></b><br />
   <a href="http://www.pcsysonline.de"><img src="http://www.mein-neues-handy-online.de/shop/warenkorb.png"/></a></td>
  </table>
</div>
   
 
<?php
}
?>

Beim Aufruf des Artikelbildes steht jetzt ein Link zu meiner Seite, das soll natürlich nicht so sein sondern das war nur zum testen. (wie die Anzeige aussieht könt ihr euch wieder auf Anzeige ansehen.
Jetzt möchte ich aber, dass man bei einem Klick auf das Bild, zur Detailansicht kommt. Dabei hab ich mir gedacht ich muss zuerst die Daten in eine $_SESSION übergeben. Aber ich bin mir nicht sicher. Ich kann auch einfach einen Wert in $_SESSION übergeben mit einem Eintrag wie z.B. $_SESSION = ......... und dann die Variable auch auf einer anderen Seite aufrufen, das kann ich schon (sag ich lieber zu eurer Beruhigung :D)

Jetzt meine Frage:

Wie kann ich einen Datensatz den ich aus der Datenbank eingelesen habe (siehe oberen code) in eine $_SESSION übergeben, durch einen Klick auf das Bild, oder auch einen Klick auf ein Detailansicht-Symbol, Damit die Detailansicht-Seite weiss von welchem Artikel die Daten angezeigt werden sollen.

Ich hoffe ihr habt noch lust mir weiter zu helfen.

LG Dieter

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo,

also: Keine Ahnung, wie viele einzelne Daten ein Datensatz von dir enthält, wieviele du davon wiederum in die Session schreiben willst, und was letztendlich noch so alles in der Session rumfliegt. Aber wenn ich dich richtig verstanden habe, brauchst du die Daten die du in die Session schreiben willst lediglich für deine Detailansicht!? D.h. die müssen nicht persistent in der Session gehalten werden?
Wenn dem so ist, wie wäre es mit einem etwas anderem Ansatz?  Du übergibst einfach nur bspw. (sinnvollerweise) die ID des Datensatzes, und liest einfach die Daten nochmal aus der Datenbank aus? Dann wäre auch die Übergabe ziemlich einfach. Die Bilder müssen ja auch irgendwie einem Datensatz zugeordnet sein, du liest halt einfach nur noch die ID aus und übergibst sie als Parameter. Dann kannst du sie ja ganz bequem auf der nächsten Seite mit GET auslesen.

<a href="http://www.pcsysonline.de?detailID=<?php echo $adr[&#39;id&#39;];?>"><img src="<?php echo $adr[&#39;link&#39;];?>" alt=""/></a>

Mario 8)

Hallo Mario,

ja da hast du recht, ich hab an die Möglichkeit auch schon gedacht. Als ich den Post geschrieben habe, habe ich aber gleich auch an den nächsten Schritt gedacht, und das ist die Übergabe an den Warenkorb und dort würde sich das Problem wieder ergeben nachdem ich ungern mit cookies arbeiten möchte.

LG
Dieter

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ja, aber dann gehst du davon aus, dass der Besucher, der sich das Ding eigentlich erst mal nur anschauen will, es auch gleich kaufen will. Dem ist ja nicht so. Schließlich muss er dann auf der Detailseite mind. nochmal einen Knopf ("Bestellen") drücken, also wäre das viel zu viel Aufwand. Denn was ist bspw. wenn sich der Besucher 5 Produkte in der Detailansicht anschaut, aber nur das letzte kaufen will? Dann hast du 5 in der Session und brauchst extra noch ein Flag, wo du unterscheidest, dass er genau dieses Teil kaufen möchte, und alle andere nicht. Klar, du kannst bei jedem verlassen einer Seite den Datensatz aus der Session löschen, aber dann brauchst du ihn auch gar nicht erst reinschreiben...
 

Ja, klar, ich wollte damit sagen, dass ich mir eben nicht sicher war wie ich es machen will, und nachdem ich sowieso fragen muss (weil ich es eben spätestens beim Warenkorb benötige), habe ich es zum jetzigen Zeitpunkt getan um dann selbst entscheiden zu können wie ich es machen will. 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Ich würde auch sagen, dass es einfacher ist einfach die Artikel-ID per GET zu übergeben, anders lässt sich das wohl auch nicht oder nur sehr kompliziert lösen.

Den WARENKORB kannst du dann entweder per Sessions oder Datenbank-Tabellen lösen, da klickt jemand dann auf "Bestellen" und dann wird die ID (oder was dir so vorschwebt) gespeichert - wobei ich aufgrund der Menge und der besseren "Übersicht" sowie dem Verwaltungsaufwand eher zu einer Lösung mit einer Datenbank raten würde, aber das ist nur meine eigene Meinung.

Aber da ich da fast böse auf die Nase geflogen wäre und nur per Zufall drauf gestoßen bin - du solltest von Grund auf mal an das Thema SQL-Injections denken, besonders wenn du Variablen, die in SQL-Abfragen übernommen werden, per GET oder POST abfragst.

Ich hab mir da selber ein Script dazu geschrieben:
<?php
	
// Folgende Funktion zur Überprüfung und dem Abfangen von SQL-Injektions wird nur ausgeführt
	
// falls mysql_query() ausgeführt werden soll mit einem Query, das Eingaben vom User
	
// beeinhaltet. Script-interne Abfragen werden nicht überprüft (auf die nur der Administrator
	
// bzw. Webmaster zugreifen könnte)

	
function 
mysqlquery($sql_query$array_insert)
	
{
	
	
// Jedes Array-Element beeinhaltet eine Eingabe vom User, die überprüft werden soll
	
	
for(
$a = (count($array_insert)-1); $a >= 0$a--)
	
	
{
	
	
	
// Falls magic_quotes aktiviert ist, erst ein stripslashes() durchführen, damit
	
	
	
// Anführungszeichen nicht doppelt maskiert werden
	
	
	
if(
get_magic_quotes_gpc()) $array_insert[$a] = stripslashes($array_insert[$a]);
	
	
	
// Nun das Array-Element überprüfen und ggf. maskieren
	
	
	
$array_insert[$a] = mysql_real_escape_string($array_insert[$a]);
	
	
	
// Das überprüfte Array-Element dem SQL-Query hinzufügen (%[INTEGER] ist dabei ein Element)
	
	
	
$sql_query str_replace(&#39;%&#39;.($a+1), $array_insert[$a], $sql_query);
	
	
}
	
	
// Falls die SQL-Abfrage keine Fehler enthält, korrektes SQL-Query zurückgeben
	
	
mysql_query($sql_query);
	
	
if(
mysql_error() == &#39;&#39;) return $sql_query;
	
	
// Ansonsten ein FALSE mit dem entsprechendem Fehler
	
	
else return array(
false$sql_query.&#39;<br>&#39;.mysql_error());
	

	
}

// Aufruf:
$sql_select mysqlquery("SELECT `id` FROM `tabelle` WHERE `text` = &#39;%1&#39; AND `text2` = &#39;%2&#39;", array($_GET[&#39;text1&#39;], $_GET[&#39;text2&#39;]));
if(!is_array($sql_select) AND $sql_select[0] != false$sql_select mysql_query($sql_select);
else die(
$sql_select[1]);

// Da bei einem INSERT oder UPDATE-Befehl dieser schon in der Funktion ausgeführt wird, kann man sich hier beim zweiten Schritt ein wenig Schreibarbeit sparen:

$sql_query mysqlquery("INSERT INTO `tabelle` VALUES(&#39;%1&#39;,  &#39;%2&#39;)", array($_GET[&#39;text1&#39;], $_GET[&#39;text2&#39;]));
if(is_array($sql_select) AND $sql_select[0] == false) die($sql_select[1]);


Ich weiß, es ist nicht unbedingt die perfekte Lösung oder das perfekte Script, aber hoffentlich leicht zu verstehen und leicht einzubauen.

Hallo,

es freut mich zu sehen dass ihr meiner Fragen noch nicht überdrüssig seid ;)

Mein Gebiet ist eben normal nicht die Software und deren Entwicklung, sondern die Hardware, aber ich habe mir in den Kopf gesetzt die Sache selbst zu programmieren und dann mach ich das auch, egal wie lang es dauert und wie viel ich dafür lernen muss ;)

Also, meine Gedanken zur Abwicklung des "Problems":

Wenn ich jetzt bei jedem Kunden der auf meiner Seite ist und der sich eine Detailseite an sieht, oder der eine Ware in seinen Warenkorb legt, egal ob er registriert ist oder nicht eine Tebelle anlegen muss, oder zumindest Datensätze in einer Tabelle, dann muss ich ja auf alle Fälle jedem der die Seite betritt eine "ID" zuordnen, sonst gibt es ja Probleme wenn mehrere gleichzeitig auf der Seite herumsurfen und sich Sachen angucken. Weiters muss ich dann nach jedem Kunden der nichts gekauft hat die Tabellen wieder leeren, oder eben seine Datensätze löschen sonst hab ich ja bald nur müll in meiner Datenbank. Bei Kunden die dann kaufen muss ich die Datensätze in einer ihm zugeordneten Tabelle, oder zumindest einem ihm zugeordneten Datensatz speichern. Damit hab ich dann die Daten doppelt, also muss auch wieder aus einer Tabelle rauslöschen, also, wie gesagt, ich bin kein Experte, aber mir kommt das vor als würde die Seite dann nichts anderes machen als nur schreiben/lesen/löschen/anlegen von Daten ;). Wie findet ihr das? Mir als Laie kommt das nicht als die einfachste und resourcen schonenste Lösung vor.
Also eine ID miss ich wohl sowieso jedem Kunden zuordnen, aber mit $_SESSION kommt mir das eben einfacher vor, weil wenn der weg ist dann sind die Daten wieder vergessen. Frei nach der Devise: "aus den Augen aus dem Sinn" und ich denke mir so sollte es hier auch sein. Wenn er will dass ich mich "der Shop" an ihn erinnert kann er sich ja registrieren. Ich denke das ist auch der Grund warum man in fast keinem Shop Merkzettel anlegen kann wenn man sich nicht registriert hat, weil die Daten eben nicht in die Datenbank geschrieben werden.

Also, lange Rede kurzer Sinn: Ich wär euch sehr dankbar wenn ihr mir meine Frage, wie ich ausgehend von meinem script die Daten in eine $_SESSION bekommen kann. Andere Möglichkeiten habt ihr mir ja schon gezeigt, dafür bin ich auch sehr dankbar, aber dann könnte ich selbst beide ausprobieren und mir dann ein Bild machen und euch auch mit stolz die Variante präsentieren für die ich mich entschieden habe ;)

LG
Dieter

 


« video bild wegmachenwebspace zum verlinken mit meiner HP »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Javascript
JavaScript ist eine weit verbreitete Skriptsprache, die ursprünglich von Netscape für das DOM-Scripting für Webseiten entwickelt wurde. Sie hat sich seitde...

Java
Java ist eine von der Firma SUN entwickelte Programmiersprache. Da Java unabhängig vom Betriebssystem läuft, kann ein einmal geschriebenes Programm auf allen Ja...

CSS
CSS ist die Abkürzung für Cascading Style Sheets, eine Beschreibungssprache im Internets, die für die visuelle Gestaltung von Webseiten verantwortlich ist....