php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.06.2007, 22:50  
Erfahrener Benutzer
 
Benutzerbild von SvenLittkowski
 
Registriert seit: 05.09.2004
Beiträge: 578
SvenLittkowski zeigte ein beschämendes Verhalten in der Vergangenheit
Standard PHP Array / Weaverslave: Was ist falsch?

Hi! Gerade habe ich mein vorheriges Thema abgeschlossen, und schon muss ich mich erneut an Euch wenden mit der Bitte um Hilfe. Heute ist einfach nicht mein Tag...

Ich benutze den Code-Editor Weaverslave. Bei dem nachfolgenden Code sehe ich, das die Nummern in den Indexen des Arrays bis zur Nummer 07 in Tuerkis angezeigt werden, ab der 08 jedoch in Gruen. Es existieren 9 Fotos in der Datenbank. Aber die Website zeigt nur 7 an, danach nichts mehr. Ich vermute, ich sehe den Wald vor lauter Baeumen nicht mehr...

PHP-Code:
 include("../t/DbConn.php4");
 
$Befehl="select `IDStory`, `Section`, `Headline`, `Author`, `Summary`, `Story`, ".
         
"`Photo01`, `Caption01`, `Photo02`, `Caption02`, `Photo03`, `Caption03`, `Photo04`, `Caption04`, `Photo05`, `Caption05`, ".
         
"`Photo06`, `Caption06`, `Photo07`, `Caption07`, `Photo08`, `Caption08`, `Photo09`, `Caption09`, `Photo10`, `Caption10` ".
         
"from JBJ_Story ".
         
"where `Section`='".$Disceptatio."' and `Volume`='".$Jahrgang."' and `Number`='".$Ausgabe."'".$MoreOptions;
 
