Warum kostenlos registrieren?

Nur als registriertes Mitglied hast Du vollen Zugriff auf alle Funktionen unserer Website. So kannst Du eigene Fragen stellen und hast die volle Übersicht über neue interessante Themen im Forum.
Jetzt kostenlos registrieren.

Login


T_String

Fragen oder Probleme mit HTML, PHP oder CSS?

T_String

Beitragvon nicky777 am 07.06.2006, 17:58

Hi Leute,
Mein Mysql Programm soll eine ziemilch einfache Funktion erfüllen. Wörter aus einer Mysqltabelle anzeigen und es möglich machen diese auch zu löschen.
Als Error bekomme ich:

Parse error: parse error, unexpected T_STRING in C:\Programme\xampp\htdocs\badwordfilter.php on line 89


Line 89 ist bei mir genau die folgende Zeile:

case: "Löschen"...


Code: Alles auswählen
<?php
  function connect()
  {
    $conn = mysql_connect("localhost","root","");
    if(!$conn)
    {
       mysql_error();
    }
    $select = mysql_select_db("gästebuch");
    if(!$select)
    {
       mysql_error();
    }
    return $conn;
  }

  function anzeigen()
  {
    $str_sql = "SELECT * FROM badwords";
    $result = mysql_query($str_sql);
    if(!$result)
    {
       mysql_error();
    }
   echo "<form action=\"badwordfilter.php\" method=\"POST\">";
   echo "<table>";

    while($arr_row = mysql_fetch_array($result))
    {
        echo "<tr></tr><td>$arr_row[badwords]</td><td><input type=\"Checkbox\" name=\"badword_löschen[]\" value=\"$arr_row[ID]\"></td></tr>";
    }

   echo "<tr><td><input type=\"Submit\" name=\"button\" value=\"Löschen\"></input></td></tr>";
   echo "</table></form>";
  }

  function badword_löschen($badword_löschen)
  {
    foreach($badword_löschen as $key)
    {
        $str_sql="DELETE FROM badwords WHERE 'ID' = '$key';
        $result = mysql_query($str_sql);
    }
  }

$conn = connect();
anzeigen();
   switch($button)
   {

       case "Löschen":
           badwords_löschen($badword_löschen);
       break;

       default:

       break;
   }

mysql_close($conn);
?>


Ich finde den Fehler einfach nicht :(

cya
David
nicky777
 
Beiträge: 495
Registriert: 02.12.2004, 17:37
Wohnort: Siegen


Beitragvon dragonl am 08.06.2006, 01:43

hallo nicky777

es sind meistens die kleinen dinge die die größte aufmerksamkeit erforden :D

Code: Alles auswählen
$str_sql="DELETE FROM badwords WHERE 'ID' = '$key';

du hast einfach nur ein par anführungszeichen vergessen (") :P
folgendes sollte den fehler lösen:
Code: Alles auswählen
$str_sql="DELETE FROM badwords WHERE 'ID' = '$key'";


öhm... öäüß und der gleichen (sonderzeichen) sind HÖCHST unpassende zeichen um sie für funktionen, variabeln, arrays u.s.w zu verwenden ! benutze dort lieber oe ue ss !
ambesten nur a-z und oder A-Z und den unterstrich (_), denkedaran das groß und kleinschreibung unterschieden wird

Warum sacht PHP zeile 89 und nicht 79 ?
in zeile 89 wird der case aufgerufen welche die funktion aufruft welche den fehler produziert.
kann es leider nicht genauer beschreiben, aber das hat was mir den jeweiligen rückgabewerten (die returns) zutun.

MfG
dragonl
dragonl
 
Beiträge: 373
Registriert: 14.09.2004, 14:10
Wohnort: Bremen

Beitragvon nicky777 am 08.06.2006, 10:07

Danke,
Da ich momentan in der Schule bin werde ich erst zu Hause ausprobieren können ob das auch funktioniert- aber ich denke schon, dass du recht hast.
Die Zeilen sind im Code selbstverständlich anders, weil das nur ein kleiner Auschnitt ist.
Drum herum war noch jede Menge von wegen CSS etc was eh keinen interessiert hätte.
Besten Dank :)!!!
cya
David

PS: :) :) :) :) :)
nicky777
 
Beiträge: 495
Registriert: 02.12.2004, 17:37
Wohnort: Siegen

Beitragvon nicky777 am 08.06.2006, 15:25

Ich habe nun alle ä's etc geändert und auch deinen Fehler behoben.- trotzdem "ist das object nicht gefunden", wie er mir auf buttondruck sagt :(

