Πρόβλημα με Array απο άλλο αρχέιο που κάνω include.

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

Πρόβλημα με Array απο άλλο αρχέιο που κάνω include.

Δημοσίευση από netpumber » 01 Ιουν 2011 19:25

Καλησπέρα σας..

Λοιπόν έχω δυο php αρχεία..

#1 (Contact.php)

Κώδικας: Επιλογή όλων

function getContactDetails()
	{
		$query = "SELECT * FROM contact";
		$result = mysql_query($query);
		
		$allCont = Array();
		
		while($row = mysql_fetch_assoc($result))
		{
			$cont = new ContactVO();
			$cont->id	 	= 	$row['id'];
			$cont->title 	= 	$row['title'];
			$cont->text  	= 	$row['text'];
			$cont->author 	= 	$row['author'];
			$cont->_date 	= 	$row['date'];
			
			$allCont[] = $cont;
			
		}
		
		
		return $allCont;
		
	}

και το #2 (viewContact.php)

Κώδικας: Επιλογή όλων

include ('Contact.php');

$contDetails = Array();
$contDetails[] = getContactDetails();

echo $contDetails['title'];
Το πρόβλημα εμφανίζεται όταν εκτελείται το viewContact.php και λέει
Notice: Undefined index: title in C:\wamp\www\test\viewContact.php on line 11
Γιατί μου λέει πως δεν έχει οριστεί ? Τι θα έπρεπε να είχα κάνει ?

Ευχαριστώ.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Πρόβλημα με Array απο άλλο αρχέιο που κάνω include.

Δημοσίευση από dva_dev » 01 Ιουν 2011 19:38

Ο πίνακας contact τι στήλες έχει;

netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

Πρόβλημα με Array απο άλλο αρχέιο που κάνω include.

Δημοσίευση από netpumber » 01 Ιουν 2011 19:41

id , title , text , author και date

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

Πρόβλημα με Array απο άλλο αρχέιο που κάνω include.

Δημοσίευση από Khronos » 01 Ιουν 2011 20:00

Το κάθε στοιχείο του πίνακα $contDetails απ'ότι κατάλαβα είναι ένας πίνακας. Οπότε σωστά σου λέει οτι δεν υπάρχει το index "title".
Δοκίμασε να πεις

Κώδικας: Επιλογή όλων

echo $contDetails[0];

netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

Πρόβλημα με Array απο άλλο αρχέιο που κάνω include.

Δημοσίευση από netpumber » 01 Ιουν 2011 20:09

Αυτο τυπώνει την λέξη Array..

Αν βάλω 1 βγάζει πάλι σφάλμα..

Notice: Undefined offset: 1 in C:\wamp\www\opcode\includes\view\viewContactMain.php on line 11

Επειδή μάλλον υπάρχη μια μόνο εγγραφή στον πίνακα..

Πως όμως θα τυπώσω το title , text κτλ ?

netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

Πρόβλημα με Array απο άλλο αρχέιο που κάνω include.

Δημοσίευση από netpumber » 01 Ιουν 2011 20:27

Αν γράψω

print_r($contDetails);

γυρνάει

Array ( [0] => Array ( [0] => ContactVO Object ( [id] => 1 [title] => test [text] => test text [author] => admin [_date] => 0000-00-00 ) ) )

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

Πρόβλημα με Array απο άλλο αρχέιο που κάνω include.

Δημοσίευση από Khronos » 01 Ιουν 2011 20:29

$contDetails[0][0]['title']

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πρόβλημα με Array απο άλλο αρχέιο που κάνω include.

Δημοσίευση από korgr » 01 Ιουν 2011 20:31

Αυτό που σου επιστρέφεται είναι ένα array που σε κάθε εγγραφή περιέχει ένα object με 5 ιδιότητες.
Για να δεις σωστά κάποια περιεχόμενα (πχ όλους τους τίτλους) μάλλον πρέπει να κάνεις κάτι σαν:

foreach($contDetails as $row){
echo $row->title."<br>";
}

netpumber
Δημοσιεύσεις: 103
Εγγραφή: 08 Μαρ 2009 19:06

Πρόβλημα με Array απο άλλο αρχέιο που κάνω include.

Δημοσίευση από netpumber » 01 Ιουν 2011 20:40

Hmm Βαζοντας αυτό

echo $contDetails[0][0]['title'];

Γυρνάει

Fatal error: Cannot use object of type ContactVO as array in

και το διόρθωσα με το

echo $contDetails[0][0]->title;

Ευχαριστώ πολύ πάντως για τις απαντήσεις σας..

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Πρόβλημα με Array απο άλλο αρχέιο που κάνω include.

Δημοσίευση από jpk » 02 Ιουν 2011 13:55

Ουσιαστικά σε αυτό που αναφέρεσαι είναι σε λίστα αντικειμένων. Δεν έχει τίποτα κακό ο τρόπος που το κάνεις (ίσα &#8211; ίσα) ειδικά αν είναι λίστα από λίστες αντικειμένων (αν δεν είναι έτσι δεν έχεις λόγο να λες $contDetails = Array(); Και θα μπορούσες κατευθείαν να πεις $contDetails = getContactDetails(); )

Αν έχεις διάθεση ασχολήσου λίγο με δύο Interfaces , Iterator και IteratorAggregate .
http://php.net/manual/en/class.iteratoraggregate.php
http://php.net/manual/en/class.iterator.php
Πριν κάποιο καιρό έδωσα και εγώ ένα παράδειγμα (τμήμα ενός framework στην ανάπτυξη του οποίου συμμετέχω) για Indexed Objects List.
http://www.freestuff.gr/forums/viewtopi ... c&start=15

Σίγουρα δεν υπάρχει τίποτα λάθος στον τρόπο που το κάνεις , αλλά όσο η ανάπτυξη εφαρμογών PHP γίνεται όλο και από περισσότερους με αντικειμενοστραφή προγραμματισμό, η σημασία της λίστας αντικειμένων αντί απλά της ύπαρξης ενός array από αντικείμενα ενισχύεται.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες