kostenloser Webspace werbefrei: lima-city


Tabelle wird nicht erzeugt?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    transporter

    transporter hat kostenlosen Webspace.

    Hi ich benutze folgenden ref="/tag/code">Code ohne Fehlermeldung:

    $Rohstoff=$_POST['Rohstoff'];   
    $Volumen=$_POST['Volumen'];    
    $Masse=$_POST['Masse'];    
    $db=mysql_connect("mysql.lima-city.de","USER121635","******");   
    mysql_select_db("db_121635_2");    
    mysql_query("CREATE TABLE Rohstoffe(Rohstoff char(256), Volumen int, Masse int)");
    mysql_query("INSERT INTO Rohstoffe (Rohstoff, Volumen, Masse), ($Rohstoffe, $Volumen, $Masse)");    
    echo "Verbindung zur Datenbank hergestellt. $Rohstoff mit dem Volumen $Volumen und der Masse $Masse gespeichert!";


    Aber phpMyAdmin stellt fest, dass keine Tabellen in meiner Datenbank vorhanden sind. Ich seh keinen Grund warum es nicht klappt.


    Beitrag geändert: 7.10.2008 11:36:21 von transporter
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 1) vorallem bei INSERT INTo und CREATE immer ein "or die (mysql_error()); hinzufügen
    (((
    2) wenn es sagt, dass keine Tabellen vorhanden sind. Dann erstell erstmal eine Datenbank db_121635_2 und schreib da eine Tabelle irgendeines Namens rein.

    3) warum erstellst du die Tabelle denn mit PHP und nicht einfach voreingestellt. Wäre doch dort wirklich sinnvoller oder?

    ((4) mach mal vor das mysql_query ein "$result = "))

    )))
  4. Keiner dieser vier Punkte hat nur im Geringsten damit zu tun
    das 'or die' sorgt dafür, dass das gesamte Programm bei misslingen der Query beendet wird
    das ist nich immer gewollt. Und den Fehler kann man auch anders ausgeben!
    Es ist tatsächlich ratsam, die Tabelle in phpmyadmin zu erstellen
    dazu gehst du einfach auf mysql.lima-city.de und loggst dich mit deinen Daten ein und dann kannst du die Datenbank bearbeiten.
    aber es spicht nichts dagegen, das anders zu machen.
    Das $result = macht nur dann Sinn, wenn man das Resultat auch wirklich braucht, was bei INSERT und CREATE TABLE eigentlich nicht der Fall ist

    Hier gibt es fünf Fehler:
    Der erste ist, dass CHAR maximal eine Länge von 255 haben kann. Dadurch kann die Tabelle schonmal nicht erstellt werden.

    der zweite ist folgender:
    die richtige Syntax für INSERT INTO lautet:
    INSERT INTO `table` (`Spalte1`, `Spalte2`, ...) VALUES ('Value1', 'Value2', ...)

    Du hast das VALUES vergessen, bzw. durch ein komma ersetzt.
    Was man mit dem Komma macht, ist mehrere Datensätze gleichzeitig einfügen:
    INSERT INTO `table` (`Spalte1`, `Spalte2`, ...) VALUES ('Satz1Value1', 'Satz1Value2', ...), ('Satz2Value1', 'Satz2Value2', ...)


    Der dritte Fehler ist, dass die Werte (zumindest bei CHAR) zwischen Hochkommas ('') stehen müssen. Man sollte sie allerdings immer setzen aus dem Grund, den du gleich lesen wirst:

    Der vierte Fehler ist nämlich, dass du anstelle von $Rohstoff $Rohstoffe geschrieben hast. Das führ automatisch zu einem Syntax Fehler wenn die Hochkommas fehlen, da dann einfach nichts zwischen den beiden kommas steht.

    Der fünfte hängt mit dem MySQL zusammen, das man benutzt. Bei manchen Versionen ist es verlangt, dass die Tabellen und Spaltennamen zwischen `` (rechts neben ß min Shift) stehen.

    Somit wäre die in jedem Fall sicherste Variante:

    <?php
    $Rohstoff = $_POST['Rohstoff'];   
    $Volumen = $_POST['Volumen'];    
    $Masse = $_POST['Masse'];
    
    $db = mysql_connect("mysql.lima-city.de","USER121635","******");
    mysql_select_db("db_121635_2");
    
    mysql_query("CREATE TABLE `Rohstoffe` (`Rohstoff` char(255), `Volumen` int, `Masse` int)");
    mysql_query("INSERT INTO `Rohstoffe` (`Rohstoff`, `Volumen`, `Masse`) VALUES ('$Rohstoff', '$Volumen', '$Masse')");    
    
    echo "Verbindung zur Datenbank hergestellt. $Rohstoff mit dem Volumen $Volumen und der Masse $Masse gespeichert!";
    ?>



    viele Grüße.
    xelax90

    Beitrag geändert: 7.10.2008 12:30:49 von xelax90
  5. Autor dieses Themas

    transporter

    transporter hat kostenlosen Webspace.

    Erstmal danke für den Tipp mit mysql_error, dadurch hab ich rausgefunden das char(256) nicht geht 255 ist das Maximum.

    Also habe ich meinen Code mit deinen Tipps und den Fehlermeldungen umgebaut:

    $Rohstoff=$_POST['Rohstoff'];
     $Volumen=$_POST['Volumen'];
     $Masse=$_POST['Masse'];
     mysql_connect("mysql.lima-city.de","USER121635","Re2209ne");
     mysql_select_db("db_121635_2");
     mysql_query("CREATE TABLE IF NOT EXISTS Rohstoffe(Rohstoff char(128), Volumen int, Masse int)") or  
     die(mysql_error());
     mysql_query("INSERT INTO Rohstoffe (Rohstoff, Volumen, Masse),("$Rohstoff", "$Volumen", "$Masse")") 
     or die (mysql_error());
     echo "Verbindung zur Datenbank hergestellt. $Rohstoff mit dem Volumen $Volumen und der Masse $Masse 
     gespeichert!";


    Nun bekomme ich den Fehler gemeldet unerwarterte T_Variabel in der Skriptzeile 9. ich sehe nicht was da unerwartet ist, habe alle Semikolons richtig gesetzt und auch die " stimmen.
  6. Autor dieses Themas

    transporter

    transporter hat kostenlosen Webspace.

    Hi Bettler,

    hab deinen Beitrag zu spät gesehen, man möge mir daher das doppelt Posting nachsehen.

    So wie du es beschrieben hast geht es nun auch Bettler.

    Beiden vielen Dank
  7. Bitte^^

    Der Fehler mit der T_Variable kommt übrigens davon, dass du Anführungszeichen und keine Hochkommas verwendet hast.
    dadurch wurde der String unterbrochen.
    Das kannst du sofort sehen, wenn du einen Editor mit Syntaxhervorhebung (zum Beispiel Phase5) benutzt.
    ich zeig dir das mal hier im Code:

    <?php
     $Rohstoff=$_POST['Rohstoff'];
     $Volumen=$_POST['Volumen'];
     $Masse=$_POST['Masse'];
     mysql_connect("mysql.lima-city.de","USER121635","*******");
     mysql_select_db("db_121635_2");
     mysql_query("CREATE TABLE IF NOT EXISTS Rohstoffe(Rohstoff char(128), Volumen int, Masse int)") or  
     die(mysql_error());
     mysql_query("INSERT INTO Rohstoffe (Rohstoff, Volumen, Masse),("$Rohstoff", "$Volumen", "$Masse")") 
     or die (mysql_error());
     echo "Verbindung zur Datenbank hergestellt. $Rohstoff mit dem Volumen $Volumen und der Masse $Masse 
     gespeichert!";
    ?>


    Außerdem heiß ich nicht Bettler, sondern xelax90 :P

    lg,
    xelax90


    Beitrag geändert: 7.10.2008 14:50:49 von xelax90
  8. Autor dieses Themas

    transporter

    transporter hat kostenlosen Webspace.

    Oh Mann, sry Bettler dachte schon wer nennt sich den so....;-)

    Nun habe ich noch ein neues Problem. Ich habe einige Daten in die Rohstofftabelle eingetragen und nun möchte ich diese als Tabelle ausgeben.

    mysql_connect("mysql.lima-city.de","USER121635","?");
        mysql_select_db("db_121635_2");
        $result=mysql_list_fields("db_121635_2","Rohstoffe");
        $Spalten=mysql_num_fields($result);    
        $resultDaten=mysql_query("SELECT * FROM Rrohstoffe");    
        $n=0;
        echo "<table width=42%>";
        echo "<tr>";
        do
         {
          $Ergebnis=mysql_field_name($result,$n);
          echo "<th width=33%>$Ergebnis</th>";
          $n++;
         }
        while($n<$Spalten);    
        echo "</tr>";    
        $Zeilen=mysql_num_rows($resultDaten);
        do
         {
          echo "<tr>";
          $n=0;
          do
           {
            $Erg=mysql_result($resultDaten,$n);
            echo "<td></td>";
            $n++; 
           }
          while($n<$Spalten);
          echo "</tr>";
          $i++;
         }
        while($i<$Zeilen);
        echo "</table>"

    Also, dass mit den Spaltennamen gelingt gut. Wenn ich dann versuch mit Select * FROM Rohstoffe mir die Daten ausgeben, bekomme ich eine Fehlermeldung in der Zeile:
    $Zeilen=mysql_num_rows($resultDaten);
    $resultDaten keine Zulässiges Argument für mysql_num_rows ist.

    PS: Wie kriegst du es hin, dass PHP mit Highlight angezeigt wird?

    Beitrag geändert: 7.10.2008 14:16:23 von transporter


    Beitrag geändert: 7.10.2008 14:52:14 von transporter
  9. indem ich <?php an den Anfang und ?> ans Ende setze^^

    ich find den Ansatz, den du gemacht hast nicht so ganz richtig.
    deswegen werd ich einfach mal alles korrigieren^^

    <?php
    
    $verbindung = mysql_connect("mysql.lima-city.de","USER121635","*******");
    mysql_select_db("db_121635_2", $verbindung);
    
    echo "<table width=42%>";
    
    $fields = array();
    
    $res = mysql_query("SHOW COLUMNS FROM `Rrohstoffe`", $verbindung);
    echo "<tr>";
    while($val = mysql_fetch_object($res)){
            echo "<th width=33%>$val->Field</th>";
            $fields[] = $val->Field;
    }
    echo "</tr>";
        
    $res = mysql_query("SELECT * FROM `Rohstoffe`", $verbindung);
    while($val = mysql_fetch_assoc($res)){
            echo "<tr>";
            foreach($fields as $field){
                    echo "<td>".$val[$field]."</td>";
            }
            echo "</tr>";
    }
    echo "</table>";
    ?>


    Ich mach das zumindest immer so^^
    Den Befehl mysql_list_fields benutze ich nie, ich geh lieber über die in MySQL vorhandene Funktion LIST COLUMNS FROM
    Dann habe ich mysql_fetch_assoc benutzt, weil ich ja nicht geau weiß, welche Spalten darin vorkommen.
    also ein kleiner Trick meinerseits ;)

    und ein kleiner Tipp:
    Maskier deine Passwörter :P

    gruß
    xelax90


    Beitrag geändert: 7.10.2008 14:50:11 von xelax90
  10. Autor dieses Themas

    transporter

    transporter hat kostenlosen Webspace.

    Dank dir, so gehts....!
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!