Code: Alles auswählen
<?php

   switch($button)
   {
       case "Loeschen":
           badwords_loeschen($badword_loeschen);
       break;

       default:

       break;
   }

  function connect()
  {
    $conn = mysql_connect("localhost","root","");
    if(!$conn)
    {
       mysql_error();
    }
    $select = mysql_select_db("gästebuch");
    if(!$select)
    {
       mysql_error();
    }
    return $conn;
  }

  function anzeigen()
  {
    $str_sql = "SELECT * FROM badwords";
    $result = mysql_query($str_sql);
    if(!$result)
    {
       mysql_error();
    }
   echo "<form action=\"badwordfilter.php method=\"POST\">";
   echo "<table>";

    while($arr_row = mysql_fetch_array($result))
    {
        echo "<tr></tr><td>$arr_row[badwords]</td><td><input type=\"Checkbox\" name=\"badword_loeschen[]\" value=\"$arr_row[ID]\"></td></tr>";
    }

   echo "<tr><td><input type=\"Submit\" name=\"button\" value=\"Loeschen\"></input></td></tr>";
   echo "</table></form>";
  }

  function badword_loeschen($badword_loeschen)
  {
    foreach($badword_loeschen as $key)
    {
        $str_sql="DELETE FROM badwords WHERE 'ID' = '$key'";
        $result = mysql_query($str_sql);
    }

  }

$conn = connect();
anzeigen();
mysql_close($conn);
?>
nicky777
 
Beiträge: 495
Registriert: 02.12.2004, 17:37
Wohnort: Siegen

Beitragvon dragonl am 08.06.2006, 15:44

Habe deinen Code mal kopiert und bei mir in den Editor gehaun (wegen Syntaxheighlighting) in Zeile 64 hast du folgendes Stehen:
Code: Alles auswählen
echo "<tr><td>$arr_row[id]</td><td>$arr_row[badword]</td><td><input type=\"Checkbox\" name=\"arr_loeschen[]\" value=\"$arr_row[id]\"></input></td></tr><input type="Submit" name="button" value="Einfuegen"></td></tr>

Bei dem letztem <input> hast du immer das Escapezeichen (\) bei den Anführungszeichen vergessen ;)

Mehr habe ich jetzt nicht gefunden, ausser vieleicht...
in Zeile 91-93 hast du folgendes stehen:
Code: Alles auswählen
         if(!$result)mysql_error();
         else
         echo"Eintrag fuer $name erfolgt!";

Funktioniert das so ?
Ich nutze eigendlich immer die geschweiften Klammern:
if(bedingung){
anweisung wenn
}
else{ anweisung wenn nicht }
Ich weiss zwar das es unter bestimmten kriterien auch ohne den geschweiften Klammen geht, aber bei dem von dir verwendetem Codsnippet bin ich mir irgenwie nicht sicher.
Naja, war hauptsächlich nur ne frage für mich :)

MfG
Dragonl :D
dragonl
 
Beiträge: 373
Registriert: 14.09.2004, 14:10
Wohnort: Bremen

Beitragvon nicky777 am 08.06.2006, 16:08

Ich hab auch langsam das Gefühl, dass mein Fehler nix mehr mit dem code zutun hat... "Object kann nicht angezeigt werden"-das muss irgendwas anderes sein...
nicky777
 
Beiträge: 495
Registriert: 02.12.2004, 17:37
Wohnort: Siegen

Beitragvon dragonl am 08.06.2006, 16:32

Sorry nicky777, aber ich weiss jetzt auch nicht mehr weiter !? :shock:

Tut mir leid :?

Nun den, das leben geht weiter !
Fang doch einfach noch mal von vorne an.
Wie man in den einzelnen Codeausschnitten ja sehen kann fand mitlerweile ein Struckturwechstel stat.
Wenn du nun also noch mal von vorne anfängst, odnest du die einzelnen funktionen schon mal geordneter an, und vieleicht löst sich daduch auch dein Problem, wo auch immer es liegen mag ;)
Muss mal schaun was du machst ;)

Meld dich mal wen du es hin gekriegt hast oder doch nicht weiter kommst.

MfG
Dragonl
dragonl
 
Beiträge: 373
Registriert: 14.09.2004, 14:10
Wohnort: Bremen

Beitragvon dragonl am 08.06.2006, 16:59

Man was bin ich heute gut :D 8)

Ich habe doch noch was gefunden !
Hätte ich den neuen Code man auch wieder in meinen Editor kopiert !

