php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.07.2004, 14:53  
Gast
 
Beiträge: n/a
Standard Datenbankergebnis in Array und per Index darauf zugreifen

Hallo,
folgende Situation: es geht um einen Online-Katalog. Ich bin auf der Artikeldetailseite (beim Aufruf wird per GET/URL die Artikelnummer angehängt) und möchte einen Link zum nächsten und einen zum vorigen Produkt einbinden.

Dachte mir:
- ich mache eine entsprechende SQL-Abfrage, die alle ArtikelNr. holt
- lade die einzelnen Zeilen in ein Array
- ermittle die Array-IndexNr. ($i) des aktuellen Produktes
- und kann dann mittels $i-1/$i+1 an die Artikelnummer des vor- und des nachgelagerten Produktes kommen
- und diese als Link übergeben.

Leider scheitere ich sehr früh
Das SQL ist ok, aber ich bekomme immer nur eine Zeile in das Array.
Auch meine Schleifenversuche blieben bislang ohne Erfolg.

Wäre super wenn mir da jemand raushelfen könnte.

Greetz Daniel
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 29.07.2004, 14:58  
Gast
 
Beiträge: n/a
Standard

poste mal deine Lösung, sehe ich mir an ..
 
Alt 29.07.2004, 15:00  
Gast
 
Beiträge: n/a
Standard

Welche Datenbank verwendest Du? Bleibt es dabei und/oder unterstützen alle möglichen Varianten SELECT ... LIMIT... (das ist -glaube ich- sql92 Standard)?
Dann sieh Dir mal http://www.dclp-faq.de/q/q-mysql-seitenweise.html an
 
Alt 29.07.2004, 15:10  
Gast
 
Beiträge: n/a
Standard

Viel ist von (m)einer "Lösung" noch nicht zu sehen. Vor lauter ausprobieren ist es nur noch ein Konglumerat von auskommentierten Zeilen

