Und zwar muss ich ja noch mein Bilderskript machen. Hab jetzt wieder eine Datenbank angelegt, eine Tabelle und will da einfach den Namen des Bildes einspeichern, bild1.jpg und bild2.jpg und so.
Hab das auch alles schön mit "INSERT INTO bildpfad (dateiname) VALUES ('bild1.jpg')"
gemacht, funktioniert auch alles, hab hinterher eine Tabelle mit meinen Bilder drin. Wenn ich aber das Skript aktualisiere, dann speichert der die alle nochmal da rein.
Kann ich das umgehen? Wenn ja, wie *g*
...
Überprüfen ob es bereits in die Tabelle eingetragen wurde. Es reicht ja einmal abzufragen ob überhaupt schon etwas in der Datenbanktabelle steht.
z.B.:
Das Dingen schaut nun ob bereits Datensätze in der Tabelle tabelle existieren. Wenn nicht, werden die Bilddaten eingetragen.
Es gibt aber noch unzählige andere Vorgehensweisen. Auch elegantere, sicherere, schönere, ...
Hm, das funktioniert nicht so ganz. Aber da hier mal wieder der Fehler auftaucht, den ich immer habe, wenn ich irgendwo mysql_num_rows() verwende, kann ich die Frage ja auch mal stellen *g*
Das ist jetzt mein PHP-Code. Ohne das, was Chocwise da gepostet hat, gings, er hat eben nur alles beim aktualisieren neu eingetragen. Vielleicht kann man das mit dem Einfügen auch eleganter oder kürzer oder so lösen, aber das is ja erstmal egal.
Jedenfalls meint er, dass in der Zeile "if(mysql_num_rows($get)==0)" ein Fehler ist.
Und die Meldung, die er ausspuckt ist die:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C... (pfadangabe halt)
Das hab ich immer, wenn ich irgendwie diese Funktion benutze, hatte das beim Gästebuch auch schon, die scheint irgendwie zu haken, wenn es eben noch keine Einträge gibt.
Ich mein, er trägt dann meine Daten da zwar ein, aber wenn da immer erst ne Fehlermeldung kommt, find ich das nicht so schön.
Kann man da nicht was gegen machen?
Hab nämlich das gleiche Problem auch bei meinem Gästebuch. Wenn ich da noch nichts eingetragen habe, dann krieg ich auch diese tolle Meldung, also hab ichs am Ende so gelöst, dass man erstmal das formular sieht, und die einträge, die dann kommen, erst da sind, wenn mans abschickt, damit mindestens ein Eintrag vorhanden ist.
Sehr nervig irgendwie >_>
Das ist jetzt der PHP-Code von meiner bilddatenbank. variablen-Namen sind erstmal nur provisorisch, die müssen eh noch angepasst werden, weil der Dozent da so eigenwillig ist >_<
Hm, das funktioniert nicht so ganz. Aber da hier mal wieder der Fehler auftaucht, den ich immer habe, wenn ich irgendwo mysql_num_rows() verwende, kann ich die Frage ja auch mal stellen *g*
...
...
Oi.
Wir haben den Query vergessen.
mysql_num_rows() kann mit einem String ala "SELECT * FROM bildpfad" nichts anfangen. Es braucht eine MySQl-Ressource... oder wie man das nennt.
Man muss also den String mit mysql_query() noch ausführen und das Ergebnis dieses Queries kann man dann mit mysql_num_rows() weiterverarbeiten.
Sorry, das hab ich vergessen.
PS: Natürlich kannst du das alles noch etwas zusammenfssen, wenn du magst.
z.B.:
müsste funzen.
Hab jetzt einfach (so wie Chocwise mir das mal erklärt hat) folgende zwei Zeilen unter den (berichtigten) Code, den ich als letztes gepostet habe, gehängt:
$sql = "SELECT * FROM bildpfad ORDER BY RAND() LIMIT 1";
$bild = mysql_result($sql,0,dateiname);
dateiname ist ja die Feldbezeichnung aus der Tabelle.
Jedenfalls krieg ich jetzt immer ne nette Fehlermeldung aus:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:/...
Wieso ist das so? Ich hab jetzt in alle schlauen bücher geguckt, die ich hier so rumliegen habe, aber es wird da nix gesagt, was mir selbst irgendwie helfen könnte >_>
Hoffe, ihr seid da schlauer als ich
Der Fehler sollte auch hier wieder aufgrund des fehlenden Querys entstehen. Du musst zunächst mit mysql_query die entsprechende Resource-Id generieren und diese dann an mysql_result übergeben.
so sollte es dann funktionieren
Der Fehler sollte auch hier wieder aufgrund des fehlenden Querys entstehen. Du musst zunächst mit mysql_query die entsprechende Resource-Id generieren und diese dann an mysql_result übergeben.
so sollte es dann funktionieren
...
ah gut, ich glaub, jetzt hab ich das prinzip auch begriffen hoff ich jedenfalls >_> *weiter rumprobieren geht*
danke schön
Macht gar nix :-) Ich hätte ja eigentlich auch mal selbst drauf kommen können, mit etwas mehr überlegen vielleicht *hust*
Aber wenn man noch nicht so vertraut ist und weiß, wie die ganzen Funktionen funktionieren (und das auch nirgends steht >_>), frag ich immer, bevor ich mich ärgere *g*
Und wo wir dabei sind, eine Frage habe ich noch. Bei meinem Gästebuch ist es so, dass ein Eintrag mehrmals in eine Datenbank geschrieben wird, wenn ich nur auf Aktualisieren klicke.
Ich wollte mal wissen, ob es dafür eine relativ einfache Möglichkeit gibt, das zu lösen.
Hatte in einem Buch geguckt, da stand drin, dass es eher kompliziert ist und dass sie das daher nicht erklären (toll >_>).
Falls es zu schwer ist, lass ichs weg, ich denk, so wichtig ists dann nicht, schreib ich eben nen Hinweis hin, dass man die Seite nicht aktualisieren soll
Ich hätte da eine Idee:
Frag doch einfach ab, ob der Gästebucheintrag in seiner Form schon in der Datenbank existiert. Wenn ja, dann wird das Eintragen in die Datenbank einfach blockiert.
Ich hätte da eine Idee:
Frag doch einfach ab, ob der Gästebucheintrag in seiner Form schon in der Datenbank existiert. Wenn ja, dann wird das Eintragen in die Datenbank einfach blockiert.
...
Ja, daran hab ich auch schon gedacht. Aber geht das denn, wenn ich bei den Einträgen auch immer die Zeit mit in die DB eintragen lasse? Weil die sich ja dauernd ändert.
Oder kann man das beschränken, dass er nur bestimmte Felder vergleicht? Müsste eigentlich >_>
Naja, ich werd da mal drüber nachdenken, ich hoffe, ich krieg das hin *hofft, dass sies diesmal auch allein hinkriegt*
Du könntest auch die $_POST - Variablen (ich geh mal davon aus, dass du darüber deine DB füllst) nach dem Klick auf den Button in Session-Variablen speichern und den Formulareintrag nur abschicken, wenn keine Session-Variablen existieren oder wenn sich Session-Variablen und $_POST-Variablen unterscheiden.
Es müsste auch gehen, dass du der POST-Variablen, die den Button beinhaltet, nach dem ersten Abschicken einen anderen Wert zuweist (null oder so) und den Eintrag nur abschickst, wenn diese POST-Variable nen ganz bestimmten Wert hat.
Falls das ganze ein bisschen wirr klingt ... einfach nochmal fragen, solltest du keine andere Lösung finden^^
Was ist daran so kompliziert?
Sollte eigentlich so gehen (eine wie ich finde sehr einfache Methode)
...
Hm, irgendwie geht das alles nicht so >_> Oder ich verstehs nicht, und mach was falsch.
Aber gerade mit diesen ganzen Sessions und so kenn ich mich überhaupt nicht aus. Deswegen ists für mich ziemlich kompliziert in der Hinsicht >_>
naja, wenn nicht, dann nicht ^^ So schlimm ists auch nicht, wenn ichs nicht drin hab, war ja nicht verlangt *g*
Hm, meine Lösung hat eigentlich nix mit Sessions zu tun. Ich weiß aber auch nicht, wo der Fehler ist...
Bei mir funktioniert es so. Ich such mal nach dem Code deines Gästebuchs im Thread und füge es dann da ein...
Jo. Putten Orks Lösung ist standard und wird so auch in professionellen Scripten benutzt. So auch hier im Forum oder bei den newskommentaren oder Umfrageabstimmung auf Squarenet.
Das es bei dir nicht funktioniert, July, könnte daran liegen das du vor der header()-Funktion bereits irgendwas an den Browser ausgibst.
Es darf vor Headerfunktionen nichts an einen Browser ausgegeben werden. Weder leerzeichen noch einen Zeilenumbruch.
Das Script muss mit <?php beginnen.
Ansonsten wäre noch denkbar das die $_SERVER-Variablen gesperrt sind. Ist zwar seeeehr paranoid, aber man weiß ja nie...
Notfalls kann man auch eine relative Adresse da angeben, wäre dann aber nicht HTTP 1.0 kompatibel AFAIR.
BTW: Diese Funktion header('Location: '.$_SERVER['REQUEST_URI']);
Ist eine Weiterleitung. Die Weiterleitung tritt auf Serverebene ein.
Sendet der Client den Request, schickt der Server als Antwort nicht den HTML-Output sondern ledigich die Aufforderung zur Weiterleitung auf, in diesem Falle $_SERVER['REQUEST_URI'], welches der Adresse der angeforderten Seite entspricht. Also quasi ein Reload ohne das $_POST und $_GET-Varialen neu übergeben werden.
Eine sehr schöne und saubere Methode um Neueinträge zu verhindern.
Ja, mein Problem liegt wohl daran, dass ich das Gästebuch in eine Tabelle packen muss.
Also ich musste letztes Jahr schon eine Website abgeben, die nur mit HTML und CSS erstellt wurde und auf Tabellen basiert. In die sollten wir jetzt unsere PHP-Sachen einbinden. Da sieht die Seite eben so aus, dass links ein Menü ist, und rechts ist eine große Tabellen-Zelle, in die dann eben der Code für das Gästebuch rein soll.
Hatte gestern ganz kurz mit dead_orc gequatscht, der meinte, dass das in dem Fall dann nicht geht.
Ja, mein Problem liegt wohl daran, dass ich das Gästebuch in eine Tabelle packen muss.
Also ich musste letztes Jahr schon eine Website abgeben, die nur mit HTML und CSS erstellt wurde und auf Tabellen basiert. In die sollten wir jetzt unsere PHP-Sachen einbinden. Da sieht die Seite eben so aus, dass links ein Menü ist, und rechts ist eine große Tabellen-Zelle, in die dann eben der Code für das Gästebuch rein soll.
Hatte gestern ganz kurz mit dead_orc gequatscht, der meinte, dass das in dem Fall dann nicht geht.
...
Och doch. In bin mir recht sicher das das funktioniert.
Nicht das ich Putten Orks Kompetenz in frage stellen würde, er hat sicherlich nur eine Möglichkeit übersehen.
Wenn du es dennoch versuchen möchtest, sprech mich im MSN an. Dann schauen wir uns das nochmal zusammen an.
Jo. Mit dem Reloadschutz ist July's Hausarbeit soweit fertig.
Und ihr Helfer habt gezeigt, dass das Webentwicklerforum mit eins derer Foren ist die den besten Userservice bieten.
Gute Arbeit Leute.
@ Putter Ork:
Ich hab die Headerweiterleitung eingebaut wie bereits im Thread angesprochen.
Dazu musste ich die schreibenden MySQL-Funktionen, die ja nur ausgeführt werden, wenn sie noch vor der Headerweiterleitung stehen, nach oben, über die HTML-Ausgabe geholt und hab unten dran dann die Weiterleitung eingebaut.
War nur verschieben eines größeren Codeblocks, umschreiben von 2 Codezeilen und hinzufügen von einer Codezeile.
Eine Sache von 15 Minuten. 1-2 wenn ich nicht so viel gelabert hätte.
Wenn du den finalen Code haben willst, musst du July fragen. Ich geb ihr Script nicht weiter, is ja nicht meins.
Kaum versuch ich meine mageren PHP-Kenntnisse mal zu gebrauchen, klappt nichts mehr. :P
Irgendwie will das hier nicht funzen:
...
Heh! Das ist nicht DEIN PHP-Frage-Thread.
Frag July gefälligst ob du IHREN PHP-Frage-Thread benutzen darfst.
Zu deiner Frage:
Du musst erstmal lernen wie du deine Problemchen hier angibst.
Wir brauchen Fehlermeldungen, Symptome und vielleicht noch etwas Beschreibung was du mit dem Script bewirken willst.
Solange die Punkte nicht dabei sind, schau ichs mir gar nicht erst an. >__>
BTW: Deine Tabelle aus der du mit dem SELECT-Statement auslesen willst heißt genau wie deine Datenbank (cs15v2_logo)?
Prüf das nochmal nach ob die Tabelle oder die Datenbank nicht doch anders heißt.