Array und return ?

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

  • Array und return ?

    Also folgende Funktion :
    PHP-Code:
    function linkset($nummer$f)
    {
        
    $conn mysql_connect($mySQL_HOST$mySQL_USER$mySQL_PASS) or die ( print $db_error[0]);
        
    MYSQL_SELECT_DB($mySQL_DB) or die ( print $db_error[1]);
        
    $query_TB mysql_query("SELECT * FROM $cat ORDER BY ID DESC",$conn);
        
    $anz mysql_num_rows($query_TB);
        if (
    $anz == 0)
        {
            print 
    $db_error[2];
        }
        else
        {
            while (
    $row mysql_fetch_array($query_TB)) // Auslesen der Daten
            
    // Gibt Daten aus
                
    $ID          $row[ID];
                
    $Name         $row[Name];
                
    $preview     $row[preview];
                
    $pics         $row[pics];
                
    $url         $row[url];
                
    $clicks         $row[clicks];
                
    $date_upload $row[date_upload];
            }
        }
        
    $ahref = array ( // Zusammensetzen des Links
        
    "<A href=\"http://$count?link=$url\" target=_blank>",
        
    "<IMG alt=\"$Name\" border=0 height=160 name=f$f onmouseout=\"hover('f$f',20)\" onmouseover=\"hover('f$f',100)\" src=\"$preview_path$preview$ext1\" ...",
        
    "</A>"
        
    );
        return 
    $ahref;
        return 
    $pics;
        return 
    $clicks;
        return 
    $date_upload;

    So ...

    Funktioniert das returnen mit einer Array ????? (s.o. -> return $ahref)

    Was ich noch sagen wollte, wenn ich die Funktion aufrufe, dann
    passiert was ganz komisches : Er gibt mir zwar das was im Script
    darüber steht aus, dann eine 1 und das was im Script darunter
    steht nichtmehr ......

    mfg DaPhreak
    Zuletzt geändert von DaPhreak; 24.04.2002, 18:17.
    If something's HARD to do,

    then it's not worth doing.
    (Homer J. (Jay) Simpson)

  • #2
    Also eigentlich kann man einen array returnen, aber Du kannst nur eine Variable per return zurückgeben.
    return $ahref;
    return $pics;
    return $clicks;
    return $date_upload;
    geht also nicht...
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Wie kann ich den sonst die Variablen aus der Funktion erhalten ???

      daphreak
      If something's HARD to do,

      then it's not worth doing.
      (Homer J. (Jay) Simpson)

      Kommentar


      • #4
        Also ich versteh kjetzt erstmal nicht warum Du überhauüpt ne Funktion brauchst, aber Dein Ding. Variablen aus ner Funktion bekommst Du nur über return ist schon richtig, kannst ein array geben,
        allerdings wenn Du Dir Dein Script anschaust würdest Du wenn es funktionieren würde die Werte zurückzugeben immer nur einen Link ein pic ein clicks zurückgeben nämlich immer den letzten.
        Im Übrigen wie rufst Du die Funktion auf?
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          in einer for-Schleife die jedesmal den Wert um 1 erhöht ...

          PHP-Code:
          $linknr $st;
          $int1 1;
          $start_f10 10;
          {
                  
          $set_link linkset($linknr,$set_f10); // Hier ist der Funktionsaufruf
                  
          echo $tags[1];    // Ausgabe Array (Tabellentag) 1
                  
          for ($spalte 0;
                  
          $spalte<$spaltenzahl && $zaehler<$tab;
                  
          $spalte++, $zaehler++)
                  echo 
          $tags[2], $set_link$tags[4], $tags[3];  // Ausgabe Array (Tabellentag) 2,3
                  
          echo $tags[5];    // Ausgabe Array (Tabellentag) 4
                  
          $linknr $linknr $int1;
                  
          $start_f10 $start_f10 $int1;
              } 
          If something's HARD to do,

          then it's not worth doing.
          (Homer J. (Jay) Simpson)

          Kommentar


          • #6
            So funzt das nicht, wie gesagt. Da musst Du Dir was anderes überlegen.
            was sollen denn die leeren { da am Anfag und Ende?
            Überleg mal was Du ausgeben wilst und poste das Problem, dann kann man Dir auch helfen.
            Warum ne Schleife?
            Warum ne Funktion?
            etc.
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              Also, das soll ne ImageGallery geben .

              Hat pro Seite 16 Einträge ...

              Die Tabellenerstellung stammt von Titus (hat keine leeren {)
              sorry, hab falsch kopiert (*schäm*) ..

              Und ich hab in der DB mindestens 60 Einträge ...

              Also wollte ich eine Funktion erstellen die mir in Abhängigkeit von
              der Var $nummer den Link erstellt (und dabei noch 3 weitere Werte zurückgibt ($pics, $clicks, $date_upload) ...

              das ganze in die for-Schleife, da ansonsten immer der selbe Link entstehen würde ...

              So und jetzt der komplette Aufruf (*sorry*) :
              PHP-Code:
              $tab=16;
              $zeilenzahl 4;
              $spaltenzahl 4;
              $zaehler 0;
              $linknr $st;
              $int1 1;
              $start_f10 10;
              if (
              $tab)
              {
                  echo 
              $tags[0];  // Ausgabe Array (Tabellentag) 0
                  
              for ($zeile 0;
                  
              $zeile<$zeilenzahl && $zaehler<$tab;
                  
              $zeile++)
                  {
                      
              $set_link linkset($linknr,$set_f10);
                      echo 
              $tags[1];    // Ausgabe Array (Tabellentag) 1
                      
              for ($spalte 0;
                      
              $spalte<$spaltenzahl && $zaehler<$tab;
                      
              $spalte++, $zaehler++)
                      echo 
              $tags[2], $set_link$tags[4], $tags[3];  // Ausgabe Array (Tabellentag) 2,3
                      
              echo $tags[5];    // Ausgabe Array (Tabellentag) 4
                      
              $linknr $linknr $int1;
                      
              $start_f10 $start_f10 $int1;
                  }
                  echo 
              $tags[6];    // Ausgabe Array (Tabellentag) 5
                  
              echo $tags[7];

              Jetzt besser ?
              If something's HARD to do,

              then it's not worth doing.
              (Homer J. (Jay) Simpson)

              Kommentar


              • #8
                hmmm.. von hinten durchs knie geschossen...
                Warum machste das SQL Statement mit LIMIT $start, 16
                UNd dann immer schön ne Reihe ausgeben, etc. Dazu gibts auch ein codeschnipsel... dat is easy und funzt auch
                Warum der link immer der gleiche sein soll versteh ich zwar nicht, aber ok
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  wenn ich die funktion nicht i.d. for-Schleife aufgerufen hätte, dann wär immer der selbe link rausgekommen ...

                  Welches Codeschnipsel meinste ???

                  Das : n Datensätze pro Seite

                  SQL-Statement : $query_TB = mysql_query("SELECT * FROM $cat ORDER BY ID DESC LIMIT $start,16 ",$conn);

                  So in etwa

                  daphreak
                  Zuletzt geändert von DaPhreak; 24.04.2002, 20:41.
                  If something's HARD to do,

                  then it's not worth doing.
                  (Homer J. (Jay) Simpson)

                  Kommentar


                  • #10
                    Also du kannst einen Array der Werte zurückgeben:

                    return array($val1,$val2,$val2,$andererarray,$nochwas);
                    Oder du übergibst Referenzen/Zeiger auf eine Variable.
                    (siehe Handbuch Kapitel Variablen).

                    Ansonsten ist in der Funktion noch ein paar komische Dinge.
                    1) die While Schleife gibt nichts aus/speichert nichts. du hast am ende nur die Werte der letzten Reihe.
                    2) sind die ganzen Variablen $db_error und mySQL Benutzerdaten wirklich global ?
                    3) Eine Funktion in einer Schleife aufzurufen, die jedesmal zu einer Datenbank verbindet, ist nicht gerade das gelbe vom Ei.
                    Übergib lieber eine Globale Verbindung.
                    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
                    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
                    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

                    © Harald Schmidt

                    Kommentar


                    • #11
                      1.) Wie soll ich die Werte denn speichern ???

                      2.) Ja die Sind alle global ...

                      daphreak
                      If something's HARD to do,

                      then it's not worth doing.
                      (Homer J. (Jay) Simpson)

                      Kommentar


                      • #12
                        @ MellowPie :

                        Wenn du Sky's Codeschnipsel n Datensätze pro Seite meintest, hab ich mal n paar Fragen :[list=a][*] Was ist $step = $diff ( der Schritt den das Script nach einer Seite macht) ??[*] Welcher Wert repräsentiert die Array (ich meine $r) ??[/list=a]

                        Hab den Codeschnipsel versucht anzupassen
                        PHP-Code:
                        include("db_settings.php");
                        include(
                        "db_error.php");

                        # created by Sky (n Datensätze pro Seite)

                        $conn mysql_connect($mySQL_HOST$mySQL_USER$mySQL_PASS) or die ( print $db_error[0]);
                        MYSQL_SELECT_DB($mySQL_DB) or die ( print $db_error[1]);
                        $step $diff 1;

                        $r mysql_query("SELECT count(*) FROM $mySQL_TB") or die(mysql_error());
                        $anz mysql_result($r,0);

                        if (
                        $offset+1>=$anz-$step) {
                          
                        $offset $anz-$step;
                          
                        $diff $anz $diff;
                          
                        $disabled[next] = TRUE;
                        }

                        if (!
                        $offset || $offset<0) {
                          
                        $offset 0;
                          
                        $disabled[prev] = TRUE;
                        }

                        $r mysql_query("SELECT * FROM $mySQL_TB ORDER BY ID DESC LIMIT $offset,$diff") or die(mysql_error());

                        while (
                        $daten mysql_fetch_array($r)) 
                        {   
                        //Anzeige der Datensätze
                            
                        $ID          $row[ID];
                            
                        $Name         $row[Name];
                            
                        $preview     $row[preview];
                            
                        $pics         $row[pics];
                            
                        $url         $row[url];
                            
                        $clicks         $row[clicks];
                            
                        $date_upload $row[date_upload];    
                        }
                        $zahl1 sizeof($r);
                        $zahl2 count($r);
                        echo 
                        "Größe der Array : $zahl1<br>";
                        echo 
                        "Anzahl der Arrayelemente : $zahl2<br>";
                        echo 
                        $r[0];
                        ?> 
                        Und als Ausgabe erhalte ich :

                        Größe der Array : 1
                        Anzahl der Arrayelemente : 1

                        If something's HARD to do,

                        then it's not worth doing.
                        (Homer J. (Jay) Simpson)

                        Kommentar


                        • #13
                          $r ist eine mysql-resource-id und kein Array.

                          Code:
                          $array = array();
                          while ($daten = mysql_fetch_array($r)) 
                          {   //Speichern der Datensätze
                              $array[] = $daten;
                          }
                          $zahl1 = sizeof($array);
                          $zahl2 = count($array);
                          mein Sport: mein Frühstück: meine Arbeit:

                          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                          Kommentar

                          Lädt...
                          X