Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 20 von 41

Thema: PHP und MySQL

  1. #1

    PHP und MySQL

    Also ich versuche ein einfaches Newsscript zu schreiben, aber es gelingt mir nicht so wie es soll. Bis jetzt habe ich immer nur irgendwelche Script abgeschrieben, dieses habe ich nun koplett ohne Buch oder sonstige Hilfsmittel geschrieben.

    Die Datenbank heißt vam und die Tabelle sieht so aus:
    CREATE TABLE news (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Schreiber VARCHAR(35),
    Titel VARCHAR(80),
    Datum VARCHAR(30),
    Eintrag TEXT
    )


    Vorweg die Datei zugriff.inc.php sieht so aus
    PHP-Code:
    <?php
     
    @mysql_connect("localhost","root","") or die("Verbindung zu MySQL gescheitert!");
     @
    mysql_select_db("vam") or die("Datenbankzugriff gescheitert");
    ?>
    und die Datei admin.inc.php so
    PHP-Code:
    <?php
     
    if ($_GET["mays"]=="abc" || isset($_GET["fas545fsad4sf"])) {
      echo 
    "<h3>Administratorenbereich</h3>";
      include(
    "zugriff.inc.php");
      
    $sql1="SELECT * FROM news";
      
    $result=mysql_query($sql1);
      while (
    $row=mysql_fetch_assoc($result)) {
       echo 
    "[ <a href='$_SERVER[PHP_SERVER]?fas545fsad4sf=$row[id]'>" "Eintrag löschen</a> ] ";
       foreach (
    $row as $name => $key) {
        echo 
    "$key ";
       }
       echo 
    "<br><br>";
      }
     }
     if (isset(
    $_GET["fas545fsad4sf"])) {
      
    $aql1="DELET FROM news WHERE id='$_GET[fas545fsad4sf]'";
      if (
    mysql_query($sql1)) {
       echo 
    "<p>Datensatz gelöscht -- bitte Reload wählen!</p>";
       echo 
    "<p><a href='$_SERVER[PHP_SELF]'>Ausloggen</a></p>";
      }
     }
    ?>

    nun die index.php datei
    PHP-Code:
     <body>
      <?php
      
    include("admin.inc.php");
     
    ?>
     News<br>
         <?php
         
    include("zugriff.inc.php");
         
    $sql="SELECT * FROM news ORDER BY id DESC LIMIT 0, 4";
         
    $result=mysql_query($sql);
         while (
    $row=mysql_fetch_assoc($result)) {
          echo 
    "<hr><p><strong>" $row["Titel"] . "</strong><br><br>" nl2br($row["Eintrag"]) . "<br>Geschrieben von " $row["Schreiber"] . " am " $row["Datum"] . "</p><hr><br>";
         }
         
    mysql_close();
        
    ?>
    </body>
    nun die News werden ausgegeben, aber wenn ich über ...index.php?mays=abc reingehe und dann irgend einen Eintrag löschen will passiert nichts, eigendlich sollte noch dabei kommen, so was wo man halt News reinschreiben kann, aber erst mahl soll das andere gehen.

    Ich weiß nicht ob es jetzt nur irgendwein dummer fehler ist oder ob ich irgendwie unlogisch denke.

  2. #2
    Ist das oben wirklich dein Code kopiert?
    Weil du hast DELET geschrieben, aber der Befehl zum löschen heisst DELETE (mit e am ende )

  3. #3
    ich hatte es Falsch geschrieben, aber es geht trotzdem nicht.

  4. #4
    Alsoich habe mir das mal angesehn und glaube (habe es nett nachgeprüfft)

    Das es an der index.php liegt undzwar schreibst du :

    Zitat Zitat
    <body>
    <?php
    include("admin.inc.php");
    ?>
    News<br>
    <?php
    include("zugriff.inc.php");
    $sql="SELECT * FROM news ORDER BY id DESC LIMIT 0, 4";
    $result=mysql_query($sql);
    while ($row=mysql_fetch_assoc($result)) {
    echo "<hr><p><strong>" . $row["Titel"] . "</strong><br><br>" . nl2br($row["Eintrag"]) . "<br>Geschrieben von " . $row["Schreiber"] . " am " . $row["Datum"] . "</p><hr><br>";
    }
    mysql_close();
    ?>
    </body>
    Ich bin jetzt kien echte Profi ich bin nur ein anfänger aber meineswissen muss du da
    " . $row['Titel'] . "

    schreiben.kann mich irren !

    Edit: und der fehler beim löschen ist woll dieser ^^

    Zitat Zitat
    if (isset($_GET["fas545fsad4sf"])) {
    $aql1="DELET FROM news WHERE id='$_GET[fas545fsad4sf]'";
    if (mysql_query($sql1)) {
    echo "<p>Datensatz gelöscht -- bitte Reload wählen!</p>";
    echo "<p><a href='$_SERVER[PHP_SELF]'>Ausloggen</a></p>";
    }
    }
    ?>
    schreib mal if (@mysql_query($sql1)) {

  5. #5
    Zitat Zitat
    Ich bin jetzt kien echte Profi ich bin nur ein anfänger aber meineswissen muss du da
    " . $row['Titel'] . "
    warum das den es wird doch nichts verschachtelt. Es ist da egal ob ich ' oder " setze.


    Zitat Zitat
    schreib mal if (@mysql_query($sql1)) {
    das @ benutzt man doch um einen Fehler oder so was zu unterdrücken oder?, also warum soll man das dann da setzten? Habe es mahl gemacht es ändert sich nichts, es wird nichts gelöcht.

  6. #6
    PHP-Code:
    <?php
    if ($_GET["mays"]=="abc" || isset($_GET["fas545fsad4sf"])) {
      echo 
    '<h3>Administratorenbereich</h3>';
      include(
    "zugriff.inc.php");
      
    $sql1="SELECT * FROM news";
      
    $result=mysql_query($sql1);
      while (
    $row=mysql_fetch_assoc($result)) {
       echo 
    '[ <a href="$_SERVER["PHP_SELF"]?fas545fsad4sf=$row[id]">" . "Eintrag löschen</a> ] ';
       foreach (
    $row as $name => $key) {
        echo 
    "$key ";
       }
       echo 
    '<br><br>';
      }
    }
    if (isset(
    $_GET["fas545fsad4sf"])) {
      
    $aql1="DELETE FROM news WHERE id='$_GET[fas545fsad4sf]'";
      if (
    mysql_query($sql1)) {
       echo 
    '<p>Datensatz gelöscht -- bitte Reload wählen!</p>';
       echo 
    '<p><a href="$_SERVER["PHP_SELF"]">Ausloggen</a></p>';
      }
    }
    ?>
    So müsste das eigentlich klappen, kann es dir aber nicht garantieren.
    Du hast $_SERVER[PHP_SERVER] benutzt, sollte wohl PHP_SELF heissen

  7. #7
    [OT]
    @dadie
    Doppelte Anführungszeichen (") und einfache (') gleichen sich bis auf eine einzige Ausnahme: Bei doppelten werden Variablen und escapte Zeichen ersetzt, bei einfachen nicht!
    PHP-Code:
    <?php
    $var 
    'Text';
    echo 
    "Ich bin ein $var\r\n"// gibt aus "Ich bin ein Text" mit einem Zeilenumbruch am Ende
    echo 'Ich bin ein $var\r\n'// gibt aus "Ich bin ein $var\r\n" ohne Zeilenumbruch am Ende
    ?>
    Und das @-Zeichen dient AFAIK nur dazu, Fehlerausgaben bei einer Funktion zu unterbinden, oder? Demnach würde das nichts ändern!
    [/OT]

    @Topic: Werd mir den Code später durchlesen, hab jetzt nicht sehr viel Zeit!

  8. #8
    Ersetze in deinen SQL_Strings news mal durch `news`, das Problem hatte ich auch, als ich mit MySQL angefangen habe.

    [ot]
    Ja, das @-Zeichen unterdrückt Fehlermeldungen. Kann man z.B. gebrauchen, wenn man bei einer fehlgeschlagenen Verbindung zum MySQL-Server nicht die Fehlermeldung, sondern stattdessen sowas wie "Der DB-Server ist momentan leider down." anzeigen will.
    [/ot]

  9. #9
    1,Aha ich dachte das @ währe die einzige möglichkeit einen befehlt naczuprüfen ob er geht naja

    2,Das mit " und ' meine ich so $XYZ = "Ein Langer Satz " . $arrary["1"] . " Was weiss ich "

    Mein Apache macht da einen fehler darum eigentlich auch jeden den ich kenne weil er denk

    ich wollte folgendes schreiben

    "Ein Langer Satz " . $arrary[ . "1"] . " Was weiss ich "

    dadurch ergibst dich an ein Escape error zumindest ist das bei Mir so , bei Tripot so , bei Funpic so und bei Ohost so.

  10. #10
    [OT]
    Hm, ich hab hier mal ne Datei, die zwar nicht ganz so funktioniert, wie erwartet, aber trotzdem:
    Skript
    Source
    Hierbei ist mir aufgefallen, dass man keine numerischen Schlüssel für ein Array setzen kann, weil PHP keinen Unterschied zwischen "0", '0' oder 0 macht
    [/OT]

  11. #11
    Zitat Zitat
    Ersetze in deinen SQL_Strings news mal durch `news`, das Problem hatte ich auch, als ich mit MySQL angefangen habe.
    das habe ich jetzt auch gemacht, aber es passiert immer noch nichts, es wird einfach nichts gelöcht.

  12. #12
    Was gibt MySQL denn für eine Fehlermeldung aus? Schreib mal unter das Script echo mysql_error();

  13. #13
    @Kessel
    ich habe das schon verbessert, schon beim ersten mahl

    @masterquest
    er gibt keine Fehlermeldung aus, desshalb versteh ich auch nicht warum es nicht geht.

  14. #14
    PHP-Code:
    <?php
    if ($_GET["mays"]=="abc" || isset($_GET["fas545fsad4sf"])) {
      echo 
    "<h3>Administratorenbereich</h3>";
      include(
    "zugriff.inc.php");
      
    $sql1="SELECT * FROM `news`";
      
    $result=mysql_query($sql1);
      while (
    $row=mysql_fetch_assoc($result)) {
       echo 
    "[ <a href='".$_SERVER['PHP_SERVER']."?fas545fsad4sf=".$row['id']."'>" "Eintrag löschen</a> ] ";
       foreach (
    $row as $name => $key) {
        echo 
    "$key ";
       }
       echo 
    "<br><br>";
      }
    }
    if (isset(
    $_GET["fas545fsad4sf"])) {
      
    $sql1="DELETE FROM news WHERE id='".$_GET['fas545fsad4sf']."'";
      if (
    mysql_query($sql1)) {
       echo 
    "<p>Datensatz gelöscht -- bitte Reload wählen!</p>";
       echo 
    "<p><a href='".$_SERVER['PHP_SELF']."'>Ausloggen</a></p>";
      }
    }
    ?>
    Versichs mal so. AFAIK werden in doppelten Anführungszeichen zwar Variablen wie $key ersetzt, nicht jedoch Arrays, weil PHP nicht genau erkennen kann, ob es die ersetzten soll, oder nicht.

    [EDIT]
    Sry, hab das mit dem DELET übersehen!

    Geändert von dead_orc (17.04.2005 um 11:11 Uhr)

  15. #15
    Hier mal die von mir verbesserte Version:

    PHP-Code:
    <?php
    if($_GET["mays"] == "abc" || isset($_GET["fas545fsad4sf"])) {
      echo 
    "<h3>Administratorenbereich</h3>";
      include(
    "zugriff.inc.php");
      
    $sql "SELECT * FROM `news`";
      
    $result mysql_query($sql);
      while (
    $row mysql_fetch_assoc($result)) {
       echo 
    "[ <a href='".$PHP_SELF."?fas545fsad4sf=".$row['id']."'>Eintrag löschen</a> ] ";
       foreach (
    $row as $name => $key) {
        echo 
    $key." ";
       }
       echo 
    "<br><br>";
      }
    }
    if(isset(
    $_GET["fas545fsad4sf"])) {
      
    $sql="DELETE FROM `news` WHERE `id`='".$_GET['fas545fsad4sf']."' LIMIT 1;";
      if(
    mysql_query($sql)) {
       echo 
    "<p>Datensatz gelöscht -- bitte Reload wählen!</p>";
       echo 
    "<p><a href='".$_SERVER[PHP_SELF]."'>Ausloggen</a></p>";
      }
    }
    ?>
    Es könnte zum Beispiel daran liegen, das du deine zweite Query in $aql abgelegt hast
    Oder daran, dass irgendwie dieses DELETE von dead_orc nicht verbessert wurde (ich glaube das wurde schonmal gesagt...)

    Ich hoffe es geht so

  16. #16
    Der Code von Manni_the_Dark geht, aber ich versteh nicht warum.

  17. #17
    Die Erklärung habe ich eigentlich schon gepostet:
    Zitat Zitat von mir
    AFAIK werden in doppelten Anführungszeichen zwar Variablen wie $key ersetzt, nicht jedoch Arrays, weil PHP nicht genau erkennen kann, ob es die ersetzten soll, oder nicht.
    Soll heißen, dass du Arrays extra aufführen musst. Also statt echo "Ich heiße $ich[name]"; schreiben echo "Ich heiße ".$ich['name'];

  18. #18
    @dead_orc
    Aber dann müsste deins doch auch gehen, tut es aber nicht. Es geht nur das von Manni_the_Dark und das versteh ich nicht.

  19. #19
    Hab ich bereits oben gesagt, warum das nicht lief:

    PHP-Code:
    ...
    $aql="DELET FROM news WHERE id='".$_GET['fas545fsad4sf']."'";
      if(
    mysql_query($sql)) {
    .... 
    Zitat Zitat von Manni_the_Dark
    Es könnte zum Beispiel daran liegen, das du deine zweite Query in $aql abgelegt hast
    Eigentlich ein ziemlich einfacher Tippfehler

  20. #20
    Es ist doch egal ob ich sie $sql1 oder $sql nenne, es geht auch beides? Oder was meinst?
    Ich glaub ich bin zu blöd dafür.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •