tutorials.de Buch-Aktion 02/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
18
ZUGRIFFE
733
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Flextone
    Flextone Flextone ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    210
    Hi,

    ich kämpfe mir einen ab und ich finde nicht das was ich suche im Internet. mein Buch gibt auch nicht ganz das was ich suche wieder.

    also:

    Ich will in einer db eine Tabelle suchen. Wenn diese vorhanden ist gibts eine 1 ansonsten eine 0. Gibts ne 0 wird ne tabelle via CREATE erstellt.

    Das klappt auch. Nur wenn ich 2 oder 40 mal Refresh drücke kommt der gleiche Text.

    "installier" normal muss dann noch nen Fehler kommen.

    Kann mir wer helfen?

    DANKE!

    PHP-Code:
    function kommentare () {
        
    $dbname 'blog';
        
    $result mysql_list_tables($dbname);
        if (
    $result == 'VIEWS'){
            
    $search "1";
        } else {
            
    $search "0";
        }
        if(
    $search == "0"){
            
    mysql_select_db("blog");
            
    $sqlab "CREATE TABLE `kommentare` (`id` INT NOT NULL ,`email` VARCHAR( 255 ) ,`webseite` VARCHAR( 255 ) ,`name` VARCHAR( 255 ) ,`nachname` VARCHAR( 255 ) ,`passwort` VARCHAR( 255 ) ,`login` VARCHAR( 255 ) ,`css` VARCHAR( 255 ) ,PRIMARY KEY ( `id` )) TYPE = MYISAM ";
            
    mysql_query($sqlab);
            
    $info "Tabelle -KOMMENTARE- wurde installiere<br />";
        }else{
            
    $info "Es trat ein Fehler auf";
        }
        echo 
    $info;
        } 
     

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Bei der CREATE TABLE-Anweisung gibt es eine optionale IF NOT EXISTS-Klausel. Probiere es mal damit.

    Die mysql_list_tables()-Funktion liefert übrigens eine MySQL-Ergebnisressource und muss wie jede andere Datenbankabfrage behandelt werden.
     
    Markus Wulftange

  3. #3
    Avatar von Flextone
    Flextone Flextone ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    210
    ok ich verstehe den einen Teil das ich das Create um den Zusatz if not exists erweiter.
    Nur wie bekomme ich es hin das ich anstatt einer "0" eine "1" (für tabelle vorhanden) hinbekomme und damit wird keine Tabelle Created, sondern zb:
    PHP-Code:
    $error "Datenbank vorhanden."
     

  4. #4
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Wie bereits erwähnt, liefert die mysql_list_tables()-Funktion nur eine MySQL-Ergebnisressource. Dies mit der Zeichenkette „VIEWS“ verglichen, ergibt wahrscheinlich immer ein unwahr. Und daher wird auch immer versucht, die Datenbank zu erstellen.
     
    Markus Wulftange

  5. #5
    Avatar von Flextone
    Flextone Flextone ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    210
    kannst du mir nicht erklären wie ich es besser machen kann ?
     

  6. #6
    Avatar von Flextone
    Flextone Flextone ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    210
    PHP-Code:
        ## KOMMENTARE
        
    function kommentare () {
        
    $tabelle 'kommentare';
        
    $result mysql_query($tabelle);
        
        if (!
    $result){
            
    $search "0";
        }elseif(isset(
    $result)){
            
    $search "1";
        }
        
        if(
    $search == "0"){
            
    mysql_select_db("blog");
            
    $sqlab "CREATE TABLE IF NOT EXISTS `kommentare` (`id` INT NOT NULL ,`email` VARCHAR( 255 ) ,`webseite` VARCHAR( 255 ) ,`name` VARCHAR( 255 ) ,`nachname` VARCHAR( 255 ) ,`passwort` VARCHAR( 255 ) ,`login` VARCHAR( 255 ) ,`css` VARCHAR( 255 ) ,PRIMARY KEY ( `id` )) TYPE = MYISAM ";
            
    mysql_query($sqlab);
            
    $info "Tabelle -KOMMENTARE- wurde installiere<br />";

        }else{
        
    $info "Es trat ein Fehler auf";
        }
        echo 
    $info;
        }
        echo 
    kommentare(); 
    Ich bekomme einfach immer das Installiert ausgegeben.
     

  7. #7
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Wie ebenfalls schon erwähnt, ist der Rückgabewert der mysql_list_tables()-Funktion wie eine ganz gewöhnliche MySQL-Datenbankabfrage zu behandeln.
    Aber ich lese gerade auf der Referenzseite der mysql_list_tables()-Funktion, dass die SHOW TABLES-Anweisung der Funktion vorgezogen werden sollte. Also etwa:
    PHP-Code:
    function kommentare()
    {
        
    mysql_select_db('blog');
        
    $query 'SHOW TABLES';
        
    $result mysql_query($query);
        
    $flag false;
        while( 
    $table mysql_result($query0) ) {
            if( 
    $table == 'kommentare' ) {
                
    $flag true;
                break;
            }
        }
        if( !
    $flag ) {
            
    $query 'CREATE TABLE `kommentare` (`id` INT NOT NULL ,`email` VARCHAR( 255 ) ,`webseite` VARCHAR( 255 ) ,`name` VARCHAR( 255 ) ,`nachname` VARCHAR( 255 ) ,`passwort` VARCHAR( 255 ) ,`login` VARCHAR( 255 ) ,`css` VARCHAR( 255 ) ,PRIMARY KEY ( `id` )) TYPE = MYISAM ';
            
    mysql_query($query);
        }
        return 
    $flag;

     
    Markus Wulftange

  8. #8
    Avatar von Flextone
    Flextone Flextone ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    210
    nun created er keine tabelle mehr.
     

  9. #9
    Avatar von Flextone
    Flextone Flextone ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    210
    ne was anderes nun kommt:

    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in L:\__WEBSERVER\apachefriends\xampp\htdocs\projekte\weblog\install.php on line 10

    das ist diese stelle

    while( $table = mysql_result($query, 1) ) {
     

  10. #10
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Welchen Wert liefert denn die Funktion zurück? Wird die Tabelle auch dann nicht erstellt, wenn du sie manuell löschst? Arbeite mal zur Fehleranalyse zusätzlich mit der or die(…)-Fehlerbehandlung.
     
    Markus Wulftange

  11. #11
    Avatar von Flextone
    Flextone Flextone ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    210
    ok,

    nun was neues.

    installieren tut er aber mit dem fehler von oben.
     

  12. #12
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Ich seh’s gerade, mein Fehler: Ersetze mal in der genannten Zeile das $query durch $result.
     
    Markus Wulftange

  13. #13
    Avatar von Flextone
    Flextone Flextone ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    210
    ok habe ich geändert.

    Datenbank gelöscht und dann Refresh:

    Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 4 in L:\__WEBSERVER\apachefriends\xampp\htdocs\projekte\weblog\install.php on line 10

    Tabelle aber vorhanden.

    ---

    Dannn wieder Refresh.

    Ausgabe: 1;
     

  14. #14
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.774
    Blog-Einträge
    5
    Einfacher wäre folgendes:

    PHP-Code:
    function kommentare()
    {
        
    $query 'SHOW TABLES FROM `blog` LIKE \'kommentare\'';
        
    $result mysql_query($query);
        if (
    mysql_num_rows($result) == 0) {
            
    $query 'CREATE TABLE `kommentare` (`id` INT NOT NULL ,`email` VARCHAR( 255 ) ,`webseite` VARCHAR( 255 ) ,`name` VARCHAR( 255 ) ,`nachname` VARCHAR( 255 ) ,`passwort` VARCHAR( 255 ) ,`login` VARCHAR( 255 ) ,`css` VARCHAR( 255 ) ,PRIMARY KEY ( `id` )) TYPE = MYISAM ';
            
    mysql_query($query);
            return 
    false;
        }
        return 
    true;

    Flextone: Etwas eigenständiges Mitdenken sowie Groß-/Kleinschreibung wären ganz angebracht.
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  15. #15
    Avatar von Flextone
    Flextone Flextone ist offline Mitglied Gold
    Registriert seit
    Dec 2003
    Beiträge
    210
    hi Matthias,

    es scheint wohl besser zu gehen, da beim Installieren keineFehlermeldung kommt und beim Refresh eine "1".

    Wie könnte ich denn nun eine $info = "ja" oder $info = "nein" - Ausgabe hinpacken ?

    Danke
     

Ähnliche Themen

  1. Datensatz löschen, wenn in einer anderen Tabelle nicht vorhanden
    Von port29 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 15.08.10, 03:16
  2. DB-Abgleich wenn nicht vorhanden dann
    Von Godstyle im Forum PHP
    Antworten: 5
    Letzter Beitrag: 08.07.09, 15:08
  3. Antworten: 13
    Letzter Beitrag: 02.04.09, 18:22
  4. Antworten: 3
    Letzter Beitrag: 27.01.08, 10:45
  5. MSSQL: update - und wenn nicht vorhanden, dann insert
    Von JavaUncle im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 19.01.08, 12:27