mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 29.03.2024 13:52 Benutzername: Passwort: Auto-Login

Thema: PHP Fehler , keine Ahnung warum vom 12.08.2004


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> PHP Fehler , keine Ahnung warum
Seite: 1, 2  Weiter
Autor Nachricht
addy
Threadersteller

Dabei seit: 22.01.2003
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 12.08.2004 07:40
Titel

PHP Fehler , keine Ahnung warum

Antworten mit Zitat Zum Seitenanfang

also nach dem hier jemand mal das Buch "PHP und Mysql" von Kevin Yank empfohlen hatte, habe ich mir das geholt und probiere ein wenig rum.
Zum Problem: Da wird nen Witzedatenbank erstellt und damit gearbeitet. jetzt lasse ich mir auf einer Seite die Witze anzeigen, darunter eine Textarea wo man einen neuen Witz eingeben kann auf abschicken clickt und der steht dann auch mit drin. Nun wollte ich in Eigenregie nen Link hinter jeden Witz setzen wo man Ihn löschen kann und da fingen die Probleme an:

1.Er zeigt die TExtarea einfach nicht mehr an???????????
2.Klicke ich hinter einem Witz auf den Link zum löschen, wird er nicht gelöscht, klicke ich das 2te mal drauf wird er gelöscht?????????????

Sind also keine klassischen PHP Fehlermeldungen, sondern Dinge wo ich nicht weiß warum das so ist, hier mal der Code:
Code:

<html>
<head>
</head>
<body>

<?php

//Verbindung zum Server
$conn = @mysql_connect("localhost","root","");

if(!$conn) {
   
   echo "Zur Zeit keine Verbindung";
   exit();
}

//DB auswählen
if(! @mysql_select_db("jokes") ) {
   
   echo "Auswahl der DB zur Zeit nicht möglich";
   exit();
}

?>

<p>Hier der Inhalt der DB</p>

<?php

//abfragen
$result = @mysql_query("SELECT id,joketext,jokedate FROM jokes");

if(!$result){

   echo "<p>Fehler beim ausführen der Abfrage:".mysql_error()."</p>";
   exit();
}

//anzeigen lassen
while( $row = mysql_fetch_array($result) ){
   
   echo "<p>";
   echo $row["id"]." | ";
   echo $row["joketext"]." | ";
   echo $row["jokedate"]." |    ";
   echo "<a href=\"".$PHP_SELF."?act=delete&id=".$row["id"]."\">Witz löschen</a>";
   echo "</p>";
}


//neuen Witz speichern
$submitjoke = $_GET["submitjoke"];

if($submitjoke == "speichern"){
   
   $joketext = $_GET["joketext"];
   
   $sql = "INSERT INTO jokes (joketext, jokedate) VALUES ('$joketext','2004-03-02' )";

   //mysql_query($sql);
   
   if ( @mysql_query($sql) ) {
   
      echo "<p> Ihr Witz wurde eingefügt.</p>";
   }
   else{
   
      echo "<p>Es ist ein Fehler aufgetreten".mysql_error()."</p>";
   }

}

//Witz löschen
if(isset($_GET["act"])) {
   
   $id = $_GET["id"];
   $sql_delete = "DELETE FROM jokes WHERE id = '$id' ";
   
   @mysql_query($sql_delete);
   exit();
}


?>

<form action="<? echo $PHP_SELF ?>" method="GET">
<p>Geben Sie Ihren Witz ein:<br />

<textarea name="joketext" rows="10" cols="40" wrap>
</textarea><br />

<input type="submit" name="submitjoke" value="speichern" />

</p>
</form>

</body>
</html>


weiß einer vieleicht warum das so ist? Thanx schonmal


Zuletzt bearbeitet von addy am Do 12.08.2004 07:44, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Account gelöscht


Ort: -
Alter: -
Verfasst Do 12.08.2004 08:37
Titel

Antworten mit Zitat Zum Seitenanfang

du steigst doch nach dem löschen mit exit(); aus, daher wird der rest des skripts natürlich nicht mehr aufgebaut...
 
