Steffen: Problem bei der Ausgabe eines SQL Arrays!!

Hallo,

ich programmiere gerade ein Programm um Daten aus der MySQL Datenbank zu verwalten.

Eine Funktion ist das alles Datensätze ausgegeben werden.

Das ist der Quelltext hier sind jedoch nur zwei Attribute. Mein Problem kommt bei dem Befehl "printf" was kann ich machen damit nicht die fehlermeldung

Warning: printf() [function.printf]: Too few arguments in /usr/share/ocsinventory-reports/ocsreports/allecomputer.php on line 157

kommt, echo hat bei mir auch nicht funktioniert.

--------------------------------------------------
while ($datenarray = mysql_fetch_array($ergebnis, MYSQL_ASSOC)) {

---->   printf ("<td width="20%">Kostenstelle: %s </td> <td width="20%">

Abteilung: %s </td>", $datenarray["kostenstelle"], $datenarray["abteilung"]);

Ich hoffe mir kann da jemand helfen

  1. Hallo,

    Das ist der Quelltext hier sind jedoch nur zwei Attribute. Mein Problem kommt bei dem Befehl "printf" was kann ich machen damit nicht die fehlermeldung

    Warning: printf() [function.printf]: Too few arguments in /usr/share/ocsinventory-reports/ocsreports/allecomputer.php on line 157

    kommt, echo hat bei mir auch nicht funktioniert.


    while ($datenarray = mysql_fetch_array($ergebnis, MYSQL_ASSOC)) {

    ---->   printf ("<td width="20%">Kostenstelle: %s </td> <td width="20%">

    Abteilung: %s </td>", $datenarray["kostenstelle"], $datenarray["abteilung"]);

    Es sind zu wenig Argumente für printf vorhanden. Für jedes %-Zeichen muss ein Wert eingegeben werden. Es gibt 4 Mal % und nur 2 Werte, die verteilt werden können.

    Nehme das Prozentzeichen bei den Breitenangaben erstmal raus, um zu sehen, ob es dann funktiontiert. Dann maskiere diese 2 Zeichen so, dass printf nicht denkt, es wäre Argumente.

    1. Es sind zu wenig Argumente für printf vorhanden. Für jedes %-Zeichen muss ein Wert eingegeben werden. Es gibt 4 Mal % und nur 2 Werte, die verteilt werden können.

      Nehme das Prozentzeichen bei den Breitenangaben erstmal raus, um zu sehen, ob es dann funktiontiert. Dann maskiere diese 2 Zeichen so, dass printf nicht denkt, es wäre Argumente.

      -------------------------------------------
      Danke, es funzt, aber wenn ich jetzt mehrere Werte haben will z.B. 10 oder so, würde es dann auch noch funktionieren.

      Eine Frage hätte ich noch, kann ich die datensätze des arrays auch und variablen abspeichern

      1. Es ist leider ein neues Problem aufgetaucht,

        also ich hab des jetzt so gemacht:

        -------------------------------------------------------

        while ($datenarray = mysql_fetch_array($ergebnis, MYSQL_ASSOC)) {

        printf ("<tr><td> %s </td> <td>  %s </td><td> %s </td><td> %s</td><td> %s </td></tr>", $datenarray["Name"], $datenarray["kostenstelle"], $datenarray["bezeichnung"], $datenarray["abteilung"], $datenarray["inventurnummer"]);
        }

        Es werden abe nur vier spalten angezeigt, obwohl es fünf sein müssten.
        und der fünfte Wert wird auch nicht ausgelesen, Syntaxfehler zeigt er auch nicht an. woran kann das liegen

        1. Hi!

          Es werden abe nur vier spalten angezeigt, obwohl es fünf sein müssten.

          Was verstehst du unter anzeigen? Das was du im Browser siehst oder die Quelltextansicht?

          und der fünfte Wert wird auch nicht ausgelesen, Syntaxfehler zeigt er auch nicht an. woran kann das liegen

          An vielem. Kontrollausgaben (am besten mit mit var_dump()) und ein auf E_ALL gestelltes error_reporting (und ein eingeschaltetes display_errors) hilft, die meisten einfachen Fehler zu finden.

          Lo!

          1. also die fünfte spalte wird nicht angezeigen sowohl im browser als auch im quelltext, wie schon gesagt er zeigt keine fehler an.

            1. Hi!

              also die fünfte spalte wird nicht angezeigen sowohl im browser als auch im quelltext, wie schon gesagt er zeigt keine fehler an.

              Dann, so vermute ich, schaust du dir was an, was PHP nicht aktuell erzeugt hat.

              Was ergaben die Kontrollausgaben? Von denen hättest du auf alle Fälle was sehen müssen (wenn du dir die zum PHP-Code passende Ausgabe ansiehst).

              Lo!

              1. Hi!

                also die fünfte spalte wird nicht angezeigen sowohl im browser als auch im quelltext, wie schon gesagt er zeigt keine fehler an.

                Dann, so vermute ich, schaust du dir was an, was PHP nicht aktuell erzeugt hat.

                Was ergaben die Kontrollausgaben? Von denen hättest du auf alle Fälle was sehen müssen (wenn du dir die zum PHP-Code passende Ausgabe ansiehst).

                Lo!

                So noch mal zu Information, es gibt keine Kontrollausgaben, es wird kein fehler nix angezeigt, trotzdem ist die spalte nicht da wo sie sein sollte.

                Ich hab gerade noch en paar Kontrollelemente eingebaut die ergeben jedoch auch nix.

                tschuldigung das ich so wenig infos bieten kann, jedoch bin ich selber ratlos.

                Wenn jemand einen Tipp hat, was es sein könnte bitte melden

                1. Hi!

                  So noch mal zu Information, es gibt keine Kontrollausgaben, es wird kein fehler nix angezeigt, trotzdem ist die spalte nicht da wo sie sein sollte.

                  Kontrollausgaben fügt man mit der Absicht ein, sich einen Variableninhalt oder das Ergebnis eines Ausdrucks anzusehen oder zu prüfen, dass das Script an einer bestimmten Stelle vorbeikommt.

                  Ich hab gerade noch en paar Kontrollelemente eingebaut die ergeben jedoch auch nix.

                  Ergeben nichts? Ein var_dump() erzeugt immer eine Ausgabe, deswegen meine Empfehlung, dieses zu nehmen. Wenn du nichts siehst, dann siehst du dir nicht die Ausgabe des Script an, sondern irgendwas anderes. Falsche Datei hochgeladen, Ausgabe aus dem Cache statt wirklichem Request können Ursachen sein.

                  Wenn jemand einen Tipp hat, was es sein könnte bitte melden

                  Fehler sind was ganz normales und häufiges beim Programmieren. Lösungen gibt es nicht durch Fingerschnippen. Deswegen solltest du deine Fehlersuchfähigkeiten verbessern. Ich gebe die Tipps mit dem var_dump() und dem error_reporting, weil sie sich bewährt haben und einfache aber effektive Debug-Möglichkeiten darstellen. Wenn du was nicht verstehst, ist es besser, konkret danach zu fragen, statt es zu ignorieren.

                  Lo!

                  1. Hi!

                    So noch mal zu Information, es gibt keine Kontrollausgaben, es wird kein fehler nix angezeigt, trotzdem ist die spalte nicht da wo sie sein sollte.

                    Kontrollausgaben fügt man mit der Absicht ein, sich einen Variableninhalt oder das Ergebnis eines Ausdrucks anzusehen oder zu prüfen, dass das Script an einer bestimmten Stelle vorbeikommt.

                    Ich hab gerade noch en paar Kontrollelemente eingebaut die ergeben jedoch auch nix.

                    Ergeben nichts? Ein var_dump() erzeugt immer eine Ausgabe, deswegen meine Empfehlung, dieses zu nehmen. Wenn du nichts siehst, dann siehst du dir nicht die Ausgabe des Script an, sondern irgendwas anderes. Falsche Datei hochgeladen, Ausgabe aus dem Cache statt wirklichem Request können Ursachen sein.

                    Wenn jemand einen Tipp hat, was es sein könnte bitte melden

                    Fehler sind was ganz normales und häufiges beim Programmieren. Lösungen gibt es nicht durch Fingerschnippen. Deswegen solltest du deine Fehlersuchfähigkeiten verbessern. Ich gebe die Tipps mit dem var_dump() und dem error_reporting, weil sie sich bewährt haben und einfache aber effektive Debug-Möglichkeiten darstellen. Wenn du was nicht verstehst, ist es besser, konkret danach zu fragen, statt es zu ignorieren.

                    Lo!

                    Es tut mir leid ich habe diese kontrollmethoden falsch interpretiert, hab sie verwechselt, ich kenne mich mit solhen kontrollsachen net aus wie muss ich die einbauen, also die basis methoden baue ich schon  ein, mhh var dum ist bestimmt eine, kannst du mir des mal an meinem beispiel zeien wie man des einbaut

                    danke im vorraus

                    1. Hi!

                      Bitte zitiere nur das, worauf du dich konkret beziehst, nicht einfach alles.

                      Es tut mir leid ich habe diese kontrollmethoden falsch interpretiert, hab sie verwechselt, ich kenne mich mit solhen kontrollsachen net aus wie muss ich die einbauen, also die basis methoden baue ich schon  ein, mhh var dum ist bestimmt eine, kannst du mir des mal an meinem beispiel zeien wie man des einbaut

                      Leid muss es dir nicht tun, wen du etwas nicht weißt oder vestehst, aber darüber reden ist ein möglicher Schritt zum Abbau des Wissensdefizits

                      Angenommen, du hast irgendwo die Variable $foo verwendet und sie sollte deiner Meinung nach wen Wert 'bar' enthalten. Dann kanst du das kontrollieren, indem du

                      var_dump($foo);

                      in dein Script einbaust, und zwar an der Stelle, an der du den Variableninhalt überprüfen möchtest. Als Ausgabe erhältst du in dem Beispielfall

                      string(3) "bar"

                      Zumindest wäre das das Erwartete. Wenn du was anderes bekommst, ist das ein Zeichen dafür, dass irgendwas nicht funktioniert hat. Also solltest du dich auf die Suche begeben, warum da was anderes war als vorgesehen. Möglicherweise ist ein bedingter Zweig nicht abgearbeitet worden, dann kann man mit einer Kontrollausgabe nachsehen, wie das Ergebnis der Bedingung aussieht und auch die Inhalte der beteiligten Variablen.

                      Soll:

                      if ($qux == $baz)
                          $foo = 'bar';

                      Prüfung:

                      var_dump($qux);
                        var_dump($baz);
                        var_dump($qux == $baz);

                      if ($qux == $baz) ...
                          $foo = 'bar';

                      var_dump($foo);

                      Diese Prüfung war sehr ausführlich. Wenn man genug Erfahrung hat, kann man das auch abkürzen.

                      error_reporting ist eine Konfigurationsdirektive von PHP. Diese lässt sich auch mit einer extra dafür vorgesehenen Funktion setzen:

                      error_reporting(E_ALL);

                      Das stellst du am besten an den Scriptanfang. In der Produktivversion solltest du das wieder ausbauen oder auskommentieren, denn detaillierte Meldungen gehen keinen was an außer den Programmierer. Für Produktivversionen gibt es andere Methoden der Fehlerverfolgung, doch das ist für jetzt ein zu umfangreiches Thema.

                      Die Auswirkungen eines error_reporting(E_ALL); kannst du dir zum Test ansehen, indem du beispielsweise mal

                      echo $foo;

                      schreibst und $foo dabei vorher noch nichts zugewiesen hast. Du bekommst dann keine Ausgabe, aber die Notice-Meldung. Mit var_dump($foo); bekämest du NULL angezeigt und die Notice. Nicht vorhandene Variablen ergeben beim Lesezugriff den Spezialwert NULL.

                      Lo!

                2. $abfrage = 'SELECT *    '
                          . ' FROM hardware_erweiterung INNER JOIN hardware ON hardware_erweiterung.ID = hardware.id ';
                  ---------------------------
                  könnte es sein das die abfrage falsch ist, weil "Name" ais der tabelle hardware kommt und die anderen aus der tabelle hardware_erweiterung

                  hier ist nochmal der code für die ausgabe in den browser
                  --------------

                  while ($datenarray = mysql_fetch_array($ergebnis, MYSQL_ASSOC)) {
                      printf ("<tr><td> %s </td> <td>  %s </td><td> %s </td><td> %s</td><td> %s </td></tr>", $datenarray["Name"], $datenarray["kostenstelle"], $datenarray["bezeichnung"], $datenarray["abteilung"], $datenarray["inventurnummer"]);

                  1. Hi!

                    $abfrage = 'SELECT *    '
                            . ' FROM hardware_erweiterung INNER JOIN hardware ON hardware_erweiterung.ID = hardware.id ';

                    könnte es sein das die abfrage falsch ist, weil "Name" ais der tabelle hardware kommt und die anderen aus der tabelle hardware_erweiterung

                    Bitte überprüfe deine Vermutungen mit Kontrollausgaben und stell das error_reporting auf E_ALL, um für Zugriffe auf nicht vorhandene Variablen Hinweismeldungen zu bekommen!

                    Lo!

  2. Hi!

    ---->   printf ("<td width="20%">Kostenstelle: %s </td> <td width="20%">

    Wenn du mit printf() arbeitest, wirst du keine Variablenersetzung benötigen, denn dafür nimmst du ja die Platzhalter. (Lediglich Steuerzeichen, wie \n usw., benötigen dann noch die doppelten Anführungszeichen.) Deshalb kannst du den String in einfache Anführungszeichen einfassen und die im Text vorkommenden doppelten Anführungszeichen ohne weitere Maskierungen notieren. Maskierungen benötigst du aber für die %-Zeichen, denn das sind Steuerzeichen im Sinne der printf()-Funktionalität.

    echo hat bei mir auch nicht funktioniert.

    "hat nicht funktioniert" funktioniert nicht als Fehlerbeschreibung. Für eine solch allgemeine Aussage wirst du selten eine zielführende Antwort bekommen, denn es gibt tausendundeine Möglichkeit des Nichtfunktionierens. Beobachte und beschreibe bitte genauer, wenn etwas nicht wie gewünscht ausgeführt wird..

    Lo!

    1. Hi!

      ---->   printf ("<td width="20%">Kostenstelle: %s </td> <td width="20%">

      Wenn du mit printf() arbeitest, wirst du keine Variablenersetzung benötigen, denn dafür nimmst du ja die Platzhalter. (Lediglich Steuerzeichen, wie \n usw., benötigen dann noch die doppelten Anführungszeichen.) Deshalb kannst du den String in einfache Anführungszeichen einfassen und die im Text vorkommenden doppelten Anführungszeichen ohne weitere Maskierungen notieren. Maskierungen benötigst du aber für die %-Zeichen, denn das sind Steuerzeichen im Sinne der printf()-Funktionalität.

      echo hat bei mir auch nicht funktioniert.

      "hat nicht funktioniert" funktioniert nicht als Fehlerbeschreibung. Für eine solch allgemeine Aussage wirst du selten eine zielführende Antwort bekommen, denn es gibt tausendundeine Möglichkeit des Nichtfunktionierens. Beobachte und beschreibe bitte genauer, wenn etwas nicht wie gewünscht ausgeführt wird..

      Lo!

      ------------------------------------------------------
         printf ("<tr><td> %s </td> <td>  %s <td> %s </td><td> %s</td></tr>", $datenarray["kostenstelle"], $datenarray["abteilung"], $datenarray["inventurnummer"], $datenarray["bezeichnung"]);

      Wenn ich jetzt für printf echo einsetz dann kommt einfach nur syntaxfehlermeldung

      auch wenn ich die klammern weg mach, ich habe ja nach einer alternativen zu printf gefragt und lediglich nur betont das echo nicht funktioniert.

      Aber trotzdem danke, printf funktioniert jetzt hab nur vergessen einen $datenarray[""], einzugeben

  3. Hi Steffen aka Jordan aka Steve O!

    Ich finde es unverschämt, dass du nach dem Hinweis auf das Doppelposting, einen dritten Thread eröffnest. Damit machst du dir nur das Leben schwer.

    Warum Doppelpostings nicht hilfreich und unerwünscht sind hat Sven Rautenberg begründet.

    Dass du hier auch noch Hilfe bekommst und deinen ersten Thread gar nicht mehr beachtest, macht die Sache nur noch schlimmer.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)