Pass auf !
Du hast einen Funktion die "connect" heisst.
weiter unten ruft du diese Funktion auf:
$conn = connect();

"connect()" ist aber eine PHP-Funktion ! :shock:
Daher rührt dein "Objekt nicht gefunden"-Fehler wohl.
Ich konnte aber nix zu connect() finden, weder in meinen Büchern, noch hier http://de2.php.net/ ?
Soll aber was mit Socket-Verbindungen zutun haben.

Nunden, benenne deine Funktion mal um und probier es dann noch mal.

Womit editierst du deine PHP-Datein ? *mal_neugierig_nachfrag*
Ich benutze mitlerweile anstelle des Dreamweavers den Weaverslave4 (der is nämlich for FREE *g*)

MfG
Dragonl

PS. Sorry wegen dem doppel Post
dragonl
 
Beiträge: 373
Registriert: 14.09.2004, 14:10
Wohnort: Bremen

Beitragvon nicky777 am 08.06.2006, 18:33

Ich benutze den Phase 5 HTML Editor. Finde den ziemlich geil 8-) Und freeware ist es auch!!!
Habe grad mal meine funktion umbenannt aber das Object ist immer noch nicht gefunden... es ist echt zum verrückt werden damit...
Aber das "Object " ist auch dann nicht gefunden, wenn da nur steht:

Code: Alles auswählen
<?php
  echo "<form action=\"php.php method=\"POST\">";
  echo "<input type=\"Submit\" name=\"button\" value=\"Löschen\"></form>";
?>



Komisch...
cya
David
nicky777
 
Beiträge: 495
Registriert: 02.12.2004, 17:37
Wohnort: Siegen

Beitragvon nicky777 am 08.06.2006, 18:37

:D :D :D :D :D :D

ANFÜRHUNGSSTRICHE!
UND ICH SUCH STUNDEN DANACH!!!!

action=\"php.php"
Zuletzt geändert von nicky777 am 08.06.2006, 18:47, insgesamt 1-mal geändert.
nicky777
 
Beiträge: 495
Registriert: 02.12.2004, 17:37
Wohnort: Siegen

Beitragvon nicky777 am 08.06.2006, 18:45

Was jetzt nicht klappt ist, dass er überhaupt versteht, dass der Button gedrückt wurde.
Normalerweise wird doch der name des buttons (hier "button") zur Variable und kann über $button angesprochen werden.
Die Variable nimmt dann direkt das value an.
Komischerweise reagiert er auf meine If-abfrage unten nicht :(

Code: Alles auswählen
<?php



  function sqlconnect()
  {
    $conn = mysql_connect("localhost","root","");
    if(!$conn)
    {
       mysql_error();
    }
    $select = mysql_select_db("gästebuch");
    if(!$select)
    {
       mysql_error();
    }
    return $conn;
  }

  function anzeigen()
  {
    $str_sql = "SELECT * FROM badwords";
    $result = mysql_query($str_sql);
    if(!$result)
    {
       mysql_error();
    }
   echo "<form action=\"badwordfilter.php\" method=\"POST\"><table>";

    while($arr_row = mysql_fetch_array($result))
    {
        echo "<td>$arr_row[mist]</td><td><input type=\"Checkbox\" name=\"badword_loeschen[]\" value=\"$arr_row[ID]\"></td></tr>";
    }

   echo "<tr><td><input type=\"Submit\" name=\"button\" value=\"Löschen\"></td></tr>";
   echo "</table></form>";


  }

  function badword_loeschen($badword_loeschen)
  {
    foreach($badword_loeschen as $key)
    {
        $str_sql="DELETE FROM badwords WHERE 'ID' = '$key'";
        $result = mysql_query($str_sql);
    }

  }

  if($_GET['button']=="Löschen")
     {
         echo "Löschen wurde gedrückt";
     }

$conn = sqlconnect();
anzeigen();
mysql_close($conn);
?>
nicky777
 
Beiträge: 495
Registriert: 02.12.2004, 17:37
Wohnort: Siegen

Beitragvon dragonl am 08.06.2006, 19:01

Guck mal nach dem drücken des LÖschen :twisted: Buttens in die Adresszeile deines Browser, da siehste jetzt was ich eben mit den ungünstigen zeichen meinte !
Dein schönes "ö" ist zu einem "%F6" geworden.

Das das IF unten nicht funktioniert ist also falsch, es funktioniert !
Den L%F6schen != Löschen gell ;)

MfG
Dragonl

EDIT:
Öhm...
Normalerweise wird doch der name des buttons (hier "button") zur Variable und kann über $button angesprochen werden.

