[PHP & MySQL] Erfolg eintragen

Remember
Hach, jetzt kann ich den Irrtumsthread doch noch benutzen xD

Also: Ich habe jetzt die eigenen vergangenen Turniere und möchte jetzt den Erfolg eintragen lassen. Wie ich das in der Datenbank ändere hab ich ja jetzt auch schon gesagt bekommen. Aber mein hauptsächliches Problem ist jetzt eigentlich: Wie schaffe ich es, dass er sich merkt WO ich auf "Erfolg eintragen" geklickt habe. Also bei welchem Pferd und bei welchem Turnier blabla ...

Ist das überhaupt möglich? großes Grinsen
Julia712
Hey,

also ich weiß nicht wie du's aufgebaut hast, aber theoretisch würd ich mal sagen über Variablen Augenzwinkern


Lg
Julia


Soo, ich hab mal in deine anderen Threads reingeschaut und gehe mal davon aus, dass du einen Link bei den ausstehenden Turnieren machen möchtest, sodass man per Klick zum Ergebnis kommt?
Dann einfach an den Link ?id=$row->ID anhängen, sodass an das Formular, in dem du dann wohl Platzierung etc. eingeben magst, die Variable id übergeben wird, die mit der ID des Turnieres belegt ist. Wenn du ohne ID arbeitest, musst du halt Turnier und Pferd an den Link anhängen Augenzwinkern
Beim Formular schreibst du dann im <form>-tag bei action an den link einfach wieder die variablen dran und dann kannst du mit denen in der Auswertung arbeiten smile
Remember
Oh gott. mein kopf raucht grade und ich kapier gar nix unglücklich

also. machen möcht ichs so: man sieht die vergangenen turniere und dort ist ein link zu einem formular, wo man den erreichten platz eintragen kann. dieser soll dann in der tabelle 'turnier' nachgetragen werden (in der tabelle 'turnier' in der datenbank meldet man bei mir auch ein neues turnier). UND dann soll das ganze noch irgendwie in den steckbrief kommen. womit ich gerade auch sehr stark kämpfe, weil es nicht mag. unglücklich

aargh. du hättest nicht gerade zufällig lust, dir das mal live anzuschauen? ich krieg grad denkerisch gar nix mehr auf die reihe und ich kapier das alles kein stück. also doch, schon ein wenig. aber nicht genug um das hinzukriegen, was ich will. und alle tuts laufen bei mir schief und ich bin grad echt verzweifelt. unglücklich unglücklich
Julia712
Zitat:
Original von BlackTear
Hallo.
Ich habe deine Threads in letzter Zeit mal ein wenig beobachtet und gesehen, dass dir der Code eigentlich überall vorgekaut wird.
Wie wäre es, wenn du dir erst einmal ein paar Tutorials durchliest, da du PHP an sich scheinbar zwar verstanden hast, aber noch nicht mit Begriffen wie Variablen und den Funktionsweisen von PHP verwendet werden.

Sehr ans Herz legen kann ich dir diese hier:
www.schattenbaum.net/php
www.tut.php-q.net
www.php-einfach.de

Liebe Grüße
Nella


Das ist ein guter Vorschlag, vor allem den ersten und dritten Link mag ich auch sehr gerne smile


An sich ist dein Problem wirklich nicht schwierig, du musst halt einfach ein wenig überlegen Augenzwinkern

1. In der Tabelle musst du den Link hinzufügen zu dem Formular und mit Hilfe dieses Links musst du dann die nötigen Variablen übergeben. Dies macht man, indem man an den Link ein ? anhängt, dann den Variablennamen für die nächste Seite, dann ein = und zum Schluss den Wert, der übergeben werden soll. Also zB www.DeinLink.php?ID=$row->ID

2. Nun bist du über den Link auf die Formularseite gekommen und machst dir hier einfach ein ganz normales Formular, bei dem du den Platz eintragen kannst. Das Formular definierst du ja mit <form method="post" action="www.DeinLink.php"> Hier variierst du den Link wieder so, dass die benötigten Variablen weitergegeben werden (wie in Schritt 1).

