[GastForen Programmierung/Entwicklung PHP und MySQL count()

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

count()

Tömsken
Beiträge gesamt: 720

23. Apr 2004, 12:30
Beitrag # 1 von 4
Bewertung:
(1690 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin.

Ein "interessantes" Problem beschäftigt mich momentan. Ich habe also ein Formular mit Listbox...

<select name="books[]" size="10" multiple>
...
</select>

...dessen Inhalt ich auslesen möchte. Dazu gibt's 'ne Schleife:

if (count($books) > 0) {
for ($i = 0; $i < count($books); $i++) {
if (isset($books[$i])) {
// Buch sichern
}}}

Das funktioniert prima, so lange mind. ein Eintrag in der Listbox steht. Ist die jedoch leer, sollte IMHO $books ein Array mit "0" Einträgen sein. Aber count($books) liefert trotzdem "1".

Ok, dachte ich, sei pfiffig, live and let live, und prüfe per "isset($books[$i])", ob ich gerade angelogen werde. Das wird jedoch brutal quittiert mit "Warning: Uninitialized string offset: 0 in ...".

Nun könnte man natürlich das Error-Reporting toleranter einstellen. Möchte ich aber nicht, weil ich so stolz auf meinen ansonsten so "schulmäßigen" Code bin.

Hat also jemand 'ne Erklärung für count($books)== 1 und 'nen Tipp zum Umgehen der Warnung?

Tom
X

count()

oesi50
  
Beiträge gesamt: 2315

23. Apr 2004, 17:16
Beitrag # 2 von 4
Beitrag ID: #81588
Bewertung:
(1690 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi Tömsken,

wie wärs denn mit:

foreach ($books as $value) {
echo "Wert: $value";
}

Das setzt natürlich voraus, dass Deine Bücher nicht positionsabhängig sind.

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#81520]
(Dieser Beitrag wurde von oesi50 am 24. Apr 2004, 15:12 geändert)

count()

Miro Dietiker
Beiträge gesamt: 699

23. Apr 2004, 22:37
Beitrag # 3 von 4
Beitrag ID: #81624
Bewertung:
(1690 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Dein Problem ist dass das Verhalten von Count nicht deinen
Vorstellungen entspricht:
DOKU: int count ( mixed var [, int mode])

Schau mal mit
print($books);
ob die Variable $books wirklich ein Array ist wenn nichts ausgewählt!
(Steht 'Array' als Ausgabe ist es einer, und count() sollte 0
zurückgeben.. Steht nichts oder etwas anderes, ist $books kein
array mehr und count() tut nicht das was du erwartest!)
Siehe DOKU:
If var is not an array, 1 will be returned (exception: count(NULL) equals 0).
http://ch2.php.net/...n/function.count.php

Abhilfe grundlegend:

if(is_array($books)) {
#DEIN CODE
}

Das grundlegende Problem hier ist die lose Typenbehandlung von
PHP, welche bei manchen funktionen auch etwas 'lose' gehandhabt wird!
Bsp f. Rückgabewerte (mysql_fetch_array):
Datenarray wenn erfolgreich, false im Fehlerfall, usw...

Hoffe du hast damit etwas mehr Bezug zur Problematik!

GrEeZ: Miro Dietiker


als Antwort auf: [#81520]

count()

Tömsken
Beiträge gesamt: 720

27. Apr 2004, 20:00
Beitrag # 4 von 4
Beitrag ID: #82298
Bewertung:
(1690 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Miro!
Besten Dank für den guten Tipp!
is_array() ist die Lösung. Ich konnte es mir nicht vorstellen, aber offensichtlich ist es doch so, dass eine LEERE Listbox mit Mehrfach-Selektionsmöglichkeit KEIN Array zurückliefert ( - sondern scheinbar einen String). Erst wenn mind. ein Eintrag drin steht, wird auch ein Array übergeben.


als Antwort auf: [#81520]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
29.09.2022

IDUGS#85 Press2id

Zoom Meeting
Donnerstag, 29. Sept. 2022, 19.00 - 21.00 Uhr

Vortrag

Kennst du WordPress? Vielleicht. Verwendest du WordPress? Ja, klar! WordPress ist das am weitesten verbreitete System für die Erstellung von Webseiten. Um Webseitenbau soll es auf dieser IDUG aber nicht gehen. Gregor zeigt press2id (github.com/grefel/press2id). Seine Open-Source-Lösung für die Verbindung von Web und InDesign. Richtig gelesen: InDesign liest mithilfe von press2id die Inhalte der WordPress-Webseiten und generiert daraus Zeitschriften, Kataloge, Programmhefte oder Bierdeckel (das zeigen wir natürlich auch!). So wird die „Content First“ Theorie zu einer konkret anwendbaren Praxis, ohne gleich die ganz großen Räder zu drehen. Versprochen: Jeder kann nach der IDUG innerhalb kürzester Zeit Daten von WordPress nach InDesign importieren. Aber Achtung: Prinzipiell kann press2id aus jeder Website, oder besser Contentmanagementsystem (CMS) Daten auslesen und nach InDesign importieren! Spannend, oder? Danach geht es in die Praxis: Stefan hat die Webseite des Parktheater Iserlohn (parktheater-iserlohn.de) gestaltet. Die gedruckten Spielpläne (parktheater-iserlohn.de/interaktive-spielplaene) werden mit press2id realisiert. Wir schauen in den Maschinenraum und zeigen, wie die Lösung des Projekts realisiert wurde.

Nein

Organisator: InDesign Usergroup Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailidug AT satzkiste DOT de

https://idugs85.eventbrite.de/

Von Wordpress nach InDesign
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022