[SQL allgemein] Eigenartiger Fehler bei SQL Abfrage

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

  • [SQL allgemein] Eigenartiger Fehler bei SQL Abfrage

    Hi,

    ich habe mir eine kleine SQL Datenbank Abfrage mittels PHP erstellt. Das funktionierte die ganze Zeit ohne Probleme. Nun bin ich auf einen neuen Server mit den Daten umgezogen und seit dem habe ich ein Problem, bei dem ich nicht weiß was falsch ist.

    In der index.php wird die SQL DB komplett durchsucht, und angezeigt, wieviel Einträge vorhanden sind.

    Dann kann man irgendwo drauf klicken (z.B. "Fahrzeuge"). Dieses wird dann an eine zweite Datei übergeben, die dann alle Fahrzeuge ausliest, sortiert und ausgibt.
    Leider funktioniert das aber nicht. Bei der zweiten Datei wird nur der Hintergrund und ein Hintergrundbild geladen (beide Infos stehen in einer dritten Datei, die über die zweite aufgerufen werden). Alle anderen Sachen weren nicht geladen. Das Design der Tabelle und der Inhalt bleiben einfach weg.
    Es wird keine Fehlermeldung ausgegeben. Es passiert einfach gar nichts.

    Da er mir in der ersten Datei die richtigen Einträge (die Anzahl der Einträge) anzeigt, gehe ich mal davon aus, dass meine Userdaten richtig sind.
    Also habe ich die SQL Datei und die PHP Dateien auf meinem Rechner mal laufen lassen. Da geht alles so wie es sein soll.
    Also denke ich mal, dass auch im Quellcode nichts falsch ist.

    Hat einer von Euch eine Idee, wo ich was falsch gemacht haben könnte?

    Ich stehe etwas auf dem Schlauch!

    Danke schon mal im Vorraus!

    Ben

  • #2
    Re: [SQL allgemein] Eigenartiger Fehler bei SQL Abfrage

    Original geschrieben von CalibraDriver
    Dieses wird dann an eine zweite Datei übergeben
    wird es denn auch auf der zweiten seite wieder richtig ausgelesen?

    stichwort register_globals.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Das weiß ich nicht, wie ich das testen soll. Er zeigt mir keine Fehlermeldung an. Er zeigt mir gar nichts an.

      Aber jetzt wo Du das schreibst... In der Mail von dem Admin steht folgender Satz: "Serverpfad hat sich geändert: /var/www/webXXX/IhrVerzeichnis register_globals steht auf Off safe_mode steht auf On"

      Hängt das damit zusammen? Und wie stelle ich das um? Geht das über Confix, FTP???

      Kommentar


      • #4
        Und wie stelle ich das um? Geht das über Confix, FTP???
        du wirst deine programmierweise wohl anpassen müssen.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          @derHund: Genau das wollte ich nicht hören!!!

          Verdammt. Ich bin doch kein Informatiker, ich war froh die Abfrage hin zu bekommen.

          Was muss ich denn in meiner zweiten Datei da abändern? Muss ich da viel ändern?
          Ich habe hier mal einen kleinen Ausschnitt der Datei angehängt. Ab da winderholt die sich nur noch.

          PHP-Code:
          <?
          include ("userdata.php");
          include ("access.php");
          include ("style.php");
          include ("css.php");

          if ($act!="")     {
          switch ($act)    {
              case "Mitglieder":
              $abfrage = "SELECT id,vorname,name FROM $act order by vorname";
              $ergebnis=mysql_query($abfrage);
                  while (list($id,$mitgliedervorname,$mitgliedername) = mysql_fetch_row($ergebnis))     {
                          $mitglieder.="<a title='Springt zu dem Mitglied: $mitgliedervorname $mitgliedername' href='tabelle.php?id=$id&act=$act'>$mitgliedervorname $mitgliedername<BR>\n";
                      }
                  
                  echo "<div align='$ausrichtung'><table width='$tabbreite' border='0' bgcolor='$tabrahmen' cellpadding='1' cellspacing='0'>
              <tr>
                  <td><table width='100%' border='0' bgcolor='$tabkopf1' cellpadding='1' cellspacing='0'>
                      <tr>
                          <td width='60%'><font face='$font' size='$fontsize1' color='$tabkopfcolor1'><b>Akakraft Datenbank<b></td>
                          <td width ='40%'><font face='$font' size='$fontsize1' color='$tabkopfcolor1'><b>Eintr&auml;ge</td>
                      </tr>
                  <td colspan='1' bgcolor='$tabcolor1'><font face='$font' size='$fontsize2' color='$fontcolor2'><b>$mitglieder</b></td>
                  <td colspan='1' bgcolor='$tabcolor1'><font face='$font' size='$fontsize2' color='$fontcolor1'><b>$counts</b></td>
              </tr> </table></table>";
                  break;
          ...
          ...
          ...
          ?>
          Ben

          Kommentar


          • #6
            register global beduetet, das alle "global" deklarierten variablen überall zur verfügung stellen

            Lösung:

            die benötigten variablen für ein script mit übergeben ($_GET / $_POST) und den code anpassen

            $alte_globaler_variablernmae = $GET['jetztmitübergebenevariable'];

            oder z.b. $_SESSION benutzen

            oder: k.A. was es noch gibt

            Kommentar


            • #7
              Hab das jetzt mal versucht, aber nicht hin bekommen. Knnst Du mir an Hand meines Bsp. mal zeigen, wie das geht???

              index.php:
              PHP-Code:
              <?PHP
              include ("userdata.php");
              include (
              "access.php");
              include (
              "style.php");
              include (
              "css.php");

              $categories="";
              $counts="";

              $x=1;
              $i=1;
              $categorie[1]="Mitglieder"//Das sind die Kategorien
              $categorie[2]="Fahrzeuge";
              $categorie[3]="Veranstaltungen";
              $categorie[4]="Lieferanten";
              $categorie[5]="Händler";

              while (
              $i<6) {
                  
              $categories.="<a title='Springe zur Kategorie: $categorie[$i]' href='categorie.php?act=categorie[$i]' target='_self'>$categorie[$i]</a><br>";
              $i++;
              }

              while (
              $x<6) {
                  
              $result mysql_query("SELECT * FROM $categorie[$x]");   
                  
              $menge=mysql_num_rows($result);
                  
              $counts.="$menge<br>";
                  
              $x++;
              }

              include (
              "header.php");

              ?>
              Und wie mache ich das am besten in meiner zweiten Datei? Da erstelle ich am besten am Anfang eine neue Variable, damit ich nicht immer mit dem $GET['Variable'] arbeiten muss. Oder???

              Kommentar


              • #8
                ich vermute mal du willst $counts im nächsten script benutzen.

                am anfang eines jeden scriptes
                <?
                session_start();
                ...

                in diesem nach der letzten whileschleife
                $_SESSION['variablenname'] = $counts;

                und im folgenden script

                <?
                session_start();
                echo $_SESSION['variablenname'];
                ...

                Kommentar


                • #9
                  Sorry, habe vergessen dazu zu schreiben, was ich übergebe. Ich übergebe mit act die categorie an die nächste Datei.

                  Aber jetzt habe ich mal ein Bsp., wie es aussehen sollte. Werde es dann mal testen und berichten, ob ich es hin bekommen habe.

                  Kommentar


                  • #10
                    Also das mit Sessions ist überflüssig.

                    Deine index.php ist in Ordnung.
                    Das Problem ist in der Datei categorie.php zu finden.
                    Jetzt, wo Register_Globals off ist, kannst Du nicht mehr einfach so die Variable $act benutzen (etwa: if ($act!="") ...) und erwarten, dass sie richtig gesetzt ist, nur weil der Link hierhin so lautet:
                    href="category.php?act=blabla"

                    sonder Du musst Dir die Variable vom Link erst "holen". Das geht so:

                    $act = $_REQUEST['act'];

                    Danach kannst Du sie ganz normal weiterbenutzen. Ich würde also an deiner Stelle einfach nur diese Zeile vor dem if ($act!="") (gleich nach den includes) einfügen. Das wars! Dann müsste es gehen.

                    Klappts?

                    Kommentar


                    • #11
                      Sorry, das ich mich erst jetzt wieder melde. Musste nur mal wieder etwas Zeit der Uni widmen.

                      Hab jetzt die Variante von zissakos ausprobiert. Funzt wunder bar, DANKE!!!

                      Gruß Ben

                      Kommentar


                      • #12
                        Nu hätte ich da aber noch mal eine Frage!

                        Ich bekomme das irgendwie nicht so ganz hin.

                        In der Datenbank kann man sich auch Bilder anschauen. Dies mache ich über eine Schleife, mit der die DB abgefragt wird, wieviele Bilder vorhanden sind und dann sollen die Thumb Bilder angezeigt werden.

                        Diese sind auf dem Server in dem Verzeichniss:
                        Code:
                        /db/images/fahrzeuge/"Fahrzeug_ID"/"Bild_ID"_thumb.jpg
                        Die richtigen Bilder liegen in folgender Art auf dem Server:
                        Code:
                        /db/images/fahrzeuge/"Fahrzeug_ID"/"Bild_ID".jpg
                        diese sollen per klick auf die Thumbs aufgerufen werden.

                        Nun weiß ich aber nicht genau wie ich das richtig schreibe.
                        Hier mal der Code:

                        PHP-Code:
                        while (list ($image_id,$fahrzeug_id,$bild,$text) = mysql_fetch_row ($imageerg)) {
                        $fotolink.="<title='Springt zu dem Bild: $bild' href='/db/images/fahrzeuge/$fahrzeug_id/$bild.jpg'> <IMG SRC='/db/images/fahrzeuge/$fahrzeug_id/$bild _thumb.jpg'>"
                        Zur erklärung ich möchte mit der Variablen "$bild" die _thumbs öffnen. Ich ahbe keine extra Variable "$bild_thumb".

                        Wahrscheinlich habe ich das bei dem "href" auch schon falsch gemacht, aber es funktioniert irgendwie.

                        Danke schon mal im Voraus.

                        Gruß Ben

                        Kommentar


                        • #13
                          irgendwie ist das link tag falsch.

                          es muss heissen <a href="blabla" title=""> ... </a>

                          bei der fehlen beide a's, sowohl das erste als auch das abschließende.

                          Versuch mal :

                          <a title=....

                          und nach dem <img ...> ein </a>

                          Bin grad online. Sag bescheid obs klappt.

                          Kommentar


                          • #14
                            Konnte nicht gleich zurück schreiben, war unterwegs.

                            Habe nun mal die Sachen gemacht, die Du vorgeschlagen hast. Klappt leider immer noch nicht. Ist zuwar besser, weil der Link nun klappt. Aber mein Problem von vorhin besteht immer noch, weil ich nicht weiß wie ich in diese Zeile unterscheide zwischen Variable und das was an die Variable noch angehängt werden soll, nämlich "_thump.jpg" soll direkt an die Variable "$bild" angehängt werden.

                            Ich stelle einfach mal meinen alten Code und meinen neuen Code hier rein, dann wird denke ich klar, was ich meine (beim alten hat es geklappt, den kann ich aber nicht einfach übernehmen).

                            Alter Code:
                            PHP-Code:
                            while (list ($image_id,$fahrzeug_id,$bild,$text) = mysql_fetch_row ($imageerg)) {

                            echo 
                            "$bild";
                            echo 
                            '<a href="/db/images/fahrzeuge/' $fahrzeug_id '/' $bild '.jpg"> <IMG SRC="/db/images/fahrzeuge/' $fahrzeug_id '/' $bild '_thumb.jpg" alt="Springt zu dem Bild: ' $bild '">';
                                        } 
                            Neuer Code:
                            PHP-Code:
                            while (list ($image_id,$fahrzeug_id,$bild,$text) = mysql_fetch_row ($imageerg)) {

                            $fotolink.="<a href='/db/images/fahrzeuge/$fahrzeug_id/$bild.jpg' title='Springt zu dem Bild: $bild'> <IMG SRC='/db/images/fahrzeuge/$fahrzeug_id/$bild._thumb.jpg'></a>";
                                } 
                            Ich habe den neuen genommen, weil ich den alten nicht an das Design von der Datenbank / Tabelle angepasst bekommen habe.

                            Wie gesagt ich bin Anfänger und kenne noch nicht den Unterschied zwischen den folgenden drei Symbolen: " ' . in dem oben genannten Zusammenhang. Bei dem "Echo" Befehl kann ich mit den " " arbeiten, bei den Variablen Bezeichnungen muss ich mit den Dingern ' ' arbeiten...

                            Danke für die Gedult, die Ihr für mich aufbringt!!!

                            Ben

                            Kommentar


                            • #15
                              PHP-Code:
                              $fotolink.="<a href='/db/images/fahrzeuge/$fahrzeug_id/$bild.jpg' title='Springt zu dem Bild: $bild'> <IMG SRC='/db/images/fahrzeuge/$fahrzeug_id/$bild._thumb.jpg'></a>"

                              Untertschied zwischen ' und "

                              probier es doch einfach mal aus,

                              erstelle eine Test.php und rufe sie auf
                              PHP-Code:
                              $deinevar 'Ja es geht';

                              echo 
                              'das ist ein test ob die var ersetzt wird: $deinevar oder auch nicht';

                              echo 
                              "das ist ein test ob die var ersetzt wird: $deinevar oder auch nicht";

                              echo 
                              'das ist ein test ob die var ersetzt wird: '.$deinevar.' oder auch nicht';

                              echo 
                              "das ist ein test ob die var ersetzt wird: ".$deinevar." oder auch nicht"
                              mfg
                              marc75

                              <Platz für anderes>

                              Kommentar

                              Lädt...
                              X