Variablen werden nicht beim Blättern übergeben

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

  • Variablen werden nicht beim Blättern übergeben

    Moin,
    ich bin anscheinend mal wieder blind.
    Also hoffe ich auf gnädige Hilfe, ohne geköpft zu werden.

    Folgendes Szenario:
    Adressdatenbank. 2 Ausgabe-Möglichkeiten:
    a) Alle Daten sortiert nach Name. Inkl. Seitenweise Anzeige. Funzt.
    b) Suche nach mehreren Variablen, Seitenweise Ausgabe, Funzt nur bis zur ersten Seite.

    Jetzt kommt das, was ich nicht ganz verstehe:
    Als Ergebnis zu b) kommen 131 Adressen heraus (wenn man also nur einen Faktor wählt und sucht).

    Ohne seitenweise Ausgabe müssten die eigentlich ausgegeben werden, es werden aber nur 25 angezeigt, danach kommen 2 verkrüppelte, leere Ausgabe-Tabellen, das wars (im Quelltext sind alle Adressen vorhanden, wahrscheinlich zu groß mit 245 Kb).

    Also, Script fürs seitenweise blättern eingefügt, was ja unter a) läuft.

    PHP-Code:
    <?
    $Zeilen_pro_Seite = 15;
    ?>

    //es folgt ein Suchstring, der beim Select hinzugefügt wird
    <?
    IF ($VName<>""):

     $sqlstrg.="VName LIKE ";

     $sqlstrg.="'%";

     $sqlstrg.= $VName;

     $sqlstrg.="%";

            If ($Name <>"" OR $Str <>"" OR $Land <>"" OR $PLZ <>"" OR $Ort <>"" OR         $Komm <>"" Or  $Mail <>"" Or $Grp <>""):

            $sqlstrg.="' AND ";

            else:

            $sqlstrg.="'";

            endif;

    endif;



    IF ($Name<>""):

     $sqlstrg.="Name LIKE ";

     $sqlstrg.="'";

     $sqlstrg.= $Name;

     $sqlstrg.="%";

            If ($Str <>"" OR $Land <>"" OR $PLZ <>"" OR $Ort <>"" OR         $Komm <>"" Or  $Mail <>""   Or         $Grp <>""):

            $sqlstrg.="' AND ";

            else:

            $sqlstrg.="'";

            endif;

    endif;

    .
    .
    .
    .


    IF ($Grp<>""):

     $sqlstrg.="Grp LIKE ";

     $sqlstrg.="'";

     $sqlstrg.= $Grp;

     $sqlstrg.="%";

     $sqlstrg.="'";

    endif;

    ?>
    //Anfangsposition auf "0", wenn Variable nicht gesetzt
    <?php
    if (!isset($Anfangsposition)) {
      
    $Anfangsposition 0;
    }
    ?>

    //HTML
    <b class="header">Ergebnis der Suchanfrage: </b>
    <br> 


    //Select-Abfrage incl. dem oben zusammengesetzten Suchstring
      <?php
    $sql1
    "select VName, Name, Str, Land, PLZ, Ort, Komm, Grp, URL, Datum, Tel, Fax, Mail, Anr from addaten WHERE $sqlstrg AND check=1 ORDER BY Name LIMIT $Anfangsposition,$Zeilen_pro_Seite";
    // Fürs eigentliche Ergebnis
    $result=mysql_query($sql1);
    // Für die Anzeige der Anzahl der gefundenen Treffer und der Seitenanzahl-Berechnung
    $result1=mysql_query ("select VName, Name, Str, Land, PLZ, Ort, Komm, Grp, URL, Datum, Tel, Fax, Mail, Anr from addaten WHERE $sqlstrg AND check=1 ORDER BY Name");

    //Hier beisst es sich nun
    $Anzahl=mysql_num_rows($result1);
    while (
    $zeilemysql_fetch_array($result)) {

    ?>
    Hiernach folgt nur noch die Formatierung der Ausgabe.

    Während die erste Seite korrekt angezeigt wird (Anzahl der Seiten, Ergebniss-Summe, Ergebnisse selbst),
    wird ab der 2. Seite nichts mehr dargestellt.

    Die Variablen [COLOR=red]$sqlstrg, $Anzahl und $result[/COLOR] scheinen leer zu sein.

    Versuche ich diese auf der 2ten Seite mal mit <? echo ?> anzuzeigen, ist alles leer.

    Nun gut, versuche ich das in den Link zu übergeben.
    Also übergebe ich folgend:
    PHP-Code:
    $suche$sqlstrg
    Die Seitenlinks ändere ich z.B. so ab:
    PHP-Code:
     echo "<a href=\"adressen.php?dat=ergebnis.php&Anfangsposition=$fwd&sqlstrg=$suche\"><br>eine Seite weiter ></a>| "
    Funzt natürlich nicht, da $suche nun "\" vor jedem Hochkomma enthält.
    Sollte der richtige SQLstrg [COLOR=green]"LAND LIKE 'DE' AND GRP LIKE 'XYZ'[/COLOR] heissen (und tut es auch), ergibt die Übergabe in der Adresszeile [COLOR=green]LAND LIKE \ 'DE\ ' AND GRP LIKE \ 'XYZ\ ' [/COLOR]

    Er meckert dann an den Zeilen
    PHP-Code:
    $Anzahl=mysql_num_rows($result1);
    while (
    $zeilemysql_fetch_array($result)) { 
    herum.

    Ergo: Entweder werden die benötigten Parameter gar nicht oder falsch übergeben....
    Nicht das seitenweise blättern, sondern die Übergabe mislingt.
    Was ich nicht verstehe, da er ja jedesmal die Abfrage neu erstellt, und eine Übergabe ja nicht nötig ist. Eigentlich.
    Ich gehe von der Richtigkeit des restlichen Codes aus, da die Ausgabe auf der 1. Seite funzt.

    Any ideas?
    Zuletzt geändert von Mannie; 14.04.2004, 14:23.

  • #2
    Re: Variablen werden nicht beim Blättern übergeben

    http://www.dclp-faq.de/q/q-magic-quotes.html
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Danke dir für die schnelle Antwort.
      Die Übergabe des SQL-Strings funktioniert nun.
      Aber:

      PHP-Code:
      Warningmysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/userxyz/html/Adressen/ergebnis.php on line 256

      Warning
      mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/userxyz/html/Adressen/ergebnis.php on line 257 
      Bezieht sich auf:
      PHP-Code:
      $Anzahl=mysql_num_rows($result1);
      while (
      $zeilemysql_fetch_array($result)) { 
      Wenn ich die Ergebnis-Seite alleinig aufrufe (also OHNE vorherige Suchseite inkl.
      Übergabe der Suchvariablen), komme ich zum gleichen Ergebnis.

      Ich raff nicht, warum die select-Abfrage ab Seite 2 nicht mehr funktioniert.....

      Kommentar


      • #4
        setz mal ein $result=mysql_query($sql1) or die(mysql_error()); ein
        Kissolino.com

        Kommentar


        • #5
          setz mal ein $result=mysql_query($sql1) or die(mysql_error()); ein
          Tausend Dank, der "stripslashes"-Befehl hat wohl doch nicht gefunkt,
          dank der Fehlerausgabe konnte ich ihn nun an der richtigen Stelle
          ansetzen und es funktioniert nun, so wie es funktionieren soll!

          Vielen Dank für die unkomplizierte und schnelle Hilfe.

          Für die die nachlesen wollen (ich hasse es auch immer, wenn die Lösung nicht ersichtlich ist):
          geändert wurde
          PHP-Code:
          //folgende Zeile hinzugefügt
          $suche stripslashes($sqlstrg);
          if (!isset(
          $Anfangsposition)) {
            
          $Anfangsposition 0
          und
          PHP-Code:
          $sql1"select VName, Name, Str, Land, PLZ, Ort, Komm, Grp, URL, Datum, Tel, Fax, Mail, Anr from addaten WHERE $sqlstrg AND check=1 ORDER BY Name LIMIT $Anfangsposition,$Zeilen_pro_Seite";
          $result=mysql_query($sql1
          $result1=mysql_query ("select VName, Name, Str, Land, PLZ, Ort, Komm, Grp, URL, Datum, Tel, Fax, Mail, Anr from addaten WHERE $suche AND check=1 ORDER BY Name"); 
          wurde ersetzt durch
          PHP-Code:
          //$sqlstrg wurde durch $suche in der Query ersetzt
          $sql1"select VName, Name, Str, Land, PLZ, Ort, Komm, Grp, URL, Datum, Tel, Fax, Mail, Anr from addaten WHERE $suche AND check=1 ORDER BY Name LIMIT $Anfangsposition,$Zeilen_pro_Seite";
          //diese Zeile ist neu
          $result=mysql_query($sql1) or die(mysql_error()); 
          $result1=mysql_query ("select VName, Name, Str, Land, PLZ, Ort, Komm, Grp, URL, Datum, Tel, Fax, Mail, Anr from addaten WHERE $suche AND check=1 ORDER BY Name"); 
          Durch letzte Änderung wurde ein Syntax-Fehler ersichtlich, der nur durch "stripslashes" korrigiert werden konnte, da wieder Backslashes in der Query auftraten.

          Schönen Abend noch!

          Kommentar

          Lädt...
          X