Anzeige
Anzeige
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht: Männlich
Verfasst Do 12.08.2004 09:45
Titel

Antworten mit Zitat Zum Seitenanfang

ich würde in deinem inputfeld zum joke eintragen ein hidden field mit angeben, und das eintrage script ganz an den anfang setzen.

dann würde ich das selbe auch mit dem delete script machen, ganz an den anfang setzen.

das ganze könnte dann in etwa so aussehen:

Code:

<?php
//Verbindung zum Server
$conn = @mysql_connect("localhost","root","");
if(!$conn) {
   echo "Zur Zeit keine Verbindung";
   exit();
}

//DB auswählen
if(! @mysql_select_db("jokes") ) {
   echo "Auswahl der DB zur Zeit nicht möglich";
   exit();
}

// hier überpfüfst du, ob das hiddenfield übertragen wird
// wenn ja, dann füht er die untenstehenden zeilen aus
if (! empty($_POST["add"]))
{
      //neuen Witz speichern
      $datum = date('Y-m-d');
      $sql = "INSERT INTO jokes (joketext, jokedate) VALUES ('". $_POST["joketext"] ."','". $datum ."' )";
   
      // wenn ok mit dem eintragen, dann soll er zur der seite zurückkehren
      // und eine ok msg ausgeben. (am ende ist ein switch)
      if ( @mysql_query($sql) )
      {
         header("Location: joke.php?msg=addok");
         exit;
      }
         else
         {
            die ("<p>Es ist ein Fehler aufgetreten<br><br>". mysql_error() ."</p>");
         }
}
////////////////////////////////////////////////////////////////////////////

// hier wird überprüft, ob eine get variable mit übergeben wurde.
if (isset ($_GET["del"]))
{
   //Witz löschen
   $sql = "DELETE FROM jokes WHERE id = '". $_GET["del"] ."'";

      // das selbe wie beim eintragen
      if ( @mysql_query($sql))
      {
         header("Location: joke.php?msg=delok");
         exit;
      }
         else
         {
            die ("<p>Es ist ein Fehler aufgetreten<br><br>". mysql_error() ."</p>");
         }
}
////////////////////////////////////////////////////////////////////////////
?>
<html>
<head>
</head>
<body>
<p>Hier der Inhalt der DB</p>
<?php
//abfragen
$result = @mysql_query("SELECT id,joketext,jokedate FROM jokes");
if(!$result)
{
   echo "<p>Fehler beim ausführen der Abfrage:".mysql_error()."</p>";
   exit();
}

//anzeigen lassen
while( $row = mysql_fetch_array($result) ){
   echo "<p>";
   echo $row["id"]." | ";
   echo $row["joketext"]." | ";
   echo $row["jokedate"]." |    ";
   echo "<a href=\"". $PHP_SELF ."?del=".$row["id"]."\">Witz löschen</a>";
   echo "</p>";
}
?>
<form action="<?= $PHP_SELF ?>" method="POST">
<p>Geben Sie Ihren Witz ein:<br />
<textarea name="joketext" rows="10" cols="40" wrap>
</textarea><br />
<input type="submit" name="submitjoke" value="speichern" />
<input name="add" type="hidden" id="add" value="1">
</p>
</form>
</body>
</html>


hab deinen source was angepasst. zb formular per post übergeben usw.

einfach mal durchlesen, ist nicht getestet, sollte aber so funktionieren.

grüße.

volker

ps: wäre nett wenn du schreiben würdest ob du damit klar kommst, und obs funktioniert.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
addy
Threadersteller

Dabei seit: 22.01.2003
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 12.08.2004 10:00
Titel

Antworten mit Zitat Zum Seitenanfang

@schinken
jo ohne exit, zeigt er die textarea wieder mit an, ABER er löscht den eintrag nicht wenn ich beim ersten mal anklicke?????????????Da noch ne Idee???

@primus
besten dank erstmal, werd heut abend mich mal darum kümmern, jetzt ist grad keine Zeit großartig, trotzdem danke
  View user's profile Private Nachricht senden