3. In der ausführenden Datei des Formulares musst du nun den Wert in der Tabelle 'turnier' verändern (wie das geht, hab ich dir glaub ich schon irgendwo mal erklärt^^) und dann das ganze in den Steckbrief eintragen. Da benötigst du dann auch wieder den update-Befehl smile



Schau dir am besten die Seiten einmal in Ruhe an und versuche das, was ich dir gerade erklärt habe, nachzuvollziehen. Wenn du dann immer noch Fragen hast, einfach fragen Freude
Remember
Danke für die tollen Seiten. smile
Und mithilfe den Tuts dort bekomme ich das jetzt auch mit der Übertragung hin. Nur schneidet er mir den Namen nach einem ' plötzlich ab & zeigt den Rest dann nicht mehr an, kann das sein? (Ich hab jetzt mithilfe von GET die Daten weiterreichen wollen ...)

Ich versuch gerade noch irgendwo die ID dranzuhängen, weil mit der klappts ja einwandfrei.
Ist es möglich einen GET-Wert von einer anderen Datei und nicht von der URL zu machen? Also, dass er sich jetzt in meinem Beispiel die ID vom angegebenen Pferd holt?

Vielleicht zeigt das was ich meine (auch wenns nich funzt.):
$id = $_GET['id' FROM '$pferd'];


/edit:
Wollte jetzt einfach noch eine Abfrage einbauen
$id = $sql = "SELECT * FROM pferd WHERE Name = '$pferd'";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
echo "$row[ID]";
}
mysql_close();

Aber so wills auch nich funktionieren.
Der gesamte Code wäre jetzt:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
<php?
include("checkuser.php")
?>

<html>
<head>
<title>SHAKESPEARE</title>
<link rel="stylesheet" href="styli.css">
</head>

<php?
//Datenbankverbindung einfügen!
   include('datenbank.php');


//Variablen festlegen

   $reiter = $_SESSION["name"];
   $pferd = $_POST['pferd'];
   $hofname = $_POST['hofname'];
   $hofaddy = $_POST['hofaddy'];
   $datum = $_POST['datum'];
   $pruefung = $_POST['pruefung'];


//wenn eine der Variablen name, pass oder mail leer ist, dann [if]
   if( ($pferd=='') OR ($hofname=='') OR ($hofaddy=='') OR ($datum=='') OR ($pruefung=='') ) {
//Ausgabe der Fehlermeldung
      echo "<b>Error</b>
      Bitte fülle alle Felder aus!<br><br>
      <a href="javascript:%20history.back(-2)" target="_self">Zurück</a>";
//wenn alles richtig ist: 
   } else {
//hier steht, was Eintrag ist und was damit gemacht werden soll. Welche Spalten sollen ausgefüllt werden?
      $eintrag = "INSERT INTO `turnier` ( `pferd` , `hofname` , `hofaddy` , `datum` , `pruefung` , `reiter` )
      VALUES ('$pferd', '$hofname', '$hofaddy', '$datum', '$pruefung', '$reiter')";
//hier wird entschieden, dass $eintrag über die Datenbankverbindung eingetragen werden soll.
      $eintragen = mysql_query($eintrag);
//Ausgabe der Erfolgsmeldung
      if($eintragen==true) {
         echo "<b>Eintrag erfolgreich</b>
         Du hast erfolgreich einen Turniertermin eingetragen.";
      } else {
         echo "Fehler!";
         include('neuesturnier.php');
      }
   }

//PHP schließen
?>


</html>
Julia712
Hey,

der Code ist jetzt der, mit dem ein neues Turnier eingetragen wird, oder? Für das Hinzufügen der Platzierung brauchst du ja noch einen anderen Augenzwinkern

Und das auslesen der ID war fast richtig:
php:
1:
2:
3:
4:
5:
6:
$sql "SELECT * FROM pferd WHERE Name = '$pferd'";
$result mysql_query($sql);
while ($row mysql_fetch_assoc($result)) {
$id $row[ID];
}
mysql_close();
Du musst nur darauf achten, dass die Zuweisung der Variable erst beim Auslesen geschieht smile

