Script funktioniert nach Serverumzug nicht mehr

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

  • Script funktioniert nach Serverumzug nicht mehr

    Guten Abend allerseits,

    ich habe mir mal ein Script zum verwalten von Filmen gebastelt, nun bin ich mit dem Webspace auf einen anderen Server umgezogen (Der Provider blieb der Gleiche)
    Auf dem Server läuft php 4.4.0 und MYSQL 4.1.13.

    Nun zu meinem Problem ich sortiere die Filme per Variabel, daher wenn ich alle Filme, die mit A anfangen anzeigen lassen möchte dann übergebe ich das für die Datenbankabfrage mit "A%", für alle übergebe ich nur "%", wenn ich diesen Link aufrufe kommt die Meldung: "Zugriff nicht möglich!", wenn ich zum anzeigen der Filme die mit Zahlen anfangen "zahl" übergebe, klappt alles wunderbar. Daher scheint es Probleme mit dem "%" Zeichen zu geben. Hat jemand ne Ahnung woran es liegen könnte?

    Gruß
    Md

  • #2
    Also wenn du nur das '%' Zeichen verwendest, dann gibt das afaik keine gültige Query. In diesem Falle willst du aber ja alle DS auslesen
    Warum in diesem Falle denn nicht
    PHP-Code:
    $query "SELECT titel,regisseur FROM filme"
    So würdest du einfach alle Felder titel und regisseur auswählen und das dürfte in etwa das sein was du willst.

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      PHP-Code:
      if(!isset($mode))
      {
        
      $mode="dt";
      }
      if(
      $mode == dt )
      {
      if(!
      $abc) { $abc "%"; }
      if(
      $abc != "zahl") { $ABC "like '$abc'"; }
      else { 
      $ABC "REGEXP '^[0-9]'"; }
      $select mysql_query("select * from filme WHERE filmname $ABC"); 
      $reihen mysql_num_rows($select); 
      $zeigen floor($reihen 20); 
      if(!
      $t) { $t 0; } 
      if(!
      $start) { $start 0; }
      if(!
      $aussuchen) { $aussuchen name; } 
      if ( 
      $aussuchen == name ) {
      $result mysql_query("select * from filme WHERE filmname $ABC ORDER BY Filmname limit $start,20"); }
      elseif ( 
      $aussuchen == groesse ) {
      $result mysql_query("SELECT * FROM filme WHERE filmname $ABC ORDER BY Groesse limit  $start,20"); }
      elseif ( 
      $aussuchen == format ) {
      $result mysql_query("SELECT * FROM filme WHERE filmname $ABC ORDER BY Format limit $start,20 "); }
      elseif ( 
      $aussuchen == time ) {
      $result mysql_query("select * from filme WHERE filmname $ABC ORDER BY time DESC limit $start,20"); } 
      Das ist der Teil in dem die Auswahl, der Filme stattfindet (Ob alle oder nur ein gewissen Buchstabe). Das Script hat auf dem altem Server tadelos funktioniert nur auf dem Neuen sind die Probleme aufgetaucht und ich konnte wie gesagt im Zusammenhang mit dem "%" Zeichen das Problem eingrenzen, denn der Rest funktioniert nur nicht das Auswäheln von einem Buchstaben.

      Gruß
      Md

      Kommentar


      • #4
        Also schreib mal
        PHP-Code:
        error_reporting(E_ALL); 
        an den Anfang des Scripts und korrigier mal alle angemotzten Fehler.

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          morgen...

          ich kann keinen echten fehler finden... es ist zwar etwas durcheinander, und du solltest dich vielleicht mal entscheiden, ob du nun groß, klein oder alles quer bunt schreibst, aber das dürfte der funktion keinen abbruch tun..

          auch ein zeichensatz-problem kann man (fast) ausschließen, da die betroffenen zeichen in den unterschiedlichen zeichensätzen an gleicher stelle zu finden sind...

          *grübel*....

          bist du dir sicher, dass deine anführungszeichen richtig escaped werden, und sich nicht irgendwo noch / hinzumogeln.. ?

          ansonsten müsste es funktionieren in der theorie....

          interessant wäre zu wissen, was ganz zu beginn in $abc drin steht (bzw. woher es kommt) und auch, wie die daraus gebastelte fertig query real aussieht... (echo)...

          dann vielleicht, an welcher stelle die "zugriff nicht möglich" ausgabe erzeugt wird.. vielleicht liegt der fehler ganz woanders, denn LIKE 'A%' und auch LIKE '%' sind gültig und sollten zu den gewünschten ergebnissen führen... es hängt imho nicht am %-Zeichen...

          greetz, high
          Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
          When everything else fails, manipulate the data...
          Beschriftungen / Großformatdruck / Werbemittel

          Kommentar


          • #6
            Zu Beginn steht in $abc nichts drinn, allerdings übergebe ich die Variablen per URL, daher sieht meine URL so aus: filme.php?mode=dt&start=&t=&aussuchen=name&abc=%

            mode ist dafür zuständig, ob ich alle FIlme auf einmal anzeigen lasse oder Seitenweise.
            start bestimmt den Anfang ab wann die Datensätze aus der DB ausgelesen werden sollen.
            t ist für die Nummerierung der angezeigten Filme zuständig
            aussuchen bestimmt die Sortierreihenfolge ob nach Name, Größe, Datum, etc.
            abc schränkt die Anzeige aus der Datenbank auf einzelne Buchstaben bzw. die Zahlen ein.

            gruß
            Md
            Zuletzt geändert von Murderdeath; 31.10.2006, 04:23.

            Kommentar


            • #7
              hallochen..
              da kommen wir der sache doch schon näher..

              du brauchst kein abc=% übergeben, da du folgendes im code hast...

              if(!$abc) { $abc = "%"; }

              tust du es doch, musst du sicherstellen, dass deine parameter auch wieder decodiert werden... (die werden ja urlencoded geliefert) oder er verucht da etwas automatisch zu decodieren, wo es nichts zu decodieren gibt.. möglicherweise hat dein alter server intern rawurlencoded (also mit + zeichen) und der neue urlencodet (also mit % zeichen) ... dann würde das erklären, warum er das übergebene % falsch umsetzt..
              however...
              macht er denn nur probleme, wenn es darum geht, alle aufzulisten, oder auch zB bei A% ?...

              greetz, high
              Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
              When everything else fails, manipulate the data...
              Beschriftungen / Großformatdruck / Werbemittel

              Kommentar


              • #8
                Er macht überall Probleme wo das "%" Zeichen auftaucht, daher wenn ich alle anzeigen lasse und auch bei den einzelnen Buchstaben, z.B.: "A%" oder "Z%". für die Zahlen übergeben ich ja die Variable "Zahl"

                Kommentar


                • #9
                  Original geschrieben von Murderdeath
                  Er macht überall Probleme [...]
                  Verschone uns bitte mit Posting dieser Art, deren Informationsgehalt gegen Null geht.

                  Stelle dein error_reporting auf E_ALL, wie es in den Regeln steht - dann bekommst du für solchen Murks wie if($mode == dt ) schon mal eine Meldung.

                  Und dann debugge dein Script - mache Kontrollausgaben für die Werte, die ihm übergeben werden, steht da drin, was du erwartest; mache Kontrollausgaben für andere vom Script verwendete Variablen; mache Kontrollausgaben um zu schauen, in welche Abfragezweige gesprungen wird, etc.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Man ist der Ton hier schroff geworden...Es liegt doch eindeutig an dem "%" Zeichen...werden nun das Script umschreiben, damit sas "%" nicht mehr in der URL erscheint...aber etwas enttäuscht bin ich schon...scheinbar sind hier einige angenervt von Leute die halt weniger von scripten verstehen

                    Kommentar


                    • #11
                      An solche Antworten gewöhnt man sich hier..
                      wahsaga hat da ein besonderes Talent dafür.. Ist mir schon öfter aufgefallen.. aber man darf ja dem Mod nicht quer kommen.. sonst fährt er richtig harte geschütze auf.. was ist das eigentlich.. männliches Imponiergehabe??.. a'la.. ich hab "Moderatror" unter meinem Nickname?...

                      @wahsaga.. wer lesen kann ist klar im Vorteil.. ich hatte ja explizit danach gefragt... insofern war sein Post doch absolut legitim.. oder hab ich was verpasst?

                      greetz, high
                      Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                      When everything else fails, manipulate the data...
                      Beschriftungen / Großformatdruck / Werbemittel

                      Kommentar


                      • #12
                        Prozentzeichen % sind in einer url nicht erlaubt, das ist alles. Ich habe mir schon lang gedacht, dass $abc aus dem query string kommt. siehe thread http://www.php-resource.de/forum/sho...hreadid=77010, vierter Beitrag.

                        Der alte server hat % ignoriert, der neue nicht, eventuell schluckt ein mod-rewrite dieselben. Verwende '*' stattdessen oder was immer du schon beschlossen hast.

                        Wenn *ahsag* nicht meine Beiträge löschen würde, hättest Du die richtige Antwort schon seit gestern (und weniger falsche).

                        Viel Glück.

                        Kommentar


                        • #13
                          .. gemeint ist, so wie du % verwendet hast, gehen % nicht. Sie dienen als 'escape' Zeichen für urlencoded Zeichen, zB %39 und so weiter.

                          Kommentar


                          • #14
                            Danke euch beiden...

                            ich hab das ganze jetzt in eine Switch-Anweisung gepackt, sodass nur noch "A" statt "A%" ist der URL steht.

                            Jetzt funktioniert alles wieder!!!

                            Gruß
                            Md

                            Kommentar


                            • #15
                              @murder
                              Ich habe dir den Hinweis auf das error_reporting() u.A. wegen dieser Zeile, welche auch von wahsaga mokiert wurde, gegeben
                              PHP-Code:
                              if($mode == dt 
                              Wenn du mir jetzt steiff und fest behauptest, dass mit error_reporting(E_ALL) hier kein Fehler geworfen wird, dann zeugt das von Unverständnis deinerseits über die Wirkung dieser Zeile.
                              Erklär mir bitte was diese macht. Wenn $mode gleich dt ist dann...
                              Erklär mir auch wie php in dt einen Wert zum Vergleichen finden sollte ???
                              Das ist kein String, keine Var und mit ziemlicher Sicherheit auch keine Konstante. In diese Bedinung wird php niemals reinkommen, egal ob du den Kopf -und/oder Handstand machst.
                              Und wenn dein PHP Parser hier keinen Fehler oder zumindest eine Notice wirft dann schmeiss ihn weg und installiere php neu. Der ist dann nämlich im Eimer.

                              Gruss

                              tobi

                              p.s. der Ton kann hier manchmal etwas ruppig werden, das sollte dir nicht neu sein. Aber wenn du auf Tipps die dir gegeben werden nicht einlässt, wer soll dir denn helfen. Dein Script mag jetzt funzen, aber es sind definitiv Fehler drinn.
                              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                              Kommentar

                              Lädt...
                              X