Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Array um eins zurück bei MySQL Abfrage

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Array um eins zurück bei MySQL Abfrage

    Hallo Leute,

    Ich will aus unter bestimmten Bedingungen das Array um eins zurücksetzen. Leider passiert das nicht. Geht das überhaupt?
    PHP-Code:
    while ($zeilemysql_fetch_array$db_ergMYSQL_ASSOC))    //innere Schleife für Tabelle der gleichen Tourennummer
    {

                if (
    $zeile['idt'] > $idamin) {break;}  //Prüfung ob Nummer die gleiche ist ansonsten Schleife verlassen
                
    if ($idamin $idaminfix)        // ohne erste Tabelle
                    
    {

                        
    prev($zeile); //Zeiger um eins zurücksetzen
                        
                    

    Danke schon mal

  • #2
    Was ist denn dein Ziel?

    Grundsätzlich: erstmal die Daten aus der DB ziehen (in einem Array speichern) und hinterher die Daten verarbeiten.

    Kommentar


    • #3
      Hi.

      PHP-Code:
      if ($zeile['idt'] > $idamin) {break;}  //Prüfung ob Nummer die gleiche ist ansonsten Schleife verlassen 
      damit prüfst du aber nicht, ob das die gleiche Nummer ist! Was genau willst Du den erreichen?! Sieht ziemlich chaotisch aus und ich bin mir sicher, wenn wir genau wissen, was du willst, es sicherlich ne bessere Lösung gibt, als das, was du da versuchst.

      mfg Wolf29

      Kommentar


      • #4
        Du ich habe das andere mal alles weggelassen das ist eh kompliziert- es funzt ja auch das ist eine Abfrage über 3 Tabellen hinweg. Aber ich glaube dennis81 hat recht. Nur dachte es geht auch so. Aber ich befürchte ich muß das vorher in ein Array packen. Wollte eigentlich nur wissen ob ich $zeile um eins zurücksetzen kann.

        Kommentar


        • #5
          den "Cursor" in der Ergebnistabelle - kannst du jedenfalls unter PHP eher nicht beeinflussen - die fetch-Funktionen liefern dir den aktuellen Datensatz und schieben den CUrsor 1 Position weiter - aber zurückbewegen ist nicht vorgesehen

          Kommentar


          • #6
            OK eagle275 Danke Euch allen.. also muss ich das nochmal in ein Array vorher packen und denn bearbeiten.

            Gruß

            Kommentar


            • #7
              Versuch doch lieber die mehrfach vorhanden Datensätze gleich von der Datenbank aus dem Ergebnis entfernen zu lassen.

              Stichwort "DISTINCT"

              Grüße.

              Kommentar


              • #8
                Zitat von eagle275 Beitrag anzeigen
                den "Cursor" in der Ergebnistabelle - kannst du jedenfalls unter PHP eher nicht beeinflussen - die fetch-Funktionen liefern dir den aktuellen Datensatz und schieben den CUrsor 1 Position weiter - aber zurückbewegen ist nicht vorgesehen
                Nicht korrekt:

                http://php.net/manual/de/function.mysql-data-seek.php

                Kommentar


                • #9
                  ja - aber das funktioniert nicht mit jeder Datenbank-Methode ... odbc kennt es zum Beispiel nicht - allgemein fährt man daher besser, wenn man sich nicht auf Manipulationen am Cursor verlässt - die Kopie in ein mehrdimensionales Array ist mE schnell erledigt ... meine Datenbank-Klasse macht es ganz automatisch

                  Kommentar


                  • #10
                    Speicher doch als letzte Anweisung im While() den Datensatz, beim ersten datensatz ist die Variable dafür logischerweise ein leeres Array, bei jedem folgenden der dementsprechende Vorgänger. Zeiger-Manipulation ist da doch nich wirklich nötig..

                    Kommentar


                    • #11
                      Zitat von eagle275 Beitrag anzeigen
                      ja - aber das funktioniert nicht mit jeder Datenbank-Methode ... odbc kennt es zum Beispiel nicht - allgemein fährt man daher besser, wenn man sich nicht auf Manipulationen am Cursor verlässt
                      Da er sowieso nur nativ mit MySQL zu arbeiten scheint stellt das soweit kein Problem da. Ich wette er benutzt auch noch andere MySQL spezifische Dinge wie Limit etc...

                      Kommentar


                      • #12
                        Bevor man die eine oder andere Lösung als gut bewerten kann, sollte der TE
                        Was genau willst Du den erreichen?!
                        beantworten. Wenn es sich nämlich um 10000 Datensätze handelt, ist „alles in ein Array schreiben“ eben anders zu bewerten.

                        Kommentar


                        • #13
                          So Leute ich habs mit nem Array gelöst.
                          PHP-Code:
                          $i="0";
                          while (
                          $zeilemysql_fetch_array$db_ergMYSQL_ASSOC))    //innere Schleife für Tabelle der gleichen Tourennummer
                          {

                                      
                          $daten[$i]['idt'] = $zeile['idt'];
                                      
                          $daten[$i]['Liefer_Tour_Datum'] = $zeile['Liefer_Tour_Datum'];
                                        
                          $daten[$i]['Name1'] = $zeile['Name1'] ;
                                      
                          $daten[$i]['Name2'] = $zeile['Name2'] ;
                                        
                          $daten[$i]['Strasse'] = $zeile['Strasse'];
                                        
                          $daten[$i]['PLZ'] = $zeile['PLZ'] ;
                                        
                          $daten[$i]['Ort'] = $zeile['Ort'] ;
                                        
                          $daten[$i]['ids'] = $zeile['ids'] ;
                          $i++;    

                          Nun bin ich voll flexibel für jeden Datensatz wird der 1. Schlüssel hochgezählt

                          dann erfolgt die Ausgabe:
                          PHP-Code:
                          for ($idamin$idamin <= $idamax$idamin++) //äussere Schleife für die Touren beginnend mit der niedrigsten Tour-Nr bis Zur größten Tour-Nr.
                          {
                              echo 
                          "<br>";
                              echo 
                          "<b>Tournummer ";
                              echo 
                          $idamin;
                              echo 
                          "<br>";
                              echo 
                          "<br>";
                              echo 
                          '<table border="1">';
                              echo 
                          "<tr>";
                              echo 
                          "<td>ID-Tour</td>";
                              echo 
                          "<td>Datum</td>";
                              echo 
                          "<td>Kunde</td>";
                              echo 
                          "<td>Kundnendetails</td>";
                              echo 
                          "<td>Strasse</td>";
                              echo 
                          "<td>PLZ</td>";
                              echo 
                          "<td>Ort</td>";
                              echo 
                          "<td>ID-LS</td>";
                              echo 
                          "</tr>";

                              foreach (
                          $daten as $key=>$zeile// innere Schleife für Ausgabe Der Anzufahrenden Kunden
                              
                          {


                                  if(
                          $idamin == $zeile['idt']) // Selektieren der Tournummer
                                  
                          {

                                  echo 
                          "<tr>";
                                  echo 
                          "<td>"$zeile['idt'] . "</td>";
                                  echo 
                          "<td>"$zeile['Liefer_Tour_Datum'] . "</td>";
                                    echo 
                          "<td>"$zeile['Name1'] . "</td>";
                                  echo 
                          "<td>"$zeile['Name2'] . "</td>";
                                    echo 
                          "<td>"$zeile['Strasse'] . "</td>";
                                    echo 
                          "<td>"$zeile['PLZ'] . "</td>";
                                    echo 
                          "<td>"$zeile['Ort'] . "</td>";
                                    echo 
                          "<td>"$zeile['ids'] . "</td>";
                                    echo 
                          "</tr>";    
                                  }
                              }
                          echo 
                          "</table>";

                          Kommentar


                          • #14
                            PHP-Code:
                            while ($zeilemysql_fetch_array$db_ergMYSQL_ASSOC))    //innere Schleife für Tabelle der gleichen Tourennummer
                            {

                                        
                            $daten[$i]['idt'] = $zeile['idt'];
                                        
                            $daten[$i]['Liefer_Tour_Datum'] = $zeile['Liefer_Tour_Datum'];
                                          
                            $daten[$i]['Name1'] = $zeile['Name1'] ;
                                        
                            $daten[$i]['Name2'] = $zeile['Name2'] ;
                                          
                            $daten[$i]['Strasse'] = $zeile['Strasse'];
                                          
                            $daten[$i]['PLZ'] = $zeile['PLZ'] ;
                                          
                            $daten[$i]['Ort'] = $zeile['Ort'] ;
                                          
                            $daten[$i]['ids'] = $zeile['ids'] ;
                            $i++;    

                            PHP-Code:
                            $daten = array ();
                            while (
                            $zeilemysql_fetch_array$db_ergMYSQL_ASSOC))
                            {
                              
                            $daten[] = $zeile;

                            Kommentar


                            • #15
                              Wenn es sich nämlich um 10000 Datensätze handelt, ist „alles in ein Array schreiben“ eben anders zu bewerten.
                              um himmels Willen -Nein denk nie mehr als 20..30.
                              So Danke für Eure Tipps .... und mache ich mich drann alles "schön" zu machen

                              Kommentar

                              Lädt...
                              X