Hier einer der gesäuberten Ansätze:
Code:
function browseDetails($connection)
{
	$query = "SELECT ARTICLE
		FROM ARTICLE_DETAILS
		WHERE DETAIL_LANG = '";
	$query .= $GLOBALS['lang']; 
	$query .= "' ORDER BY ARTICLE";

	$result = mysql_query($query, $connection);
	

	$i = 0;
	$IDs = array();
	
	while ($row=mysql_fetch_row($result))
	{
		$ID[$i] = $row->ARTICLE;
		$i++;
	}
Hoffe ich muß mich nicht zu sehr schämen.

@Volker:
Ich verwende MySQL 3.x.
Danke, da hatte ich auch schon draufgeschaut, habe ähnliches auch im guten O'Reilly-Buch, doch ich dachte das mir dies nicht viel bringt. Würde es sich um die Übericht handeln schon, aber hier bin ich ja bereits auf der Detailseite - oder steh' ich auf'm Schlauch.
 
Alt 29.07.2004, 15:17  
Gast
 
Beiträge: n/a
Standard

Zitat:
oder steh' ich auf'm Schlauch.
Einer von uns beiden vielleicht schon

Ich beschreibe mal, wie ich mir Deine Problemstellung gerade vorstelle. Wenn das falsch ist, ist vermutlich auch die Lösung anders.
Benutzer sollen über den webbrowser die Detailansicht jeweils eines Datensatzes angezeigt bekommen. Gibt es bei der gewählten Sortierung einen vorherigen Datensätzen, soll ein link eingeblendet werden, der bei Aufruf diesen Datensatz anzeigt. Ebenso mit nachfolgenden Datensätzen.

Wenn das so ungefähr hinkommt, lies Dir den Artikel mal mit m=1 im Hinterkopf durch.
Das Problem mit Deinem Feld bei diesem Szenario ist, dass es zwischen zwei Aufrufen des Benutzer/clients verloren geht (oder in session-Daten gespeicher und eingelesen werden oder noch schlimmer mit jedem request komplett übertragen muss). Du müsstest es also jedes Mal komplett neu einlesen. Dir reicht aber ein einzelner Datensatz. Das, was Du als Index im Feld verwenden willst, kannst Du auch als offset bei LIMIT verwenden.
 
Alt 29.07.2004, 16:36  
Gast
 
Beiträge: n/a
Standard

hehe, na dann hoff' ich das ich schnell von dem Schlauch runterkomme ohne mich zu verheddern. :wink:

Habe mir das Ganze nun doch ausführlich zu Gemüte geführt und versucht dieses zu integrieren. Ganz tut's noch nicht, aber vielleicht kann ich das dem Skript ja morgen früh mit frischer Energie besser beibringen.
 
Alt 30.07.2004, 11:48  
Gast
 
Beiträge: n/a
Standard

Der Tag danach:
Habe nun in der Artikel-Detailseite das Skript untergebracht und nach einer Weile auch mit sichtbarem Ergebnis zum laufen gebracht.

Leider habe ich trotz leicht rauchendem Kopf noch keine Idee wie ich nun korrekt von der ArtikelÜBERSICHT-Seite die Links auf die jeweilige ArtikelDETAIL-Seite setze.

Das "Link setzen" an und für sich is scho klar , aber wie übergebe ich welchen Parameter damit er auch die richtige Detailseite anzeigt? Bisher habe ich über die ArtikelID referenziert. Dies fand ich persönlich auch recht gut (z.B. Schlagwort Suchmaschinen). Das geht jetzt ja aber nicht mehr, oder?

Any help?

Hier Auszug des Codes von der ArtikelÜBERSICHT-Seite:

Code:
// Datenbank-Abfrage
$query = "SELECT ARTICLE.ART_ID,
          ARTICLE_DETAILS.DESCRIPTION_SHORT
          FROM ARTICLE, ARTICLE_DETAILS
          WHERE ARTICLE.ART_GROUP_ID = '" . $articlegroup . "'
          AND ARTICLE.ART_ID = ARTICLE_DETAILS.ARTICLE
          AND ARTICLE_DETAILS.DETAIL_LANG = '" . $lang . "'  
          ORDER by ARTICLE.ART_ID";
          
// Ergebnis der Datenbankabfrage
$result = mysql_query ($query, $connection);



//	Solange noch Zeilen in der Ergebnismenge vorhanden sind,
// 	lies die aktuelle Zeile in das Array $row
while ($row = mysql_fetch_array($result))
	{
	echo "\n";
	
	echo "<table width=\"530\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bordercolor=\"\" class=\"standardtyper\">\n";
	echo " <tr>\n";
	echo "  <td width=\"515\">\n";
	
	echo "   <table width=\"515\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" bordercolor=\"#CCCCCC\" class=\"standardtyper\">\n";
	echo "     <tr>\n";
    echo "       <td>\n";
    echo "         <table width=\"515\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"standardtyper\">\n";
    echo "           <tr>\n"; 
    echo "             <td width=\"5\" valign=\"top\"></td>\n";
    echo "             <td width=\"100\" valign=\"top\">
" . $row["ART_ID"] . "
\n";
    echo "                
\n";
    echo "                <a href=\"katalog_articledetail.php?article=" . $row["ART_ID"] . "\"><img src=\"" . $path_to_article_images . ereg_replace("/","_",ereg_replace("-","_",$row["ART_ID"])) . ".thumb.jpg\" border=\"0\" alt=\"" . $row["ART_ID"] . "\"> </a></td>\n";
//    echo "                <a href=\"#zoom\" onClick=\"MM_openBrWindow('zoom.php?article=" . ereg_replace("/","_",ereg_replace("-","_",$row["ART_ID"])) . "','','toolbar=no,status=yes,scrollbars=yes,resizable=yes,width=840,height=600,top=0,left=0')\"><img src=\"" . $path_to_article_images . ereg_replace("/","_",ereg_replace("-","_",$row["ART_ID"])) . ".thumb.jpg\" border=\"0\" alt=\"" . $row["ART_ID"] . "\"> </a></td>\n";
    echo "             <td width=\"405\" valign=\"top\">
&gt;<a href=\"katalog_articledetail.php?article=" . $row["ART_ID"] . "\">Details</a>&gt;<a href=\"" . $path_to_datasheets . "?datasheet_id=" . $row["ART_ID"] . "_" . $lang . "\" target=\"_blank\">PDF-Datenblatt</a>&gt;<a href=\"go-to-filesafe.php?directory=loetstopmasken&article=" . $row["ART_ID"] . "\" target=\"_blank\">L&ouml;tstopmaske</a>&gt;<a href=\"go-to-filesafe.php?directory=zeichnungen&article=" . $row["ART_ID"] . "\" target=\"_blank\">Techn. Zeichnung</a>\n";
    echo "                
\n";
    echo "                
\n";
    echo "                " . $row["DESCRIPTION_SHORT"] . "</td>\n";
    echo "           </tr>\n";
    echo "           <tr>\n";
    echo "             <td width=\"5\" valign=\"top\"></td>\n";
    echo "             <td width=\"100\" valign=\"top\"></td>\n";
    echo "             <td width=\"405\" valign=\"top\" align=\"right\">\n";
    echo "                <input type=\"submit\" name=\"send\" value=\"Artikel merken\" class=\"formbutton\">\n";
    echo "                 </td>\n";
    echo "             <td width=\"5\" valign=\"top\"></td>\n";
    echo "           </tr>\n";
    echo "         </table>\n";
    echo "       </td>\n";
    echo "     </tr>\n";
    echo "   </table>\n";
    
    echo "  </td>\n";
    echo "  <td width=\"15\" valign=\"bottom\" align=\"right\">\n";
    echo "   <a href=\"#top\" onMouseOut=\"MM_swapImgRestore()\" onMouseOver=\"MM_swapImage('toplink','','../../sources/graphics/top_arrows1b.gif',1)\">\n";
    echo "   <img src=\"../../sources/graphics/top_arrows1a.gif\" alt=\"Zum Seitenbeginn\" border=\"0\">\n";
    echo "   </a>";
    echo "  </td>\n";
    echo " </tr>\n";
    echo "</table>\n";
    echo "\n
\n";
	}	
// RollOver-Effekt für "Top"-Link funktioniert noch nicht
	
// Schliessen der Datenbank-Verbindung
mysql_close($connection);
 
Alt 30.07.2004, 18:39  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hi. den code habe ich mir nicht durchgelesen. da ist einfach zu viel HTML-kram drin.
der ist für deine frage absolut irrelevant.

allerdings kannst du dein problem ja so lösen, dass du den link folgendermaßen erstellst.
PHP-Code:
    while ( $Object mysql_fetch_object($res) )
    {
        
printf ("<a href=\"detail.php?itemID=%d\">%s</a>",
                
$Object->id,
                
$Object->artikelname);
    } 
auf der seite details.php verwendest du dann die ID, um die gewünschten informationen aus der DB heruaszulesen.
PHP-Code:
<?php

    
if ( $_GET['itemID']) AND is_int($_GET['itemID']) )
    {
        
$sql "SELECT
                    information1,
                    information2
                FROM
                    tabelle
                WHERE
                    id = " 
$_GET['itemID'];
                    
        
$res mysql_query($sql) or die (mysql_error());
        
        if ( 
mysql_num_rows($res) == )
        {
            
$Object mysql_fetch_object($res);
            
# Daten ausgeben
        
}
        else
        {
            echo 
"No entries for ID $_GET['itemID] found".
            
# z.B. Weiterleitung auf letzte besuchte Seite
        
}
    }
    else
    {
        echo 
"No ID.";
    }
    
