• hi, ich bin neu hier

    ich fang gerade mit PHP/SQL an und meine erste eigenkreation sieht so aus:

    [php:1:fc45b9aa74]
    <?php
    echo //FORMULAR
    '
    <h1>G&auml;stebuch</h1>


    Willkommen im G&auml;stebuch!</p>
    <fieldset>
    <legend>Eintrag vornehmen?</legend>
    <form action="index.php?go=GB" method="POST">
    <p align="left">Name:<input type="text" name="name" />
    E-M@il:<input type="text" name="EMA" />
    <input type="submit" value="Eintragen" /></p>
    <p align="left">Dein Eintrag:

    <textarea cols="40" rows="7" name="posting" style="margin-left:38px"></textarea></p>
    </form>
    </fieldset>
    ';
    //WENN eintrag uebermittelt wurde
    if (isset($_POST['posting'])) {
    //DANN mit MySQL verbinden
    @mysql_connect('localhost', 'root') or die("Datenbankprogramm reagiert nicht");
    //DANN Datenbank laden
    @mysql_select_db('juniorcup') or die("Datenbank nicht erreichbar");
    //Variablen Festlegen
    $name = $_POST['name'];
    $EMA = $_POST['EMA'];
    $posting = $_POST['posting'];
    //eintrag in der Datenbank vornehmen
    @mysql_query("INSERT INTO eintraege SET
    name = '$name',
    EMA = '$EMA',
    posting = '$posting',
    date = CURDATE()") or die("Daten konnten nicht eingef&uuml;gt werden"); } else {
    echo 'Tragen sie bitte ihren Namen, ihre E-M@il und eine Nachricht ein
    '; }
    //eintraege aus Datenbank holen - Verbinden mit Datenbank
    @mysql_connect('localhost', 'root') or die("Datenbankprogramm reagiert nicht");
    @mysql_select_db('juniorcup') or die("Datenbank nicht erreichbar");
    //HTML der Gaestebucheintraege erzeugen
    while ($table = mysql_fetch_array(@mysql_query('SELECT name, EMA, posting FROM eintraege'))) {
    echo '
    <table class="GB" cellspacing="0px" cellpadding="0px">
    <tr>
    <td class="GBH">
    <div class="gbhdiv">
    [email=''.$table['EMA'].'"]'.$table['name'].'[/email] schreibt(am '.$table['date'].')
    </div>
    </td>
    </tr>
    <tr>
    <td class="GBP">
    <div class="gbpdiv">'.$table['posting'].'</div>
    </td>
    </tr>
    <tr>
    <td class="GBB">

    </td>
    </tr>
    </table>
    ';}
    //ENDE GAESTEBUCH
    ?>
    [/php:1:fc45b9aa74]

    Nun berechnet mir PHP die table mit den postings drinn immer und immer und immer und immer wieder... wie löse ich es, dass pro datensatz nur ein einziger table berechnet wird?

  • so - eine einfachere version von deinem code.
    ps. mach lieber sinnvolle namen, `mail` statt EMA, `kommentar` statt posting usw. erhöht die verständlichkeit des codes etwas.

    so long - phore

  • jetz aber ein paar fragen:
    warum überalle `?
    warum kein <?PHP, nur <?
    warum besserst du meinen code durch einen aus, der auch nicht richtig is :) ;)

  • - "`" so sind inhalte, sql, spalten und tabellen sauber getrennt - habs mir so angewöhnt

    - <? und <?php ist dasselbe

    - mein code sollte richtig sein, nur kürzer und logischer aufgebaut, funktioniert er denn jetzt?

    achja - beim SELECT musst du noch:

    Code
    DATE_FORMAT(`datum`, '%d.%m.%Y') AS `date`


    schreiben. und das datenbankfeld auf DATE stellen (datentyp).

  • ich habs hinbekommen. ein paar teile von deinem code hab ich auch verwendet. jetzt ein anderes problem ;)
    ich bekomme diese fehlermeldung:

    Code
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\.....\locs.php on line 37

    in diesem code:

    [php:1:fa9d608875]<?php
    $loc = $_GET['loc'];
    $LocID = "SELECT ID FROM Locs WHERE $loc = Bezirk LIMIT 1";
    echo '<h1>'.$loc.'</h1>';
    @mysql_connect('localhost', 'root') or die("

    ERROR:0:Datenbankprogramm reagiert nicht</p>");
    @mysql_select_db('juniorcup') or die("

    ERROR:1:Datenbank nicht erreichbar</p>");
    $sql = "SELECT 'TeamName', 'Tore', 'GTore', 'PKT' FROM 'teams' WHERE 'LocID' = $LocID";
    $teams = @mysql_query($sql);
    echo '
    <table width="600px" align="center" cellspacing="0px" cellpadding="0px" class="datenblatt">
    <tr>
    <th colspan="4" width="600px"><p class="para">Gruppe</p></th>
    </tr>
    <tr>
    <td width="450px" align="left">

    Team</p></td>
    <td width="50px" align="center">

    Tore</p></td>
    <td width="50px" align="center">

    GTore</p></td>
    <td width="50px" align="center">

    Punkte</p></td>
    </tr>';
    while ($row = mysql_fetch_array($teams)) {
    $teamName = $row['teamName'];
    $Tore = $row['Tore'];
    $GTore = $row['GTore'];
    $PKT = $row['PKT'];
    echo "
    <tr> \n
    <td width=\"450px\" align=\"left\">

    $teamname</p></td> \n
    <td width=\"50px\" align=\"center\">

    $Tore</p></td> \n
    <td width=\"50px\" align=\"center\">

    $GTore</p></td> \n
    <td width=\"50px\" align=\"center\">

    $PKT</p></td> \n
    </tr> \n"; }
    echo '</table>';
    ?>[/php:1:fa9d608875]

    kA warum das so is....

  • ps: das is die line:
    while ($row = mysql_fetch_array($teams)) {
    und diese "n" . ... naja der gibt hier keine backslashes aus
    und die quots in der whileschleife sind alle korrekt escaped

  • so hab es mal angepasst,

    dazu noch 1-2 performance optimierung..


  • $row['***'] hatte ich vorher auch, das wollte er nicht.
    danke trotzdem aber der code is fürchterlich ^^(für mich.. viele fehler). ich geh in 10min heim. mit deinem code hatte ich sehr viele errors.

    hab heute keine lust mehr das durchzulesen, ich mach das am montag.

    wünsch dir n entspannendes wochenende ;)

  • ROFL, ich hatte einen tippfehler drinn...


  • ich hab zwar keinen error mehr (hab die ' in der abfrage vergessen bei den variablen) aber ich bekomme bei der abfrage seltsame ergebnisse..

    wenn ich die abfrage in phpMyadmin tippe dann bekomme ich das richtige, aber wenn ich das per PHP mach dann bekomm ich sowas wie:

    resource ID #3 ...
    also.. ich übergeben einen wert in der url, das is der name eines bezirks.

    in einer tabelle in der datenbank sind die bezirksnamen mit ihren IDs gespeichert. ich frage die ID des bezirks also so ab:

    Code
    $sql = "SELECT ID FROM locs WHERE Bezirk='$loc'";
    $location = @mysql_query($sql);

    wenn ich dann zum testen echo $location; mach dann bekomm ich das seltsame resultat.. normal sollte da die id kommen.

    muss ich irgendwie den wert, der über get gekommen is in INT umwandeln?

    der ganze code:

  • man du noob guck dir gneau an was ich gepostet habe und nutze es so.

    das sql query giebt immer nur die ressource id des query inhaltes zurück.

    das must du damm mti mysql_fetch_**** holen.

    list($LocID) = mysql_fetch_row(mysql_query("SELECT ´ID´ FROM ´locs´ WHERE `{$_GET['loc']}` = ´Bezirk´ LIMIT 1"));

  • list($LocID) = mysql_fetch_row(@mysql_query("SELECT ID FROM locs WHERE Bezirk='$loc' LIMIT 1"));

    das funktioniert jetzt danke.... jetz muss ich nurnoch rausbekommen warum ^^

  • ja aber lesen der post der leute die dir helfen wollen kannst du???

    Oder geht lesen auch erst seit gestern.

    Nur das nervt mich ...

    list() odrdnet werte einer numerischen array der reihe nach zu.

    mysql_query giebt die ressource id des speicherwertes zurück wo das query ergebiss lieget.

    mysql_fetch_row holt den datensatz als numerische array
    mysql_fetch_assoc holt den datensatz als apla array also so wie die bezeichner heisen
    mysql_fetch_array holt es als aplynumerische array also row und assoc zusammen

    mysql_fetch_objeckt holt es als objelckte. Für dich noch uninteressant.

    nun macht das ganze nichts weiter als die ausgabe

    $xyz = mysql_fetch_row(@mysql_query("SELECT ID FROM locs WHERE Bezirk='$loc' LIMIT 1"));
    z.B.

    $xyz[0]=433;

    das heist das du die array mit dme list gleich wieder auflöst.

  • danke danke .... das mysql_fetch_objekt is für zb bilder, die in der datenbakn sind, oder?
    oder hat das was mit OOP(nicht lachen ;) ) zu tun?

  • das erste ist scheiss egal welches du nimmst, das geht auch mit array usw.

    ja objeckte gehören zu OOP, aber das kann man nur verstehen wenn man richtig strukturiert schreiben kann.

    Da oop in der denkweise nochmal komplizierter ist.