Ja, das mit dem ' im Namen ist ein Problem. Ebenso, wenn du ein Leerzeichen im Namen hast. Entweder du übergibst wirklich nur die ID oder du machst ein nicht sichtbares Feld im Formular, dem du als Inhalt den Namen zuweist. Dann wird das ganze per post mit dem Formular übergeben Augenzwinkern
Remember
Jap, das war der Code von der Erstellung eines neuen Turniers. Weil da muss ich ja auch die ID reinbringen, sonst kann ich sie ja später nicht rauslesen. hab ich mir so gedacht großes Grinsen

Juche, das erste Mal, was fast richtiges alleine geschafft xD

Hmm. Irgendwie behandel er den unteren Teil jetzt gar nicht mehr als PHP-Teil. (siehe auch in meinem letzten Post -> der untere PHP-Teil ist gar nich farbig oO). Eh ... was hab ich jetzt schon wieder falsch gemacht? Ich find grad ums verrecken nichts falsches ... :/
Oli
Zitat:
Original von Cousquer
Hmm. Irgendwie behandel er den unteren Teil jetzt gar nicht mehr als PHP-Teil. (siehe auch in meinem letzten Post -> der untere PHP-Teil ist gar nich farbig oO). Eh ... was hab ich jetzt schon wieder falsch gemacht? Ich find grad ums verrecken nichts falsches ... :/


code:
1:
<php?


Soll das
code:
1:
<?php
heißen?
Der erste Teil des Codes is nur farbig weil das Forum auch Code ohne <?php und ?> farbig anzeigt..

LG,
Oli
Julia712
Bei insert machst du ja einen neuen Datensatz. Am besten machst du die Spalte ID in der MySQL-Datenbank mit einem Auto-Increment-Wert, sodass die ID dann automatisch vergeben wird smile
Dazu per PhpMyAdmin für die Spalte ID als Extra auto_increment eintragen und den Primärschlüssel aktivieren (das Symbol mit dem Schlüssel). Dann wird die ID immer automatisch in aufsteigender Reihenfolge gesetzt smile
Remember
Aber ich möcht ja die ID vom Pferd und nicht eine ansteigende ID großes Grinsen
Und eigentlich dachte ich auch, dass das jetzt mit dn Variablen so passen würde, aber anscheindend so doch nicht xD

Der Code fürs TUrnieredintragen momentan:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
<?php
include("checkuser.php")
?>

<html>
<head>
<title>SHAKESPEARE</title>
<link rel="stylesheet" href="styli.css">
</head>

<?php
//Datenbankverbindung einfügen!
   include('datenbank.php');


//Variablen festlegen

   $reiter $_SESSION["name"];
   $pferd $_POST['pferd'];
   $hofname $_POST['hofname'];
   $hofaddy $_POST['hofaddy'];
   $datum $_POST['datum'];
   $pruefung $_POST['pruefung'];

$sql "SELECT * FROM pferd WHERE Name = '$pferd'";
$result mysql_query($sql);
while ($row mysql_fetch_assoc($result)) {
$id $row[ID];
}
mysql_close();


//wenn eine der Variablen name, pass oder mail leer ist, dann [if]
   if( ($pferd=='') OR ($hofname=='') OR ($hofaddy=='') OR ($datum=='') OR ($pruefung=='') ) {
//Ausgabe der Fehlermeldung
      echo "<b>Error</b>
      Bitte fülle alle Felder aus!<br><br>
      <a href="javascript:%20history.back(-2)" target="_self">Zurück</a>";
//wenn alles richtig ist: 
   } else {
//hier steht, was Eintrag ist und was damit gemacht werden soll. Welche Spalten sollen ausgefüllt werden?
      $eintrag "INSERT INTO `turnier` ( `id` , `pferd` , `hofname` , `hofaddy` , `datum` , `pruefung` , `reiter` )
      VALUES ('$id', '$pferd', '$hofname', '$hofaddy', '$datum', '$pruefung', '$reiter')";
//hier wird entschieden, dass $eintrag über die Datenbankverbindung eingetragen werden soll.
      $eintragen mysql_query($eintrag);
//Ausgabe der Erfolgsmeldung
      if($eintragen==true) {
         echo "<b>Eintrag erfolgreich</b>
         Du hast erfolgreich einen Turniertermin eingetragen.";
      } else {
         echo "Fehler!";
         include('neuesturnier.php');
      }
   }

