tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
420
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Apr 2004
    Ort
    Berlin
    Beiträge
    196
    Hi Leutz.

    Ich habe ne Datenbank mit dem TABLE vmap. wenn ich mit folgendem Script was hinzufügen möchte macht er das nicht.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    $again =1;
    while($again == 1)
    {
        $x = mt_rand(1,25);
        $y = mt_rand(1,25);
        $sql = @mysql_query("SELECT * FROM vmap");
        while($row = @mysql_fetch_array($sql))  
        {
            if($row[1] == $x && $row[2] == $y) 
            {
                $again = 1;
            }
            if($row[1] != $x OR $row[2] != $y)
            {
                $again = 0;
            }
        }
    }
    echo "Koordinaten: X = $x / Y = $y";
    $sql = "UPDATE vmap SET x='$x' WHERE username = '$nick'";
    mysql_query($sql) OR die(mysql_error());
     
    ...holiday from happiness...

    ...be water...

    visit: www.silent-wars.de

  2. #2
    denyo-style denyo-style ist offline Mitglied Bronze
    Registriert seit
    Jun 2004
    Beiträge
    33
    Was gibt es denn für eine Fehlermeldung?
    Gibt es eine Fehlermeldung?
    bzw. Was hast du vor?
    Geändert von denyo-style (19.09.05 um 15:50 Uhr)
     
    Der schlimmste Weg, den man wählen kann, ist der, keinen zu wählen.

  3. #3
    Registriert seit
    Apr 2004
    Ort
    Berlin
    Beiträge
    196
    es gibt keine fehlermedlung, er addet die werte nicht in den table. was ich vor habe? das wird ein online game
     
    ...holiday from happiness...

    ...be water...

    visit: www.silent-wars.de

  4. #4
    denyo-style denyo-style ist offline Mitglied Bronze
    Registriert seit
    Jun 2004
    Beiträge
    33
    ich meinte eigentlich, was Du in der while - Schleife vorhast,
    naja, ich gehe davon aus, dass Du in der Tabelle vmap überprüfen willst, ob
    schon $x und $y existieren und erst dann die Werte in die Tabelle einträgst.

    vielleicht wäre dieser Lösungsweg besser:

    PHP-Code:
    $again =1;
    while(
    $again == 1)
    {
        
    $x mt_rand(1,25);
        
    $y mt_rand(1,25);
        
    $sql = @mysql_query("SELECT * FROM vmap WHERE SpalteX = '$x' AND SpalteY = '$y' ");
        
    $exist mysql_num_rows($sql);
        if(
    $exist)
            
    $again 1;
        else
            
    $again 0;
    }
    echo 
    "Koordinaten: X = $x / Y = $y";
    $sql "UPDATE vmap SET x='$x' WHERE username = '$nick'";
    mysql_query($sql) OR die(mysql_error()); 
    So läuft das Skript auch schneller durch, weil nicht immer alle Datensätze der Tabelle vmap abgerufen werden.

    Ich hoffe das hilft Dir weiter.
    Geändert von denyo-style (19.09.05 um 16:09 Uhr)
     
    Der schlimmste Weg, den man wählen kann, ist der, keinen zu wählen.

  5. #5
    Registriert seit
    Apr 2002
    Ort
    HH
    Beiträge
    3.224
    $again nimmt immer den Wert entsprechend der letzten Ergebniszeile an.
    Es gibt keine Fehlermeldung, weil es entweder keinen Fehler gibt oder weil Du die Fehlermeldungen mit @ unterdrückst.

    Einfacher wäre es, wenn Du die Bedingung direkt ins Query aufnimmst:
    PHP-Code:
    $again =true;
    //nur weil ich mir nicht sicher bin, ob 
    //bei PHP im Block deklarierte Variablen
    //auch außerhalb des Blocks sichtbar sind:
    $x=0;
    $y=0;
    while(
    $again) {
        
    $x mt_rand(1,25);
        
    $y mt_rand(1,25);
        
    $sql mysql_query("SELECT x,y FROM vmap WHERE x=$x AND y=$y");
        
    $again = (mysql_num_rows($sql)>0);
    }
    echo 
    "Koordinaten: X = $x / Y = $y";
    $sql "UPDATE vmap SET x='$x' WHERE username = '$nick'";
    mysql_query($sql) OR die(mysql_error()); 
    Du setzt übrigends y nicht in Deinem Update. Ich weiß nicht, ob das so gewollt ist.

    Gruß hpvw

    EDIT: Alternativ könnte eine do-while-Schleife hier Sinn machen:
    PHP-Code:
    do {
        
    $x mt_rand(1,25);
        
    $y mt_rand(1,25);
        
    $sql mysql_query("SELECT x,y FROM vmap WHERE x=$x AND y=$y");
    } while (
    mysql_num_rows($sql)>0);
    echo 
    "Koordinaten: X = $x / Y = $y";
    $sql "UPDATE vmap SET x='$x' WHERE username = '$nick'";
    mysql_query($sql) OR die(mysql_error()); 
    Geändert von hpvw (19.09.05 um 16:15 Uhr)
     
    Warum gibt (fast) keiner im Datenbankforum an, welches DBMS er benutzt?
    Ich gehe im Zweifelsfall ohne Nachfrage von MySQL > 4.1 i.V.m. PHP aus.
    Gewöhnt euch bitte auch an, die Fehlermeldung von mysql_error() zu posten.

  6. #6
    Registriert seit
    Apr 2004
    Ort
    Berlin
    Beiträge
    196
    Alos mit der Variante:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    $again =1; 
    while($again == 1) 
    { 
        $x = mt_rand(1,25); 
        $y = mt_rand(1,25); 
        $sql = @mysql_query("SELECT * FROM vmap WHERE x = '$x' AND x = '$y' "); 
                    $exist = mysql_num_rows($sql); 
                    if($exist) 
                        $again = 1; 
                    else 
                        $again = 0; 
    } 
    echo "Koordinaten: X = $x / Y = $y"; 
    $sql = "UPDATE vmap SET x='$x' y='$y' WHERE username = '$nick'"; 
    mysql_query($sql) OR die(mysql_error());

    kommt folgender fehler...
    You have an error in your SQL syntax near 'y='11'
    der kommt bei x aber nicht.

    jetz probier ich mal deine hpvw

    EDIT:
    probiert, aber er addet die variablen nicht in die datenbank...
    Geändert von philishake (19.09.05 um 16:26 Uhr)
     
    ...holiday from happiness...

    ...be water...

    visit: www.silent-wars.de

  7. #7
    denyo-style denyo-style ist offline Mitglied Bronze
    Registriert seit
    Jun 2004
    Beiträge
    33
    in deinem UPDATE Befehl fehlt das Komma bei
    Code :
    1
    
    ...SET x = '$x', y = '$y'...
    Geändert von denyo-style (19.09.05 um 16:51 Uhr)
     
    Der schlimmste Weg, den man wählen kann, ist der, keinen zu wählen.

  8. #8
    Registriert seit
    Apr 2004
    Ort
    Berlin
    Beiträge
    196
    jetzt kommen keine fehler mehr aber er addet immernoch nicht die x und y werte zur datenbank, langsam dreh ich durhc, ist doch alles richtig was wir machen ode r?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    do { 
        $x = mt_rand(1,25); 
        $y = mt_rand(1,25); 
        $sql = mysql_query("SELECT x,y FROM vmap WHERE x=$x AND y=$y"); 
    } while (mysql_num_rows($sql)>0); 
    echo "Koordinaten: X = $x / Y = $y"; 
    $sql = "UPDATE vmap SET x='$x',y='$y' WHERE username = '$nick'"; 
    mysql_query($sql) OR die(mysql_error());
     
    ...holiday from happiness...

    ...be water...

    visit: www.silent-wars.de

  9. #9
    Julian Maicher Julian Maicher ist offline Mitglied Smaragd
    Registriert seit
    Jan 2004
    Ort
    Paderborn
    Beiträge
    1.210
    Probier es mal so:
    PHP-Code:
    $sql "UPDATE vmap SET x=$x,y=$y WHERE username = '$nick'"
     

  10. #10
    Registriert seit
    Apr 2004
    Ort
    Berlin
    Beiträge
    196
    hi,leute, ich habe den table einfach mal gelöscht und neu generiert. jetzt klappt es danke trotzdem

    mfg phil
     
    ...holiday from happiness...

    ...be water...

    visit: www.silent-wars.de

Ähnliche Themen

  1. mysql und Datenbank Fehler wir brauchen Hilfe.
    Von FDGU im Forum Stellenangebote (unentgeltlich)
    Antworten: 1
    Letzter Beitrag: 08.09.10, 18:13
  2. Fehler beim Ansprechen der MySQL Datenbank
    Von atlantyz im Forum PHP
    Antworten: 16
    Letzter Beitrag: 05.07.08, 20:56
  3. Problem mit MySQL-Datenbank - wo ist der Fehler
    Von nicobischof im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 01.08.05, 18:11
  4. Fehler beim Anlegen von Tabelle in MySQL-Datenbank
    Von Robert Steichele im Forum PHP
    Antworten: 7
    Letzter Beitrag: 25.01.05, 22:02
  5. Antworten: 4
    Letzter Beitrag: 13.09.04, 20:36