Ergebnis 1 bis 5 von 5

Thema: Bräuchte dringend hilfe.

  1. #1
    Gekko
    Gast

    Standard Bräuchte dringend hilfe.

    Hallo liebe Helfer,

    ich hab ein Problem und ich finde den Fehler einfach nicht. Ich denke mal, das es nur ne kleinigkeit ist, die ich übersehe... daher hoffe ich, das jemand von euch den Fehler findet.

    Also ich möchte ein Skript schreiben, bei dem man sich zu Events an und abmelden kann.

    ich bekomme diese beiden Fehler:

    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /homepages/24/d406012297/htdocs/ro/index.php on line 171

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /homepages/24/d406012297/htdocs/ro/index.php on line 183


    Der ganze Quellcode ist dieser hier:

    <?php
    /*
    * Von den nachfolgenden 2 Anweisungen kann der Kommentar-Tag entfernt werden, um Fehlermeldungen anzuzeigen.
    */
    //error_reporting(E_ALL);
    //ini_set('display_errors','On');
    include('connect.inc.php');
    /*
    * Teilnehmer löschen ************************************************** ****************************
    * Wenn die $_GET-Variable del existiert, wird abgefragt, ob sie den Wert "ja" enthält.
    * Wenn das der Fall ist, wird der Teilnehmer aus der Tabelle teilnahme gelöscht. Wenn nicht,
    * wird die Löschbestätigung ausgegeben, wo dann erst der Variablen del der Wert "ja" zugewiesen wird.
    * Weitere $_GET-Variablen:
    * - id -> Index der Tabelle teilnahme
    * - pn -> Person job
    * - pv -> Person Vorname
    * - e -> Das Event
    */
    if(isset($_GET['del'])){
    if($_GET['del']=="ja"){
    if(isset($_GET['id'])){
    mysql_query("delete from teilnahme where id=".$_GET['id']);
    echo "Teilnehmer gelöscht";
    echo "<a href=\"index.php\"> - Zur Startseite - </a>";
    /*
    * Skript beenden, damit der nachfolgende Code nicht mehr ausgeführt wird
    */
    exit;
    }
    }
    /*
    * Löschbestätigung abfragen/anzeigen
    */
    echo "<br>";
    $querystring="?del=ja&id=".$_GET['id'];
    echo "<h3>Teilnehmer löschen:</h3>";
    echo "<h4>Event: ".$_GET['e']."</h4>";
    echo "<h4>Teilnehmer:</h4> ".$_GET['pn'].", ".$_GET['pv']."<a href=\"index.php$querystring\"> - Ja, löschen - </a><br>";
    echo "<br><a href=\"index.php\"> - Zur Startseite - </a>";
    exit;
    }
    /*
    * ************************************************** *************************************************
    * Person an Event anmelden
    * Die ersten Einträge der DropDown-Listen enthalten den Wert 0.
    * Wenn eine 0 gesendet wurde, wird kein Eintrag vorgenommen.
    */
    if(isset($_POST['cmd'])){
    if($_POST['sel_event']==0 || $_POST['sel_person']==0){
    echo "Sie müssen ein Event und eine Person auswählen!";
    echo "<a href=\"javascript:history.back()\"> - Zurück - </a>";
    exit;
    }
    /*
    * sel_event enthält die id aus der Tabelle events
    * sel_person enthält die id aus der Tabelle personal
    * Somit wird in der Tabelle teilnahme festgelegt, welche Person
    * sich an welchem Event anmeldet.
    */
    $event=$_POST['sel_event'];
    $person=$_POST['sel_person'];
    mysql_query("insert into teilnahme(id,persid,eventid) values(0,$person,$event)");
    /*
    * Um die gesendeten POST-Daten zu löschen, wird die Seite mittels der Funktion header
    * erneut aufgerufen.
    */
    header("location:index.php");
    }
    /*
    * Tabellen events und personal abfragen, um DropDown-Listen im Formular zu füllen.
    */
    $events=mysql_query("select * from events");
    $personal=mysql_query("select * from personal order by job,Vorname");
    /*
    * Anschließend wird das Formular ausgegeben. Zum Auswählen eines Events bzw. einer Person
    * werden zwei DropDown-Listen (select) erstellt. Die Abfrageergebnisse werden mittels einer
    * while-Schleife in die jeweiligen Listen übertragen. Der Parameter value(<option value=Wert . . .)
    * bekommt hier die id eines Datensatzes zugewiesen. Das ist der Wert, der beim Absenden des Formulars
    * übertragen wird.
    */
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Eventkalender</title>
    <link rel="stylesheet" type="text/css" href="style.inc.css">
    </head>
    <body>
    <form action="" method="post">
    <table width="50%"><caption align="left"><h3>Zum Event anmelden</h3></caption>
    <tr>
    <td>Anmelden an</td>
    <td>
    <select name="sel_event">
    <option value="0"> - Event wählen - </option>
    <?php
    while($row=mysql_fetch_array($events,MYSQL_ASSOC)) {
    echo "<option value=$row[id]>$row[Event], $row[Datum], $row[Uhrzeit], $row[Ende]</option>";
    }
    ?>
    </select>
    </td>
    </tr>
    <tr>
    <td>Person anmelden</td>
    <td>
    <select name="sel_person">
    <option value="0"> - Person wählen - </option>
    <?php
    while($row=mysql_fetch_array($personal,MYSQL_ASSOC )){
    echo "<option value=$row[id]>PersNr: $row[id], $row[Vorname]</option>";
    }
    ?>
    </select>
    </td>
    </tr>
    <tr>
    <td colspan="2">
    <input type="submit" name="cmd" value="Anmelden" />
    </td>
    </tr>
    </table>
    </form>
    <h3>Teilnehmerlisten einsehen</h3>
    <?
    /*
    * Alle Events aus Tabelle events abfragen und als Link ausgeben.
    * Der Variablen $eventlink werden der Eventname, Datum, Uhrzeit und Ende zugewiesen,
    * der $_GET-Variablen eventid die id aus der Tabelle events.
    */
    $events=mysql_query("select * from events");
    while($row=mysql_fetch_array($events,MYSQL_ASSOC)) {
    $eventlink=$row['Event'].", ".$row['Datum'].", ".$row['Uhrzeit'].", ".$row[Ende];
    echo "<a href=\"index.php?eventid=$row[id]\">$eventlink</a><br>";
    }
    /*
    * Wenn die $_GET-Variable eventid exisitert, wird das Event aus der Tabelle events abgefragt
    * und ausgegeben.
    */
    if(isset($_GET['eventid'])){
    $events=mysql_query("select * from events where id=".$_GET['eventid']);
    $event=mysql_fetch_array($events,MYSQL_ASSOC);
    $eventtitel=$event['Event'].", ".$event['Datum'].", ".$event['Uhrzeit'].", ".$row[Ende];
    echo "<h3>Teilnehmerliste: $eventtitel</h3>";
    /*
    * Anschließend werden die Tabellen personal und teilnahme abgefragt.
    * Abfragekriterien in der where-Klausel:
    * - $event['id'] -> ist die id aus der Tabelle events, die zuvor abgefragt wurde
    * - - Diese id wird in der Tabelle teilnahme in das Feld eventid eingetragen
    * - p.id(Tabelle personal.id) -> Diese id aus der Tabelle personal wird in der Tabelle
    * - - teilnahme in das Feld persid eingetragen
    * Die Abfrage prüft also auf Gleichheit von personal.id und teilnahme.persid und
    * auf Gleichheit event.id und teilnahme.eventid.
    * Die Abfrage des Feldes id aus der Tabelle teilnahme(t.id as 'Index') wird gebraucht, um
    * den Index eines Eintrags in der Tabelle zum Löschen zu ermitteln.
    *
    */
    $sql="select p.Vorname as 'Vorname', t.id as 'Index' from personal p, teilnahme t,";
    $sql.=" where p.id=t.persid and t.eventid=".$event['id'];
    /*
    * Sortierung der Teilnehmer nach job, Vorname. Anstatt Feldnamen können auch Spaltennummern an die
    * order by-Anweisung übergeben werden. Sortiert wird hier also zuerst nach Spalte 2(job), anschließend
    * nach Spalte 1(Vorname).
    * Beispiel: Meyer,Anton wird vor Meyer,Dieter ausgegeben.
    */
    $sql.=" order by 2,1";
    $result=mysql_query($sql);
    /*
    * Anzahl der angemeldeten Teilnehmer ermitteln und ausgeben.
    */
    $angemeldet=mysql_num_rows($result);
    echo "<h4>Es hat/haben sich $angemeldet Person(en) angemeldet</h4>";
    /*
    * Ausgabe der Teilnehmerliste.
    * Ausgabe eines Links mit Variablen zum Löschen eines Eintrags(siehe Skript oben).
    * Übergebene Variablen:
    * - del, ohne Wertzuweisung -> als Abfragekriterium
    * - id -> index in der Tabelle teilnahme
    * - pn -> Nachname der Person
    * - pv -> Vorname der Person
    * - e -> Name des Events
    */
    while($teilnehmer=mysql_fetch_array($result,MYSQL_ ASSOC)){
    $querystring="?del&id=".$teilnehmer['Index']."&pv=".$teilnehmer['Vorname']."&e=".$event['Event'];
    echo "<li>".$teilnehmer['Vorname']."<a href=\"index.php$querystring\"> - Löschen - </a><br>";
    }
    echo "<br><h4><a href=\"index.php\"> - Zur Startseite - </a></h4>";
    }
    ?>
    </body>
    </html>
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    HTML Newbie
    Registriert seit
    07.08.2012
    Beiträge
    2
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Bräuchte dringend hilfe.

    Hab mich schnell Registriert, den Quellcode, solte man so nun auch besser erkennen xD
    Die beiden Fehler, habe ich versucht, etwas hervor zu heben. Die sind so zimlich am Ende des Quelltextes.

    Vielen Dank im Vorraus.

    HTML-Code:
    <?php 
    /* 
    * Von den nachfolgenden 2 Anweisungen kann der Kommentar-Tag entfernt werden, um Fehlermeldungen anzuzeigen. 
    */ 
    //error_reporting(E_ALL); 
    //ini_set('display_errors','On'); 
    include('connect.inc.php'); 
    /* 
    * Teilnehmer löschen ****************************************************************************** 
    * Wenn die $_GET-Variable del existiert, wird abgefragt, ob sie den Wert "ja" enthält. 
    * Wenn das der Fall ist, wird der Teilnehmer aus der Tabelle teilnahme gelöscht. Wenn nicht, 
    * wird die Löschbestätigung ausgegeben, wo dann erst der Variablen del der Wert "ja" zugewiesen wird. 
    * Weitere $_GET-Variablen: 
    * - id -> Index der Tabelle teilnahme 
    * - pn -> Person job 
    * - pv -> Person Vorname 
    * - e  -> Das Event 
    */ 
    if(isset($_GET['del'])){ 
     if($_GET['del']=="ja"){ 
      if(isset($_GET['id'])){ 
         mysql_query("delete from teilnahme where id=".$_GET['id']); 
         echo "Teilnehmer gelöscht"; 
         echo "<a href=\"index.php\"> - Zur Startseite - </a>"; 
         /* 
         * Skript beenden, damit der nachfolgende Code nicht mehr ausgeführt wird 
         */ 
         exit; 
        } 
     } 
     /* 
     * Löschbestätigung abfragen/anzeigen 
     */ 
     echo "<br>"; 
     $querystring="?del=ja&id=".$_GET['id']; 
     echo "<h3>Teilnehmer löschen:</h3>"; 
     echo "<h4>Event: ".$_GET['e']."</h4>"; 
     echo "<h4>Teilnehmer:</h4> ".$_GET['pn'].", ".$_GET['pv']."<a href=\"index.php$querystring\"> - Ja, löschen - </a><br>"; 
     echo "<br><a href=\"index.php\"> - Zur Startseite - </a>"; 
     exit; 
    } 
    /* 
    * *************************************************************************************************** 
    * Person an Event anmelden 
    * Die ersten Einträge der DropDown-Listen enthalten den Wert 0. 
    * Wenn eine 0 gesendet wurde, wird kein Eintrag vorgenommen. 
    */ 
    if(isset($_POST['cmd'])){ 
     if($_POST['sel_event']==0 || $_POST['sel_person']==0){ 
      echo "Sie müssen ein Event und eine Person auswählen!"; 
        echo "<a href=\"javascript:history.back()\"> - Zurück - </a>"; 
        exit; 
     } 
     /* 
     * sel_event enthält die id aus der Tabelle events 
     * sel_person enthält die id aus der Tabelle personal 
     * Somit wird in der Tabelle teilnahme festgelegt, welche Person 
     * sich an welchem Event anmeldet. 
     */ 
     $event=$_POST['sel_event']; 
     $person=$_POST['sel_person']; 
     mysql_query("insert into teilnahme(id,persid,eventid) values(0,$person,$event)"); 
     /* 
     * Um die gesendeten POST-Daten zu löschen, wird die Seite mittels der Funktion header 
     * erneut aufgerufen. 
     */ 
     header("location:index.php");  
    } 
    /* 
    * Tabellen events und personal abfragen, um DropDown-Listen im Formular zu füllen. 
    */ 
    $events=mysql_query("select * from events"); 
    $personal=mysql_query("select * from personal order by job,Vorname"); 
    /* 
    * Anschließend wird das Formular ausgegeben. Zum Auswählen eines Events bzw. einer Person 
    * werden zwei DropDown-Listen (select) erstellt. Die Abfrageergebnisse werden mittels einer 
    * while-Schleife in die jeweiligen Listen übertragen. Der Parameter value(<option value=Wert . . .) 
    * bekommt hier die id eines Datensatzes zugewiesen. Das ist der Wert, der beim Absenden des Formulars 
    * übertragen wird. 
    */ 
    ?> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    <html> 
    <head> 
    <title>Eventkalender</title> 
    <link rel="stylesheet" type="text/css" href="style.inc.css"> 
    </head> 
    <body> 
    <form action="" method="post"> 
    <table width="50%"><caption align="left"><h3>Zum Event anmelden</h3></caption> 
    <tr> 
    <td>Anmelden an</td> 
    <td> 
    <select name="sel_event"> 
    <option value="0"> - Event wählen - </option> 
    <?php 
    while($row=mysql_fetch_array($events,MYSQL_ASSOC)){ 
     echo "<option value=$row[id]>$row[Event], $row[Datum], $row[Uhrzeit], $row[Ende]</option>"; 
    } 
    ?> 
    </select> 
    </td> 
    </tr> 
    <tr> 
    <td>Person anmelden</td> 
    <td> 
    <select name="sel_person"> 
    <option value="0"> - Person wählen - </option> 
    <?php 
    while($row=mysql_fetch_array($personal,MYSQL_ASSOC)){ 
     echo "<option value=$row[id]>PersNr: $row[id], $row[Vorname]</option>"; 
    } 
    ?> 
    </select> 
    </td> 
    </tr> 
    <tr> 
    <td colspan="2"> 
    <input type="submit" name="cmd" value="Anmelden" /> 
    </td> 
    </tr> 
    </table> 
    </form> 
    <h3>Teilnehmerlisten einsehen</h3> 
    <? 
    /* 
    * Alle Events aus Tabelle events abfragen und als Link ausgeben. 
    * Der Variablen $eventlink werden der Eventname, Datum, Uhrzeit und Ende zugewiesen, 
    * der $_GET-Variablen eventid die id aus der Tabelle events. 
    */ 
    $events=mysql_query("select * from events"); 
    while($row=mysql_fetch_array($events,MYSQL_ASSOC)){ 
     $eventlink=$row['Event'].", ".$row['Datum'].", ".$row['Uhrzeit'].", ".$row[Ende]; 
     echo "<a href=\"index.php?eventid=$row[id]\">$eventlink</a><br>"; 
    } 
    /* 
    * Wenn die $_GET-Variable eventid exisitert, wird das Event aus der Tabelle events abgefragt 
    * und ausgegeben. 
    */ 
    if(isset($_GET['eventid'])){ 
     $events=mysql_query("select * from events where id=".$_GET['eventid']); 
     $event=mysql_fetch_array($events,MYSQL_ASSOC); 
     $eventtitel=$event['Event'].", ".$event['Datum'].", ".$event['Uhrzeit'].", ".$row[Ende]; 
     echo "<h3>Teilnehmerliste: $eventtitel</h3>"; 
     /* 
     * Anschließend werden die Tabellen personal und teilnahme abgefragt. 
     * Abfragekriterien in der where-Klausel: 
     * - $event['id'] -> ist die id aus der Tabelle events, die zuvor abgefragt wurde 
     * - - Diese id wird in der Tabelle teilnahme in das Feld eventid eingetragen 
     * - p.id(Tabelle personal.id) -> Diese id aus der Tabelle personal wird in der Tabelle 
     * - - teilnahme in das Feld persid eingetragen 
     * Die Abfrage prüft also auf Gleichheit von personal.id und teilnahme.persid und 
     * auf Gleichheit event.id und teilnahme.eventid. 
     * Die Abfrage des Feldes id aus der Tabelle teilnahme(t.id as 'Index') wird gebraucht, um 
     * den Index eines Eintrags in der Tabelle zum Löschen zu ermitteln. 
     *  
     */ 
     $sql="select p.Vorname as 'Vorname', t.id as 'Index' from personal p, teilnahme t,"; 
     $sql.=" where p.id=t.persid and t.eventid=".$event['id']; 
     /* 
     * Sortierung der Teilnehmer nach job, Vorname. Anstatt Feldnamen können auch Spaltennummern an die 
     * order by-Anweisung übergeben werden. Sortiert wird hier also zuerst nach Spalte 2(job), anschließend 
     * nach Spalte 1(Vorname). 
     * Beispiel: Meyer,Anton wird vor Meyer,Dieter ausgegeben. 
     */ 
     $sql.=" order by 2,1"; 
     $result=mysql_query($sql); 
     /* 
     * Anzahl der angemeldeten Teilnehmer ermitteln und ausgeben. 
     */ 
      $angemeldet=mysql_num_rows($result);  ---! Fehler zeile 171 !---
     echo "<h4>Es hat/haben sich $angemeldet Person(en) angemeldet</h4>"; 
     /* 
     * Ausgabe der Teilnehmerliste. 
     * Ausgabe eines Links mit Variablen zum Löschen eines Eintrags(siehe Skript oben). 
     * Übergebene Variablen: 
     * - del, ohne Wertzuweisung -> als Abfragekriterium 
     * - id -> index in der Tabelle teilnahme 
     * - pn -> Nachname der Person 
     * - pv -> Vorname der Person 
     * - e -> Name des Events 
     */ 
     while($teilnehmer=mysql_fetch_array($result,MYSQL_ASSOC)){   ---! Fehler Zeile 183 !---
      $querystring="?del&id=".$teilnehmer['Index']."&pv=".$teilnehmer['Vorname']."&e=".$event['Event']; 
      echo "<li>".$teilnehmer['Vorname']."<a href=\"index.php$querystring\"> - Löschen - </a><br>"; 
     } 
     echo "<br><h4><a href=\"index.php\"> - Zur Startseite - </a></h4>"; 
    } 
    ?> 
    </body> 
    </html>
    Geändert von Gekko (07.08.2012 um 13:18 Uhr)

  3. #3
    Bandit
    Gast

    Standard AW: Bräuchte dringend hilfe.

    Zeile 167
    PHP-Code:
     $result=mysql_query($sql); 
    ändern in
    PHP-Code:
     $result=mysql_query($sql)
       or die (
    "MySQL-Fehler: " mysql_error()); 
    Wobei eine Zeile vorher
    PHP-Code:
    $sql.=" order by 2,1"
    schon merkwürdig aussieht, oder?

    Außerdem gehört diese Frage ja eher nicht ins HTML-Forum, oder? PHP-Forum wäre wohl besser gewesen.
    Geändert von Bandit (07.08.2012 um 13:24 Uhr)

  4. #4
    HTML Newbie
    Registriert seit
    07.08.2012
    Beiträge
    2
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Bräuchte dringend hilfe.

    Vielen Dank für die schnelle Hilfe, die beiden Fehler sind nun weg. Jetzt kommt aber diese Meldung:

    MySQL-Fehler: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where p.id=t.persid and t.eventid=2 order by 2,1' at line 1

    PHP-Code:
    $sql.=" order by 2,1"
    Ja, du hast recht, es sieht komisch aus. Ich hab mir das eigentlich nur zum Sortieren reingebastelt.

    Jetzt wo du es sagst, ja, das würde eher in PhP passen, vieleicht wäre ein Moderator ja so nett und verschiebt es dorthin.

  5. #5
    Bandit
    Gast

    Standard AW: Bräuchte dringend hilfe.

    order by erwartet doch Spaltennamen und keine Zahlen, also z.B.

    order by `Vorname`

Ähnliche Themen

  1. Bräuchte dringend hilfe bei einem Projekt
    Von sternchen2225 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 5
    Letzter Beitrag: 30.05.2012, 22:14
  2. Bräuchte Hilfe
    Von MichaelKRI im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 23.04.2009, 18:53
  3. BRÄUCHTE DA MAL HILFE!!!
    Von goldbaer78hs im Forum HTML & CSS Forum
    Antworten: 3
    Letzter Beitrag: 16.03.2008, 10:32
  4. Ich bräuchte mal Hilfe
    Von noname im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 27.10.2007, 00:23
  5. Ich bräuchte da ma Hilfe... :-)
    Von Happy im Forum Off Topic und Quasselbox
    Antworten: 4
    Letzter Beitrag: 08.06.2007, 12:40

Stichworte

Berechtigungen

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