NÖÖÖ !
Das kommt auf die Servereinstellunge an !
Wenn in der PHP konfiguration "register_globals=On" ist, hast du recht.
Wen "register_global=Off" ist, dann NICHT !
Um dem vorzubeugen deswegen auf nichtfunktionierende Scripte zustoßen, einfach $_GET['var_name'] und $_POST['var_name'] verwender fedisch, Punkt aus schluss und vorbei. :)

(genaus so wie mit den sonderzeichen in variable namen u.s.w pp)
dragonl
 
Beiträge: 373
Registriert: 14.09.2004, 14:10
Wohnort: Bremen

Beitragvon nicky777 am 08.06.2006, 19:41

Irgendwie steht sobald ich auf den Button klicke garnichts oben in meiner Adresszeile mehr- früher wurden die Variablen immer darüber übergeben.
Ists so, dass die registerglobals angeben ob in die Adresszeile geschrieben werden kann oder nicht?
Wenn ja: Wo sind dann die Variablen gespeichert?

Das mit get hab ich schon in mein Programm eingebunden.
Das "ö" in ein "oe" umzuwandeln bringt leider nichts :(
nicky777
 
Beiträge: 495
Registriert: 02.12.2004, 17:37
Wohnort: Siegen

Beitragvon nicky777 am 08.06.2006, 19:53

Ein einfaches Beispiel meiner Frage wäre folgendes:

Code: Alles auswählen
<?php

     if($_GET['button']=="ja")
     {
         echo "Der eine Button wurde gedrückt";
     }

     if($_GET['button']=="nein")
     {
         echo "Der andere Button wurde gedrückt";
     }

     if($_GET['gedrueckt']=="ja")
     {
        echo "JETZT WURDE EINER DER BEIDEN BUTTONS GEDRÜCKT";
     }
?>

<form action="button.php?gedrueckt=ja" method="POST">
  <input type="Submit" name="button" value="nein">
  <input type="submit" name="button" value="ja">
</form>



Ich würde gerne, dass er auch schreibt WELCHER der beiden Buttons jetzt gedrückt wurde.
Über die Variable, die im Formular übergeben wird rafft er ja nur, dass irgendwas aus dem Formular gedrückt wurde.
Durch den Wert der Variable $button und welchen er hat rafft er auch welcher gedrückt wurde.
Kannst du mir meinen Code vielleicht so umschreiben, dass es mit deaktivierten wie aktivierten register globals geht?
Wäre echt nett
cya
David :) :) :) :)
nicky777
 
Beiträge: 495
Registriert: 02.12.2004, 17:37
Wohnort: Siegen

Beitragvon dragonl am 08.06.2006, 20:01

Also wen das so weiter geht, halten die anderren uns noch für bekloppt !
Immer jeden fehler einzeld rauszusuchen und zu analysieren, sowas auch !?

nicky777
>>Irgendwie steht sobald ich auf den Button klicke garnichts oben in
>>meiner Adresszeile mehr- früher wurden die Variablen immer
>>darüber übergeben.

Auch dafür habe ich ne lösung !
Guckst du:
Du hast volgendes im Script:
==echo "<form action=\"badwordfilter.php\" method=\"POST\"><table>";

Da steht methode="POST", das bedeutet, das die daten auf eine anderre Methode übertragen werden.
Wo der genaue Unterschiede ist weiss ich ehrlichgesagt auch nicht, ABER bei GET werden sie in der Adresszeile übertragen und bei POST nicht.
Wird GET verwendet, sind die Variablen mit $_GET['var_name'] abrufbar,
wird POST verwendet, sind die Variablen mit $_POST['var_name'] abrufbar.

So, damit dürfte auch klar sein, das "register_globals" nicht für die erwähnte übertragunsart verantwotlich ist.

"register_global" ist in der PHP.ini-Datei zufinden und kan in dieser auch geändert werden.
!! SOLLTE ABER IM BESSTEM FALL AUF OFF STEHEN !!

Das "ö" in ein "oe" umwandel bringt sehr wohl was ! Habe ich ja eben erklärt warum !
Es brachte nur in diesem Moment nix, weil ein weitere Fehler vorhanden war.

MfG
Dragonl :D

PS. Hoffe das wars jetzt, irgendwann müssen doch alle Fehler raus sein ! :shock: *fg* oder etwa nicht ?
dragonl
 
Beiträge: 373
Registriert: 14.09.2004, 14:10
Wohnort: Bremen

Nächste

Zurück zu HTML, PHP & Co.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste