Addition von zwei Variablen, bzw. einer Variablen und eriner Zahl

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Addition von zwei Variablen, bzw. einer Variablen und eriner Zahl

    Hallo zusammen,


    ich komme nicht mehr weiter. Mag evtl. trivial sein, aber ich bekomme es nicht hin.

    Ich habe eine Datenbank in der Städte mit den jeweiligen Koordinaten abgelegt sind. Diese will ich in HTML mit einer Grafik kennzeichnen. Funktioniert auch soweit hervorragend.

    Jetzt ist es aber so, dass ich bei absoluter Positionierung die Städte mit negativem Werten auf der x-Achse nicht sehen kann. Also habe ich eine weitere Tabell "faktor" angelegt, wo im feld "gesamt" der Umrechnungfaktor "600" abgelegt ist. Beim Versuch diese beiden Werte zu addieren, scheitere ich.

    So fuktioniert es noch:

    PHP-Code:
    <?php

    $link 
    mysql_connect("localhost","user","passwort");
    mysql_select_db("datenbank",$link);
    $query "select * from stadt, faktor  order by x_koord";

    $x x_koord;                    <-----    um den geht es
    $y 
    y_koord;

    $result mysql_query($query,$link);
    $num mysql_numrows($result);

        for (
    $i 0$i $num$i++)
            {
            
    $row mysql_fetch_array($result);

                    
    printf("<div style=\"position:absolute; left:$row[$x]px; top:$row[$y]px; \">
    <img src=\"city.gif\" alt=\"
    $row[stadtname]\" title = \"$row[stadtname]\"></div>");
                  
            }
    ?>
    Ausgabe in HTML:

    <div style="position:absolute; left:-580px; top:33px; "> ....und so weiter.


    So geht es nicht mehr:

    PHP-Code:
    <?php

    $link 
    mysql_connect("localhost","user","passwort");
    mysql_select_db("datenbank",$link);
    $query "select * from stadt, faktor  order by x_koord";

    $x x_koord gesamt;           <----------    der hier
    $y 
    y_koord;

    $result mysql_query($query,$link);
    $num mysql_numrows($result);

        for (
    $i 0$i $num$i++)
            {
            
    $row mysql_fetch_array($result);

                    
    printf("<div style=\"position:absolute; left:$row[$x]px; top:$row[$y]px; \">
    <img src=\"city.gif\" alt=\"
    $row[stadtname]\" title = \"$row[stadtname]\"></div>");
                  
            }
    ?>
    Ausgabe in HTML:

    <div style="position:absolute; left:Sant Tönispx; top:33px; ">

    Auch z.B. $x = x_koord + 600 hat nicht zum Ziel geführt.

    Wäre toll, wenn mir jemand auf die Sprünge helfen könnte.

    Gruß,
    weltins
    Zuletzt geändert von weltins; 01.09.2006, 19:13.

  • #2
    1. Brich mal bitte deinen Code um. Mag nicht horizontal scrollen.

    2.
    $query = "select * from stadt, faktor order by x_koord";

    $x = x_koord; <----- um den geht es
    wo kommt denn das x_koord auf einmal her? oder müssen wir das nicht wissen? am besten du schreibst statt * die felder rein, die du benutzt!

    3. muss es nicht mysql_num_rows heißen?

    4. geht es nur um die addition von zwei werten oder was ist deine frage? da soll kein negativer wert bei rauskommen?

    dann nimm doch den betrag davon.

    if($x <= 0)
    {
    $x = $x * -1;
    }

    Kommentar


    • #3
      So...habe den Code mal in der Hälfte umgebrochen.

      zu 2)
      Ich selektiere zwei Tabellen - stadt und faktor. in stadt ist der Stadtname und die Koordinaten x_koord und y_koord abgelegt. In faktor ist gesamt mit dem Wert 600 abgelegt.

      zu 3)
      nein

      zu 4)
      Ich benötige nicht einfach den positiven Wert. Ich benötige alle Koordinaten so wie sie sind. Da aber negative Koordinaten nicht angezeigt werden, soll das Koordinatensystem um 600 px nach rechts verschoben werden.
      Also jeder x_koord-Wert + 600

      Kommentar


      • #4
        Original geschrieben von weltins zu 2)
        Ich selektiere zwei Tabellen - stadt und faktor. in stadt ist der Stadtname und die Koordinaten x_koord und y_koord abgelegt.
        x_koord ist eine konstante, wo ist die zuweisung?

        wenn es eine variable sein soll, fehlt ein $ und ebenfalls die frage, wo ist die zuweisung?

        setze error_reporting(E_ALL); an den anfang des scriptes.

        Kommentar


        • #5
          Hallo 3DMax,

          ich bin mir nicht sicher, was Du meinst...

          Ja, x_koord ist eine Konstante. Ich wüsste nicht, wie ich sie anders zuweisen sollte, als ich es getan habe. Da mein Script durchaus funktionsfähig ist, zeigt mein erstes Beispiel.

          Beispiel:

          Das Table stadt enthält folgende Werte....

          name x_koord y_koord

          eins -580 33
          zwei 77 217

          Wie an meiner HTML-Ausgabe von Script 1 fuktioniert auch alles wie gewünscht:

          <div style="position:absolute; left:-580px; top:33px; ">
          <div style="position:absolute; left:77px; top:217px; ">

          Ich verstehe nicht, warum das hinterfragt wird...es funktioniert!!!!!

          Das einzige, was ich möchte ist, dass

          <div style="position:absolute; left:-580px; top:33px; ">

          umgesetzt wird in

          <div style="position:absolute; left:20px; top:33px; ">

          Also 600px addiert werden.

          Dieses habe ich in Script 2 versucht und bin fehlgeschlagen, da die Addition der beiden Werte (x_koord + gesamt) nicht funktioniert.

          Auch ein setzen von error_reporting(E_ALL) ist hier nicht zielführend (siehe beide angeführte Ergebnisse), da das Script nicht auf Fehler läuft, sondern lediglich nicht das gewünschte Ergebnis liefert.

          Ich denke eher, dass ich nicht richtig addiere, bzw. die Felder nicht richtig definiert habe.

          Das, was funktioniert zu hinterfragen, hilft mir leider nicht weiter

          Kommentar


          • #6
            PHP-Code:
            echo "html kram" . ((int)($row[$x]) + 600) . "wieder html"
            wenn das läuft, kannst du "600" durch deine konstanten ersetzen.

            Kommentar


            • #7
              Hallo penizillin,

              ich glaube, ich brauche jetzt wirklich einmal Dummy-Hilfe.

              Ich habe zwei Dinge ausprobiert:

              (mit "")

              PHP-Code:
              printf("<div style=\"position:absolute; left:"((int)($row[$x]") + 600)px; top:$row[$y]px; \">
              <img src=\"city.gif\" alt=\"
              $row[stadtname]\" title = \"$row[stadtname]\" ></div>"); 
              Ergebnis:

              Parse error: parse error, unexpected '

              (ohne "")

              <div style="position:absolute; left(int)(-580) + 600)px; top:33px; ">

              Kommentar


              • #8
                http://php-resource.de/forum/showthr...ight=belehrung

                Kommentar


                • #9
                  Hallo penizillin,

                  vielen Dank für den Verweis. Ich konnte dort aber mehr über die Verwendung von richtig oder falsch lernen, als eine korrekte Kodierung für meinen speziellen Fall finden.

                  Da Du da offensichtlich etwas mehr Ahnung hast.... wäre es möglich, mir die entsprechende Passage editiert zurückzugeben? Danach erkenne ich wahrscheinlich auch meinen Fehler besser.

                  Wäre toll!

                  Gruß,
                  weltins

                  Kommentar


                  • #10
                    PHP-Code:
                    <?php

                    $link 
                    mysql_connect("localhost","user","passwort");
                    mysql_select_db("datenbank",$link);
                    $query "select * from stadt, faktor  order by x_koord";

                    $x x_koord gesamt;           <----------    der hier
                    $y 
                    y_koord;

                    $result mysql_query($query,$link);
                    $num mysql_numrows($result);

                        for (
                    $i 0$i $num$i++)
                            {
                            
                    $row mysql_fetch_array($result);

                                    
                    printf("<div style=\"position:absolute; left:$row[$x]px; top:$row[$y]px; \">
                    <img src=\"city.gif\" alt=\"
                    $row[stadtname]\" title = \"$row[stadtname]\"></div>");
                                  
                            }
                    ?>
                    das obige Original ist doch ein Unsinn, nach allen menschlichen Faktoren müsste es doch so heissen:
                    PHP-Code:
                    <?php

                    $link 
                    mysql_connect("localhost","user","passwort");
                    mysql_select_db("datenbank",$link);
                    $query "select * from stadt,faktor order by x_koord";
                    $result mysql_query($query,$link) or die(mysql_error());

                    while (
                    $row mysql_fetch_array($result))
                    {
                      
                    $x $row['x_koord'] + $row['gesamt'];
                      
                    $y $row['y_koord'];
                      
                    printf("<div style=\"position:absolute; left:$x px; top:$y px; \">
                          <img src=\"city.gif\" alt=\"
                    {$row['stadtname']}\" title=\"{$row['stadtname']}\"></div>");
                    }
                    ?>
                    C'est tout, fini!

                    EDIT:
                    den Kram mit $gesamt noch nachgelesen und gefixt
                    und das title = auf title= gebessert.

                    Zuletzt geändert von gleiwitz19; 02.09.2006, 02:07.

                    Kommentar


                    • #11
                      addition von zwei Spalten

                      Variante Rechnung in mysql:
                      PHP-Code:
                      <?php
                      $link 
                      mysql_connect("localhost","user","passwort");
                      mysql_select_db("datenbank",$link);
                      $query "select x_koord+gesamt as x, y_koord as y, stadtname 
                                       from stadt,faktor order by x_koord"
                      ;
                      $result mysql_query($query,$link) or die(mysql_error());
                      while (
                      $row mysql_fetch_array($result))
                      {
                          
                      printf("<div style=\"position:absolute; left:$_row[x]px; top:$_row[y]px; \">
                            <img src=\"city.gif\" alt=\"
                      $row[stadtname]\" title=\"$row[stadtname]\"></div>");
                      }
                      ?>
                      PS @überbreite: in der Vorschau hat es mehr Platz, weil die Poster-Spalte fehlt.

                      Kommentar


                      • #12
                        Hallo gleiwitz19,

                        vielen Dank. Variante 1 hat super fuktioniert.

                        Ich werde auch Variante 2 ausprobieren, ich glaube, die ist für meine Zwecke besser geeignet.

                        Gruß,
                        weltins

                        Kommentar


                        • #13
                          Re: Addition von zwei Variablen, bzw. einer Variablen und eriner Zahl

                          Dürfte ich noch einmal deine Fehler aufzeigen?

                          PHP-Code:
                          $x x_koord;
                          $y y_koord
                          Du greifst nicht auf Daten aus der Datenbank zu, weil du den Query schließlich erst weiter unten abschickst! PHP wird denken, du willst die Konstanten x_koord und y_koord verwenden, müsstest auch dementsprechend eigentlich eine Fehlermeldung erhalten!
                          Da PHP diese Konstanten nicht findet, verwendet er die Namen x_koord und y_koord als Zeichenkette, in $x steht also 'x_koord' und in $y steht 'y_koord'!

                          PHP-Code:
                          $num mysql_numrows($result); 
                          die Funktion mysql_numrows sollte eher diese hier sein!

                          PHP-Code:
                          (...) $row[$x] (...) $row[$y] (...) 
                          $row ist ein Array mit den Indizes 'x_koord', 'y_koord' und 'stadtname'. Du greifst jetzt durch $x und $y, in denen ja, wie oben erklärt, 'x_koord' und 'y_koord' steht, eher zufällig auf die richtigen Arrayelemente zu. Richtig wäre natürlich
                          PHP-Code:
                          (...) $row['x_koord'] (...) $row['y_koord'] (...) 
                          PHP-Code:
                          (...) $row[stadtname] (...) 
                          Wieder gleicher Fehler wie oben, du versuchst mit einer Konstanten zu arbeiten, die es nicht gibt! Und darum wandelt PHP die (nicht bekannte) Konstante in den String 'stadtname' um, so dass du wieder, eher zufällig, auf das richtige Arrayelement zugreifst!!


                          Die Kritik an deinem Quellcode war also durchaus berechtigt!! Die Lösung hat man dir aber ja bereits schon gegeben...

                          Kommentar


                          • #14
                            Original geschrieben von weltins
                            Hallo gleiwitz19,

                            vielen Dank. Variante 1 hat super fuktioniert.

                            Ich werde auch Variante 2 ausprobieren, ich glaube, die ist für meine Zwecke besser geeignet.

                            Gruß,
                            weltins
                            Den Dank nehm ich gerne entgegen. Gruss.

                            Kommentar

                            Lädt...
                            X