Εμφάνιση κατηγοριών σε λάθος σημείο

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

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

Απάντηση
Άβαταρ μέλους
xmavidis
Honorary Member
Δημοσιεύσεις: 1217
Εγγραφή: 02 Δεκ 2003 19:59
Τοποθεσία: Ηράκλειο

Εμφάνιση κατηγοριών σε λάθος σημείο

Δημοσίευση από xmavidis » 05 Απρ 2005 21:39

Συγνώμη για τον τίτλο, δεν ήξερα τι να γράψω...

Φτιάχνω ένα news script και αντιμετοπίζω ένα πρόβλημα.

Χρησιμοποιώ μια κλάση για το template system με tpl αρχεία.
Η βάση δεδομένων μου αποτελείται από τους πίνακες posts και categories.

Για να κάνω parse το tpl αρχείο χρησιμοποιώ τον παρακάτω κώδικα:

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

$tplObj = new tplSys("./templates");
    $tplObj->getFile( array(
        'addnewsform' => '/form_addnews.tpl' )
    );
		
	 $tplObj->varRef( "addnewsform", array(
		  "MESSAGE"  => "&#123;$msg&#125;<br /><br />&#123;$_POST&#91;'file'&#93;&#125;",
		"CAT_LIST" => catList&#40;$sql, $conn, $row&#41;,
		  "SUBMIT"   => "addnews" &#41;
		  &#41;;
		  
		  $tplObj->parseDynamic&#40;"addnewsform"&#41;;
Ο παραπάνω κώδικας βρίσκεται μέσα στο αρχείο add.php το οποίο καταχωρεί τις εγγραφές στη βάση.

Έχω φτιάξει και μια συνάρτηση για να εμφανίζει τις κατηγορίες μέσα σε drop down menu:

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

function catList&#40;$sql, $conn, $row&#41; &#123;
 
 global  $dbhost, $dbuser, $dbpass, $dbname;
 
 $conn = @mysql_connect&#40;$dbhost, $dbuser, $dbpass&#41; or die&#40;mysql_error&#40;&#41;."<p>FUNCTION&#58; catLis
t&#40;&#41; - Cannot connect</p>"&#41;;
 @mysql_select_db&#40;$dbname&#41;;
 
 $sql = @ mysql_query&#40;"SELECT * FROM categories"&#41;;
 
 echo "<select name=\"cat\">";

 while&#40;$row = mysql_fetch_array&#40;$sql&#41;&#41; &#123;
 global $catid, $catname;
 $catid   = $row&#91;'catid'&#93;;
 $catname = stripslashes&#40;$row&#91;'name'&#93;&#41;; 
 
 echo "<option value=\"&#123;$catid&#125;\">&#123;$catname&#125;</option>";
 
 &#125;
 echo "</select>";
  
mysql_free_result&#40;$sql&#41;;
mysql_close&#40;$conn&#41;;
 
&#125;
Αν δείτε στον κώδικα του add.php έχω το παρακάτω:

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

 "CAT_LIST" => catList&#40;$sql, $conn, $row&#41;
Και τοποθετώ το 'CAT_LIST' μέσα στο αρχείο form_addnews.php:

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

 
...
 <div align="center">Κατηγορία&#58; <br />
  &#123;CAT_LIST&#125;
  </div>
...
Καλώ το αρχείο add.php και μου το εμφανίζει πάνω πάνω και όχι κάτω από τη λέξη κατηγορία. Δείτε εδώ
I want to know God’s thoughts; the rest are details.
Albert Einstein

Άβαταρ μέλους
softius
Script Master
Δημοσιεύσεις: 241
Εγγραφή: 11 Ιαν 2004 19:07
Επικοινωνία:

Εμφάνιση κατηγοριών σε λάθος σημείο

Δημοσίευση από softius » 05 Απρ 2005 22:14

Η συνάρτηση σου δεν έπρεπε να τυπώνει (echo) την λίστα, αλλά να την επιστρέφει ως string. Στις μεταβλητές του template αναθέτεις τιμές που θα αντικαταστήσουν το "κλειδί", στην προκειμένη περίπτωση το CAT_LIST. Μάλλον θα είχες την εντύπωση πως θα γινόταν κλήση της συνάρτησης, αλλά δεν συμβαίνει αυτο. Ακολουθεί η συνάρτησή sου τροποποιημένη, ώστε να επιστρέφει την λίστα ;)

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

function catList&#40;$sql, $conn, $row&#41; &#123;
 
  global  $dbhost, $dbuser, $dbpass, $dbname;
 
  $conn = @mysql_connect&#40;$dbhost, $dbuser, $dbpass&#41; 
    or die&#40;mysql_error&#40;&#41;."<p>FUNCTION&#58; catLis
t&#40;&#41; - Cannot connect</p>"&#41;;
  @mysql_select_db&#40;$dbname&#41;;
 
  $sql = @ mysql_query&#40;"SELECT * FROM categories"&#41;;
 
  $select= "<select name=\"cat\">";

  while&#40;$row = mysql_fetch_array&#40;$sql&#41;&#41; &#123;
    global $catid, $catname;
    $catid   = $row&#91;'catid'&#93;;
    $catname = stripslashes&#40;$row&#91;'name'&#93;&#41;;
    $select .= "<option value=\"&#123;$catid&#125;\">&#123;$catname&#125;</option>";
  &#125;
  $select .= "</select>";
 
  mysql_free_result&#40;$sql&#41;;
  mysql_close&#40;$conn&#41;;
 
  return $select;
&#125;

Άβαταρ μέλους
xmavidis
Honorary Member
Δημοσιεύσεις: 1217
Εγγραφή: 02 Δεκ 2003 19:59
Τοποθεσία: Ηράκλειο

Εμφάνιση κατηγοριών σε λάθος σημείο

Δημοσίευση από xmavidis » 06 Απρ 2005 00:20

Δούλεψε! :P
Ευχαριστώ πάρα πολύ! :)
I want to know God’s thoughts; the rest are details.
Albert Einstein

Απάντηση

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

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

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