//PHP schließen
?>


</html>

Übrigends danke nochmal wegen dem <?php. Sieht mir ählnich, dass ich alles wieder verdreh xD

Aber er wirft mir jetzt die Fehlermeldung
Warning: mysql_query() [function.mysql-query]: Access denied for user 'www-data'@'localhost' (using password: NO) in /users/shakespeare/www/neuesturnier_send.php on line 45

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /users/shakespeare/www/neuesturnier_send.php on line 45
Fehler!


aus. Und wenn man dann nachschaut, wäre das ja der Eintrag in die Datenbank. Und im ersten Teil der Fehlermeldung sagt er ja, dass der Zugang nicht ridhtig ist. Aber es hat ja die ganze Zeit davor auch geklappt ôÔ Vorallem, ist das weder mein Username noch mein Passwort, das ich in der datenbank.php angegeben habe (und die ja auch included ist...)
Julia712
Ich versteh den Sinn nicht xD
Wozu willst du jetzt die ID vom Pferd eintragen?!

Und zu deinem Fehler: Du schließt in Zeile 30 die Datenbank-Verbindung Augenzwinkern
php:
1:
mysql_close();
Remember
*grins* hab ich grad wieder seltsame gedankengänge, die nur ich kapier? großes Grinsen
ich dachte mir nur, dass es einfacher mit dem erfolge eintragen ist, wenn ich es nicht über den namen, der ja auch 's und leerzeichen hat, sonder halt über die id mache ...

ah, dankeschön :>
es funzt wieder smile
ich trottel. großes Grinsen


Und dann jetzt nochmal zum richtigen Problem:
Ich bin mir fast ziemlich sicher, dass ich da diesmal alles richtig gemacht habe & er zeigt mir auch an, dass er die Platzierung geändert hat, aber er ändert die Platzierung nicht Oo

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
<?php
include('checkuser.php')
?>

<html>
<head>
<title>SHAKESPEARE</title>
<link rel="stylesheet" href="styli.css">
</head>

<?php
//Datenbankverbindung einfügen!
   include('datenbank.php');
//Variablen festlegen
   $pruefung $_POST['pruefung'];
   $datum $_POST['datum'];
   $pferd $_POST['pferd'];
   $ergebnis =  $_POST["ergebnis"];
//wenn eine der Variablen name, pass oder mail leer ist, dann [if]
   if( ($ergebnis=='') ) {
//Ausgabe der Fehlermeldung
      echo "<b>Error</b>
      Bitte gebe eine Platzierung ein!<br><br>
      <a href="javascript:%20history.back(-2)" target="_self">Zurück</a>";
//wenn alles richtig ist:
   } else {
//hier steht, was Eintrag ist und was damit gemacht werden soll. Welche Spalten sollen ausgefüllt werden? Und wo?
      $aendern "UPDATE `turnier` SET ergebnis = '$ergebnis' WHERE pferd = '$pferd' AND datum = '$datum' AND pruefung = 'pruefung'";
//hier wird entschieden, dass $aendern über die Datenbankverbindung eingetragen werden soll.
      $update mysql_query($aendern);
//Ausgabe der Erfolgsmeldung
      if($update==true) {
         echo "<b>Eintrag erfolgreich</b>
         Das Ergebnis wurde eingetragen.";
      } else {
         echo "Fehler!";
         include('annehmen.php');
      }
   }
//PHP schließen
?>


</html>


Oder hab ich schon wieder so einen dummen Leichtsinnsfehler gemacht? unglücklich


& eine frage am rande:
Wie schaffe ich es, dass ich etwas mit der POST-methode ohne formular übergebe? Das würde ich nämlich gerne statt der GET-methode hernehmen, vorallem bei den Prüfungen ... Und ich stoß grad nur auf die POST-methode wenn ich ein formular hernehme. Oder kann ich es irgendwie so machen, dass ich ein unsichtbares Formular mache oder so?
Remember
Ah, danke smile
Und ich such mich an den Satzseichen (;,} und so) dumm und dämlich xD