dastef

Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 12.08.2004 10:05
Titel

Antworten mit Zitat Zum Seitenanfang

nimm mal dein dussliges @ vor dem mysql_query() weg und
lass dir evtl auftrentende fehlermeldungen mit mysql_error()
ausgeben.


Zuletzt bearbeitet von dastef am Do 12.08.2004 10:05, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Account gelöscht


Ort: -
Alter: -
Verfasst Do 12.08.2004 11:07
Titel

Antworten mit Zitat Zum Seitenanfang

Das liegt an der Reihenfolge der Abarbeitung, die denkbar schaise gewählt ist: Du fügst einen Witz ein, aber erst nach eine Aktualisierung erscheint er => nach der Aktualisierung wurde der Witz aber schon wieder erneut eingefügt. Löschst du nun, so wird er zwar gelöscht, die Anzeige aber WIEDER erst nach erneuter Aktualisierung neu aufgebaut.

Tolle Wurst. ENTWEDER: Du verwendest zum löschen/anlegen/ansehen verschiedenen Seiten, ODER du fängst zusätzliche Einfügungen durch Aktualisierungen durch eine Sessionvariable ab (Bspw.: if (!$_SESSION["gesendet"]) { fügEin(); } else { lassetsein(); }), ODER, noch einfacher: du vewendest die Funktion header("Location:".$PHP_SELF);, um sofort nach eine Lösch- bzw. Einfügeoperation auf dieselbe oder eine neue Seite zu linken, die sofort wieder die Anzeige aufbaut.

Ein Mittelding (der aber immer noch nicht das Problem der F5-Taste löst) ist der, die Einfügeoperationen zuerst im Script zu starten, und DANN erst die Daten auslesen lassen.
 
addy
Threadersteller

Dabei seit: 22.01.2003
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 12.08.2004 13:49
Titel

Antworten mit Zitat Zum Seitenanfang

thanx erstmal werd mich heut abend mal ransetzen
  View user's profile Private Nachricht senden
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht: Männlich
Verfasst Do 12.08.2004 14:35
Titel

Antworten mit Zitat Zum Seitenanfang

XSchinkenX hat geschrieben:
Das liegt an der Reihenfolge der Abarbeitung, die denkbar schaise gewählt ist: Du fügst einen Witz ein, aber erst nach eine Aktualisierung erscheint er => nach der Aktualisierung wurde der Witz aber schon wieder erneut eingefügt. Löschst du nun, so wird er zwar gelöscht, die Anzeige aber WIEDER erst nach erneuter Aktualisierung neu aufgebaut.

Tolle Wurst. ENTWEDER: Du verwendest zum löschen/anlegen/ansehen verschiedenen Seiten, ODER du fängst zusätzliche Einfügungen durch Aktualisierungen durch eine Sessionvariable ab (Bspw.: if (!$_SESSION["gesendet"]) { fügEin(); } else { lassetsein(); }), ODER, noch einfacher: du vewendest die Funktion header("Location:".$PHP_SELF);, um sofort nach eine Lösch- bzw. Einfügeoperation auf dieselbe oder eine neue Seite zu linken, die sofort wieder die Anzeige aufbaut.

Ein Mittelding (der aber immer noch nicht das Problem der F5-Taste löst) ist der, die Einfügeoperationen zuerst im Script zu starten, und DANN erst die Daten auslesen lassen.


was meinst was mein scriptbeispeil was ich ihm da zusammengebastelt habe macht ...

es schickt sich an sich selbst, fragt ab ob gewissen vars gesetzt sind, wenn del var gesetzt, dann löschen, anschliessend header ausführen um zur seite zurück zu gehen, wenn add gesetzt ist, adden um mit header zur seite zurück zu kehren.

grüße
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen MySQL Fehler und keine Ahnung warum [solved]
Wer hat Ahnung von CSS?
Wer hat Ahnung von 3DMAX 6 ???
Keine Ahnung vom Web - was tun?
hilfe - einbildstereogramme. wer hat Ahnung???
Hat jemand Ahnung von Tunnelblick - OpenVPN
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.