$Anfrage=@mysql_query($Befehl,$Verbindung);
 include(
"../t/DbClose.php4");
 if(
$Datensatz=@mysql_fetch_assoc($Anfrage)) 
 {
  
$MyID=$Datensatz["IDStory"];
  
$_SESSION["IDStory"]=$Datensatz["IDStory"];
  
$MySection=$Datensatz["Section"];
  
$MyHeadline=$Datensatz["Headline"];
  
$MyAuthor=$Datensatz["Author"];
  
$MySummary=nl2br($Datensatz["Summary"]);
  
$MyStory=str_replace("
"
,"[/b]
"
,nl2br($Datensatz["Story"]));
  if(
$Datensatz["Photo01"]&&$Datensatz["Photo01"]!="Someone.jpg") { $Abbildungen[01]=$Datensatz["Photo01"]; }
  if(
$Datensatz["Photo01"]&&$Datensatz["Photo01"]!="Someone.jpg") { $Untertexte[01]=$Datensatz["Caption01"]; }
  if(
$Datensatz["Photo02"]&&$Datensatz["Photo02"]!="Someone.jpg") { $Abbildungen[02]=$Datensatz["Photo02"]; }
  if(
$Datensatz["Photo02"]&&$Datensatz["Photo02"]!="Someone.jpg") { $Untertexte[02]=$Datensatz["Caption02"]; }
  if(
$Datensatz["Photo03"]&&$Datensatz["Photo03"]!="Someone.jpg") { $Abbildungen[03]=$Datensatz["Photo03"]; }
  if(
$Datensatz["Photo03"]&&$Datensatz["Photo03"]!="Someone.jpg") { $Untertexte[03]=$Datensatz["Caption03"]; }
  if(
$Datensatz["Photo04"]&&$Datensatz["Photo04"]!="Someone.jpg") { $Abbildungen[04]=$Datensatz["Photo04"]; }
  if(
$Datensatz["Photo04"]&&$Datensatz["Photo04"]!="Someone.jpg") { $Untertexte[04]=$Datensatz["Caption04"]; }
  if(
$Datensatz["Photo05"]&&$Datensatz["Photo05"]!="Someone.jpg") { $Abbildungen[05]=$Datensatz["Photo05"]; }
  if(
$Datensatz["Photo05"]&&$Datensatz["Photo05"]!="Someone.jpg") { $Untertexte[05]=$Datensatz["Caption05"]; }
  if(
$Datensatz["Photo06"]&&$Datensatz["Photo06"]!="Someone.jpg") { $Abbildungen[06]=$Datensatz["Photo06"]; }
  if(
$Datensatz["Photo06"]&&$Datensatz["Photo06"]!="Someone.jpg") { $Untertexte[06]=$Datensatz["Caption06"]; }
  if(
$Datensatz["Photo07"]&&$Datensatz["Photo07"]!="Someone.jpg") { $Abbildungen[07]=$Datensatz["Photo07"]; }
  if(
$Datensatz["Photo07"]&&$Datensatz["Photo07"]!="Someone.jpg") { $Untertexte[07]=$Datensatz["Caption07"]; }
  if(
$Datensatz["Photo08"]&&$Datensatz["Photo08"]!="Someone.jpg") { $Abbildungen[08]=$Datensatz["Photo08"]; }
  if(
$Datensatz["Photo08"]&&$Datensatz["Photo08"]!="Someone.jpg") { $Untertexte[08]=$Datensatz["Caption08"]; }
  if(
$Datensatz["Photo09"]&&$Datensatz["Photo09"]!="Someone.jpg") { $Abbildungen[09]=$Datensatz["Photo09"]; }
  if(
$Datensatz["Photo09"]&&$Datensatz["Photo09"]!="Someone.jpg") { $Untertexte[09]=$Datensatz["Caption09"]; }
  if(
$Datensatz["Photo10"]&&$Datensatz["Photo10"]!="Someone.jpg") { $Abbildungen[10]=$Datensatz["Photo10"]; }
  if(
$Datensatz["Photo10"]&&$Datensatz["Photo10"]!="Someone.jpg") { $Untertexte[10]=$Datensatz["Caption10"]; } 
Lasse ich mir die Bilder direkt anzeigen, bekomme ich alle 9 Bilder geladen. Aber mittels IMPLODE sind es nur 7! Warum?

PHP-Code:
  if($Abbildungen[01]&&strpos(" ".$Abbildungen[01]." ","Someone.jpg")==0
  {
   
$Abbildungen[01]="<a href=\"Photo.php4?Disceptatio=".$Disceptatio."&&Templum=".$Templum.$MyIndicium."&&Selectio=".$MyID."&&Acies=01\" target=\"_self\">\n".
             
"<img src=\"".$Abbildungen[01]."?Reg=".time(now)."\" border=\"0\" width=\"200\">\n".
             
"</a>\n
\n"
.$Untertexte[01]."\n
\n
\n"

  }
  if(
$Abbildungen[02]&&strpos(" ".$Abbildungen[02]." ","Someone.jpg")==0
  {
   
$Abbildungen[02]="<a href=\"Photo.php4?Disceptatio=".$Disceptatio."&&Templum=".$Templum.$MyIndicium."&&Selectio=".$MyID."&&Acies=02\" target=\"_self\">\n".
             
"<img src=\"".$Abbildungen[02]."?Reg=".time(now)."\" border=\"0\" width=\"200\">\n".
             
"</a>\n
\n"
.$Untertexte[02]."\n
\n
\n"

  }
  if(
$Abbildungen[03]&&strpos(" ".$Abbildungen[03]." ","Someone.jpg")==0
  {
   
$Abbildungen[03]="<a href=\"Photo.php4?Disceptatio=".$Disceptatio."&&Templum=".$Templum.$MyIndicium."&&Selectio=".$MyID."&&Acies=03\" target=\"_self\">\n".
             
"<img src=\"".$Abbildungen[03]."?".time(now)."\" border=\"0\" width=\"200\">\n".
             
"</a>\n
\n"
.$Untertexte[03]."\n
\n
\n"

  }
  if(
$Abbildungen[04]&&strpos(" ".$Abbildungen[04]." ","Someone.jpg")==0
  {
   
$Abbildungen[04]="<a href=\"Photo.php4?Disceptatio=".$Disceptatio."&&Templum=".$Templum.$MyIndicium."&&Selectio=".$MyID."&&Acies=04\" target=\"_self\">\n".
             
"<img src=\"".$Abbildungen[04]."?".time(now)."\" border=\"0\" width=\"200\">\n".
             
"</a>\n
\n"
.$Untertexte[04]."\n
\n
\n"

  }
  if(
$Abbildungen[05]&&strpos(" ".$Abbildungen[05]." ","Someone.jpg")==0
  {
   
$Abbildungen[05]="<a href=\"Photo.php4?Disceptatio=".$Disceptatio."&&Templum=".$Templum.$MyIndicium."&&Selectio=".$MyID."&&Acies=05\" target=\"_self\">\n".
             
"<img src=\"".$Abbildungen[05]."?".time(now)."\" border=\"0\" width=\"200\">\n".
             
"</a>\n
\n"
.$Untertexte[05]."\n
\n
\n"

  }
  if(
$Abbildungen[06]&&strpos(" ".$Abbildungen[06]." ","Someone.jpg")==0
  {
   
$Abbildungen[06]="<a href=\"Photo.php4?Disceptatio=".$Disceptatio."&&Templum=".$Templum.$MyIndicium."&&Selectio=".$MyID."&&Acies=06\" target=\"_self\">\n".
             
"<img src=\"".$Abbildungen[06]."?".time(now)."\" border=\"0\" width=\"200\">\n".
             
"</a>\n
\n"
.$Untertexte[06]."\n
\n
\n"

  }
  if(
$Abbildungen[07]&&strpos(" ".$Abbildungen[07]." ","Someone.jpg")==0
  {
   
$Abbildungen[07]="<a href=\"Photo.php4?Disceptatio=".$Disceptatio."&&Templum=".$Templum.$MyIndicium."&&Selectio=".$MyID."&&Acies=07\" target=\"_self\">\n".
             
"<img src=\"".$Abbildungen[07]."?".time(now)."\" border=\"0\" width=\"200\">\n".
             
"</a>\n
\n"
.$Untertexte[07]."\n
\n
\n"

  }
  if(
$Abbildungen[08]&&strpos(" ".$Abbildungen[08]." ","Someone.jpg")==0
  {
   
$Abbildungen[08]="<a href=\"Photo.php4?Disceptatio=".$Disceptatio."&&Templum=".$Templum.$MyIndicium."&&Selectio=".$MyID."&&Acies=08\" target=\"_self\">\n".
             
"<img src=\"".$Abbildungen[08]."?".time(now)."\" border=\"0\" width=\"200\">\n".
             
"</a>\n
\n"
.$Untertexte[08]."\n
\n
\n"

  }
  if(
$Abbildungen[09]&&strpos(" ".$Abbildungen[09]." ","Someone.jpg")==0
  {
   
$Abbildungen[09]="<a href=\"Photo.php4?Disceptatio=".$Disceptatio."&&Templum=".$Templum.$MyIndicium."&&Selectio=".$MyID."&&Acies=09\" target=\"_self\">\n".
             
"<img src=\"".$Abbildungen[09]."?".time(now)."\" border=\"0\" width=\"200\">\n".
             
"</a>\n
\n"
.$Untertexte[09]."\n
\n
\n"

  }
  if(
$Abbildungen[10]&&strpos(" ".$Abbildungen[10]." ","Someone.jpg")==0
  {
   
$Abbildungen[10]="<a href=\"Photo.php4?Disceptatio=".$Disceptatio."&&Templum=".$Templum.$MyIndicium."&&Selectio=".$MyID."&&Acies=10\" target=\"_self\">\n".
             
"<img src=\"".$Abbildungen[10]."?".time(now)."\" border=\"0\" width=\"200\">\n".
             
"</a>\n
\n"
.$Untertexte[10]."\n
\n
\n"

  }

 
$Abbildungsrahmen1="\n\n\n".
  
"<table width=\"200\" border=\"1\" class=\"FramerGray\">\n".
  
"  <tr>\n".
  
"    <td width=\"200\" align=\"center\" valign=\"middle\" class=\"Spacer\">\n".
  
"      <table width=\"200\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" height=\"10\" class=\"Spacer\">\n".
  
"        <tr>\n".
  
"          <td width=\"200\" height=\"10\" align=\"left\" valign=\"top\" class=\"Captions\" class=\"Spacer\">\n";
 
$Abbildungsrahmen2=
  
"          </td>\n".
  
"        </tr>\n".
  
"      </table>\n".
  
"    </td>\n".
  
"  </tr>\n".
  
"</table>\n".
  
"<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"200\" height=\"10\">\n".
  
"  <tr>\n".
  
"    <td width=\"200\" height=\"10\" align=\"left\" valign=\"top\" class=\"Captions\">\n".
  
"    </td>\n".
  
"  </tr>\n".
  
"</table>\n\n\n\n";
 
 if(
$Abbildungen)
 {
  for(
$Runde=1;$Runde<=10;$Runde++)
  {
   if(
$Abbildungen[$Runde]) { $Abbildingsteil[$Runde]=$Abbildungsrahmen1.$Abbildungen[$Runde].$Abbildungsrahmen2; }
  }
 }
 
 
 echo(
implode("",$Abbildungen)); // Nur 7 Fotos?!? 
__________________

Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
Sven
SvenLittkowski ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.06.2007, 23:07  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard Re: PHP Array / Weaverslave: Was ist falsch?

Zitat:
Zitat von SvenLittkowski
Heute ist einfach nicht mein Tag...
und gestern?
*weglaufen*
benutze bitte bei jedem script der du schreibst
error_reporting(E_ALL); ganz oben.
bei jeder mysql abfrage or die(mysql_error())
und für fehlersuche bitte echo, var_dump und print_r.
auf diese weise kannst du dein fehler lokalisieren und wenn du nicht weiter kommst, dann wird deine gepostete quellcode wenigstens so übersichtlich, dass ich es sogar anschauen kann.
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 14.06.2007, 00:01  
Erfahrener Benutzer
 
Benutzerbild von SvenLittkowski
 
Registriert seit: 05.09.2004
Beiträge: 578
SvenLittkowski zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

He he...

Trotzdem: Hilfe erbeten.
__________________

Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
Sven
SvenLittkowski ist offline  
Alt 14.06.2007, 00:26  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Warum machst Du's Dir und vor allem uns immer so schwer:

- schlechtes DB Design: 10 Fotos + Beschreibungen gehören in extra Tabellen

- schlechtes PHP Design: 10 mal dieselbe if Bedingung mit konstanten Strings - das ist ja wohl ein Witz! Benutze Arrays, eine Schleife, eine Variable als Arrayschlüssel.
Stichwort redundanter Code. Von den wilden Sprachmischungen für die Varaiblen rede ich erst gar nicht...

- schlechtes HTML: Immer noch enthalten die URL's && statt &amp; wie in einem anderen Thread bereits angemerkt wurde. Den Images fehlt das alt Attribut, Formatieren mit mehreren
Tags ist genauso unnötig wie die width Angabe ins Stylesheet gehört. Tabellen-Layout ist out.

- Allgemein: mehr Eigeninitiative bitte. Deine letzten Postings lassen da eher nichts erkennen. Immer nur 'Bitte helfen!'.

Wenn Du den Wald vor lauter Bäumen nicht mehr siehst, dann forste den Wald auf oder schlaf Dich aus und probiere es morgen noch einmal. Solche Fragen sind doch Käse.

-- n
nikosch ist gerade online  
Alt 14.06.2007, 00:59  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

nee ernst!
mach es so wie ich dir vorgeschlagen habe.
Ausserdem habe ich dich bei deiner vorheriger Problem gefragt, warum du doppelte '&' für trennung von GET parameter verwendest.
jetzt sehe ich, das du weiterhin && verwendest.
das kann man nicht als grobe fehler bezeichnen, und funktionieren wird es auch so,
aber du belastest damit der URLparser ein wenig mehr und machst auch dir durch überflüssige zeichen in quellcode kein gefallen.

Ich sehe schon, dass die Tabellenstruktur falsch ist.
Du muss versuchen deine bilder und die dazugehörige kommentare in eine Extratabelle zu bringen die mit JBJ_Story über einen fremdschlüssel verbunden ist.
tabelle bilder
id | id_JBJ_Story | photo| Caption

Auch die gleich vorkommende aufgaben, wie in zeilen von 19 bis 40 stecken, kannst du dir durch die schleifen sparen
PHP-Code:
$Abbildungen = array();
$Untertexte   = array();
for(
$i=1;$i<=10;$i++)
{
  
//zweistelige zahl mit einem 0 als platzhalter 
  
$dig2=sprintf("%02d",$i);
  
$photo='Photo01'.$dig2;
  
$capt='Caption'.$dig2;
  if(!empty(
$Datensatz[$photo])&&$Datensatz[$photo]!="Someone.jpg"
   { 
      
$Abbildungen[$i] = $Datensatz[$photo];
      
$Untertexte[$i]   = $Datensatz[$capt];  
   }

es dauert nicht viel länger, als 20 mal kopieren und einfügen und sieht übersichtlicher aus.
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 14.06.2007, 02:25  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Mit 0 beginnende Zahlen werden als Oktalwert interpretiert, haben als Basis also nicht 10 sondern 8.

PHP-Code:
<?php
var_dump
(08);
?>
ergibt int(0), denn 8 ist kein gültiger Buchstabe des Oktalalphabets.


Versuch mal Redundanz in deinem Code und deinen Daten zu vermeiden Sven, das ist ganz gruseliger Code! Wir wollen dich hier nicht schikanieren, aber copy&paste ist nicht alles, einfach Gemeinsamkeiten erkennen und Differenzen dann durch Platzhalter ersetzen.
Zergling-new ist offline  
Alt 14.06.2007, 17:54  
Erfahrener Benutzer
 
Benutzerbild von SvenLittkowski
 
Registriert seit: 05.09.2004
Beiträge: 578
SvenLittkowski zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zergling,

Du bist ein Genie! Erst Dein Hinweis in Bezug auf die Oktal-Interpretation gab mir die Loesung! Ich danke natuerlich auch allen anderen fuer Ihre Beitraege, mir sind auch kritische Beitraege willkommen.

Zergling, ich hatte keine Ahnung, dass mit "0" beginnende Werte als Oktalwerte interpretiert werden. Das erklaert natuerlich auch, warum Weaverslave verschiedene Farben fuer jene Zahlen benutzt.

Slava: Ich hatte das doppelte "&&" bei verschiedenen Websites im Einsatz gesehen, dies war zu der Zeit, wo ich selbst anfing, mit Page-Parametern zu arbeiten. Daher uebernahm ich es, und da es funktionierte, habe ich natuerlich niemals nach anderen Moeglichkeiten geforscht. Ich werde es aber jetzt mal ausprobieren. Da ich an verschiedenen Projekten arbeite, bin ich etwas langsam im Umsetzen.

Hmm, mein Coding ist mies? Werde es aendern, aber dies hat eine niedrigere Prioritaet, da ich die vorhandenen Projekte fertigstellen muss, so schnell wie moeglich. Wird aber irgendwann mein Focus sein.

Zergling: Nochmals vielen Dank fuer die Loesung!
__________________

Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
Sven
SvenLittkowski ist offline  
Alt 15.06.2007, 17:55  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Zitat:
Hmm, mein Coding ist mies? Embarassed Werde es aendern, aber dies hat eine niedrigere Prioritaet, [..]
!!! Also, ne Es ist ja auch so, dass ein sauberer Stil dir auch bei der Arbeit hilft!
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
array ausgabe falsch? se-clan PHP Tipps 2007 2 07.01.2007 22:20
ARRAY: alle möglichen Kombinationen Tentacle PHP Tipps 2006 13 12.05.2006 00:18
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Array wie auslesen? PHP Tipps 2005 7 07.03.2005 11:43
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:34 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.