?>
das sollte dir eigentlich weiterhelfen.

grüße ben.
imported_Ben 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
Prototype Ajax Array Datenmüll notyyy HTML, Usability und Barrierefreiheit 2 08.04.2008 10:57
Array index updaten obi PHP Tipps 2008 4 28.11.2007 15:08
Index vom Array zurücksetzen kampfnickel PHP Tipps 2007 6 08.01.2007 17:24
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
index eines elements in einem array ermitteln imported_kontur PHP Tipps 2007 3 02.12.2005 10:05
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
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
array durchsuchen und Index in neues schreiben nieselfriem PHP Tipps 2005-2 8 04.06.2005 16:02
Array Index wird nicht hochgezählt PHP Tipps 2005 5 25.05.2005 11:01
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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
innerhalb der datenbank einen link setzen, datenbank ergebnis in array, datenbankergebnis in ein array, php datenbankergebnis, über id auf ein datenfeld zugreifen php, php datenbankergebnisse in array, php indexnr array, mit index auf ein array zugreifen, php auf einzelne zeilen eines arrays zugreifen, toplink tablerow, einzelne datenbankergebnisse einbinden, html datenbankergebnisse anzeigen, php ein datenbankergebnis abfragen und ausgeben, datenbankergebnis in array einlesen, datenbankergebnis vergleichen, sql indexnr eins datensatzes

Alle Zeitangaben in WEZ +1. Es ist jetzt 20:08 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.