Hmm ... meinst du ,dass es funktioniert, wenn ich versteckte felder mache und dann den link (erfolg eintragen) als abschicken mache? Oder funzt des nich?
Stelo
Ich hab jetzt nicht alle Posts gelesen, aber ich glaube bevor du einfach losprogrammierst, solltest du dir mal ein kleines Konzept schreiben.
Irgend welchen Kram über ein verstecktes Formular zu übergeben kann es ja echt nicht sein.

Mach dir doch erst einmal Gedanken wie ein Turnier abläuft und wie entschieden wird, wer gewinnt.
Wenn z.B. der Gewinner per Zufall ausgewählt wird, kann man es ja so machen, dass das Mitglied auf die Seite des Pferdes muss (schon hast du die ID das Pferdes) um dann auf "TEILNEHMEN" zu klicken. Dann wählst du einfach einen Platz per random() aus, guckst, dass den noch ein anderes Pferd hast und trägst den ein.

Ohne Zufall ist es auch nicht viel schwerer. Also: Immer erst mal alles durchdenken bevor man programmiert. Algorithmen und Struktogramme sind dein Freund, auch wenn man "nur" einen vRh programmiert. ;-)


P.S.: BlackTear. hör auf meine PN zu ignorieren, ich brauch dich doch dringend. Augenzwinkern
Julia712
Japs, das klappt Augenzwinkern

Ich hätte an deiner Stelle jedem Turnier 'ne ID gegeben und dann einfach die TurnierId übergeben beim Platzierung eintragen. Dann hättest du da keinen Pferdenamen und nix weitergeben müssen...
Aber du warst ja noch beim Turniereintragen, ich war schon weiter Zunge raus
Remember
²Stelo
Oh, ich glaub da reden wir grad aneinander vorbei Augenzwinkern
Ich bin grad bei den angemeldeten Turnierreitern, die bei ihren Turnierpferden, die auf unsrem Hof stehen, ihre Erfolge von externen Turnieren eintragen können Augenzwinkern Und du bist bei Turnieren, die ich ausrichte (glaube ich zumindest deinem Post entnommen zu haben großes Grinsen ). ;D


²Julia
Dann probier ich das mal so aus und schrei dann wieder laut HILFE wenns nich klappt großes Grinsen großes Grinsen
Stimmt ... das wäre irgendwie einfacher gewesen xD Aber wieso einfach, wenns auch schwer geht? großes Grinsen großes Grinsen großes Grinsen
Aber vielleicht änder ich das auch noch mal ... weil das wär ja eigentlich viel schlauer ^^
Stelo
Zitat:
Original von Cousquer
²Stelo
Oh, ich glaub da reden wir grad aneinander vorbei Augenzwinkern
Ich bin grad bei den angemeldeten Turnierreitern, die bei ihren Turnierpferden, die auf unsrem Hof stehen, ihre Erfolge von externen Turnieren eintragen können Augenzwinkern Und du bist bei Turnieren, die ich ausrichte (glaube ich zumindest deinem Post entnommen zu haben großes Grinsen ). ;D


²Julia
Dann probier ich das mal so aus und schrei dann wieder laut HILFE wenns nich klappt großes Grinsen großes Grinsen
Stimmt ... das wäre irgendwie einfacher gewesen xD Aber wieso einfach, wenns auch schwer geht? großes Grinsen großes Grinsen großes Grinsen
Aber vielleicht änder ich das auch noch mal ... weil das wär ja eigentlich viel schlauer ^^

Uups. Ach ich hab einfach zu wenig am Hut mit vRhs um da immer durchzublicken. Tut mir Leid. Aber du kannst es dir ja merken, wenn dus mal brauchst. ;-)
Remember
Oh ja. Brauchen werd ichs auf jeden Fall noch, deshalb kommt mir das sowieso sehr gelegen Augenzwinkern Ich bin einfach ein sehr ... unkoordinierter Mensch und deshalb sind solche Tipps für mich immer perfekt. smile