Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

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

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

Απάντηση
tsalaki
Δημοσιεύσεις: 31
Εγγραφή: 09 Μαρ 2009 20:27

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

Δημοσίευση από tsalaki » 09 Ιαν 2011 12:46

Καλησπέρα σε όλους,

Αναρωτιέμαι αν μπορώ να έχω μια drop down list στη φόρμα μου και να είναι επιλεγμένο το στοιχείο με βάση την τιμή που έχω στη βάση μου. Για παράδειγμα έχω 2 τύπους χρηστών: τους γιατρούς και τους διαχειριστές. Μπορώ στη σελίδα που αφορά το προφίλ του χρήστη να έχω μια λίστα ΓΙΑΤΡΟΣ, ΔΙΑΧΕΙΡΙΣΤΗΣ, και να είναι επιλεγμένο το στοιχείο που αντιστοιχεί στο συγκεκριμένο χρήστη(αν είναι γιατρός το ΓΙΑΤΡΟΣ)?? Και αν ναι πως μπορώ να το υλοποιήσω??

Άβαταρ μέλους
stevebat
Script Master
Δημοσιεύσεις: 307
Εγγραφή: 05 Αύγ 2009 15:54
Επικοινωνία:

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

Δημοσίευση από stevebat » 09 Ιαν 2011 13:42

Μπορείς να το κάνεις αυτό, πάρε το παρακάτω script Και διαμόρφωσε το στις ανάγκες σου.
Όπου $active_value βάλε την δική σου μεταβλητή που βγάζει τα αποτελέσματα από την βάση.
Εγώ χρησιμοποιώ αριθμούς για τα Rank
0 == Γιατρός
Διαφορετικό του 0 == Διαχειριστής

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

echo "<select name=\"active\" size=\"1\"><option " . &#40;$active_value == "0" ? "selected " &#58; ""&#41; . "value=\"0\">ΓΙΑΤΡΟΣ</option><option " . &#40;$active_value != "0" ? "selected " &#58; ""&#41; . "value=\"1\">ΔΙΑΧΕΙΡΙΣΤΗΣ</option></select>\n";
Αν έχεις πρόβλημα δώσε μου τα δικά σου κριτήρια και θα στο φτιάξω εγώ

tsalaki
Δημοσιεύσεις: 31
Εγγραφή: 09 Μαρ 2009 20:27

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

Δημοσίευση από tsalaki » 09 Ιαν 2011 16:00

Παρακάτω σου παραθέτω τμήμα του κώδικά μου. Όπως θα δεις τη φόρμα την δημιουργώ εκτός <?php ?> και ο λόγος είναι ότι δεν έχω βρει τον τρόπο με τον οποίο μπορώ να κάνω echo html tags στην php :). Για να σου δώσω να καταλάβεις η φόρμα θα περιέχει 2 λίστες. Η μία είναι η ειδικότητα (γιατρός (value=1), διαχειριστής(value=2)) και η άλλη το νοσοκομείο που θα περιέχει μια λίστα με νοσοκομεία (και αυτά με τα δικά τους value).
Όπως θα δεις στον κώδικα εγώ τα ορίζω ως textfields απλά για να δω αν μου εμφανίζουν τις σωστές τιμές από τη βάση, πρέπει όμως να μετατραπούν σε select.

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

<?php
if&#40;isset&#40;$_SESSION&#91;'username'&#93;&#41; && isset&#40;$_SESSION&#91;'password'&#93; &#41;&#41;&#123; 
      $query = "SELECT e.perigrafi_eidikotitas as description, 
   u.username AS username, 
   u.password AS password, 
   u.epwnimo_user AS surname, 
   u.onoma_user AS name, 
   u.dieuthinsi_user AS address, 
   u.tilefwno_user AS phone,
   n.onoma_nos AS hospital 
FROM users AS u, eidikotita AS e, nosokomeio AS n 
WHERE u.kwdikos_eidikotitas = e.kwdikos_eidikotitas 
AND u.kwd_nos_erg = n.kwdikos_nos 
AND username ='" . $_SESSION&#91;'username'&#93; . "'"; 
      $result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;; 
      $row = mysql_fetch_array&#40;$result&#41;; 
	   &#125; 
?>
<form name="profile">
 <table width="300" border="0" align="center" cellpadding="2" cellspacing="0">
    <tr>
      <td width="112"><b>Όνομα &#58;</b></td>
      <td width="188"><input name="name" type="text" class="textfield" id="name" value="<?php echo $row&#91;name&#93;?>"/></td>
    </tr>
    <tr>
      <td><b>Επίθετο &#58;</b></td>
      <td><input name="surname" type="text" class="textfield" id="surname" value="<?php echo $row&#91;surname&#93;?>"/></td>
    </tr>
    <tr>
      <td><b>Ειδικότητα &#58;</b></td>
      <td>
      <input name="description" type="text" class="textfield" id="description" value="<?php echo $row&#91;description&#93;?>"/></td>
    </tr>
    <tr>
      <td><b>Νοσοκομείο &#58;</b></td>
      <td><input name="hospital" type="text" class="textfield" id="hospital" value="<?php echo $row&#91;hospital&#93;?>"/></td>
    </tr>
    <tr>
      <td><b>Διεύθυνση &#58;</b></td>
      <td><input name="address" type="text" class="textfield" id="address" value="<?php echo $row&#91;address&#93;?>"/></td>
    </tr>
    <tr>
      <td><b>Τηλέφωνο &#58;</b></td>
      <td><input name="phone" type="text" class="textfield" id="phone" value="<?php echo $row&#91;phone&#93;?>"/></td>
    </tr>
     <tr>
      <td colspan="2">&nbsp;</td>
     </tr>
     <tr>
      <td colspan="2" align="center"><i>Αν επιθυμείτε αλλαγή του κωδικού πρόσβασής σας εισάγετε το νέο κωδικό στο ακόλουθο πεδίο.</i></td>
     </tr>
      <tr>
      <td colspan="2">&nbsp;</td>
     </tr>
    <tr>
      <td><b>Νέος κωδικός&#58;</b></td>
      <td><input name="password" type="text" class="textfield" id="password" value=" "/></td>
    </tr>
    <tr>
      <td align="right">&nbsp;</td>
      <td><input type="submit" name="save" value="Αποθήκευση" class="btn" /></td>
    </tr>
  </table>
</form>

Άβαταρ μέλους
stevebat
Script Master
Δημοσιεύσεις: 307
Εγγραφή: 05 Αύγ 2009 15:54
Επικοινωνία:

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

Δημοσίευση από stevebat » 09 Ιαν 2011 21:45

Λοιπόν θες κάτι σαν αυτό
Όπου <?=$row[hospital_id]?> εμφανίζει την τιμή μιας option και όπου <?=$row[hospital]?>* εμφανίζει το όνομα μιας option
Διαμόρφωσε το σύμφωνα με τις ανάγκες σου και αν έχεις πρόβλημα ποσταρε το

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

<select name="stoixeia">
<?
while&#40;row=mysql_fetch_array&#40;$result&#41;&#41;&#123;
?>
<option value="<?=$row&#91;hospital_id&#93;?>"><?=$row&#91;hospital&#93;?></option>

<?php &#125; ?>
</select>


*Το <?=$mpa?> κάνει echo την μεταβλητή $bla
**Αν κάποιος έχει κάποιο καλύτερο τρόπο ας τον ποσταρει

tsalaki
Δημοσιεύσεις: 31
Εγγραφή: 09 Μαρ 2009 20:27

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

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

Καλησπέρα παρακάτω σου παραθέτω τον κώδικα όπως τον τροποποίησα:

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

<?php
if&#40;isset&#40;$_SESSION&#91;'username'&#93;&#41; && isset&#40;$_SESSION&#91;'password'&#93; &#41;&#41;&#123; 
      $query = "SELECT e.perigrafi_eidikotitas as description, 
   u.username AS username, 
   u.password AS password, 
   u.epwnimo_user AS surname, 
   u.onoma_user AS name, 
   u.dieuthinsi_user AS address, 
   u.tilefwno_user AS phone,
   n.onoma_nos AS hospital,
   u.kwd_nos_erg AS hospital_id,
   u.kwdikos_eidikotitas AS description_id
FROM users AS u, eidikotita AS e, nosokomeio AS n 
WHERE u.kwdikos_eidikotitas = e.kwdikos_eidikotitas 
AND u.kwd_nos_erg = n.kwdikos_nos 
AND username ='" . $_SESSION&#91;'username'&#93; . "'"; 
      $result = mysql_query&#40;$query&#41; or die&#40;mysql_error&#40;&#41;&#41;; 
      $row = mysql_fetch_array&#40;$result&#41;; 
	   &#125; 
?>
Αυτό είναι το sql query μου και στη φόρμα κάνω το εξής:

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

 <tr>
      <td><b>Νοσοκομείο &#58;</b></td>
      <td>
        <select name="hospital"> 
            <?php 
            while&#40;$row=mysql_fetch_array&#40;$result&#41;&#41;&#123; 
            ?> 
            <option value="<?=$row&#91;hospital_id&#93;?>"><?=$row&#91;hospital&#93;?></option> 
             <?php &#125; ?> 
       </select> 
     </td>
    </tr>
Αυτό έχει ως αποτέλεσμα να δημιουργηθεί η λίστα χωρίς όμως καμία τιμή μέσα!Και επίσης αυτό που παρατήρησα είναι ότι τα στοιχεία που ακολουθούν στη φόρμα μου (δηλ. η διεύθυνση και το τηλ) που τα παίρνω:

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

<input name="phone" type="text" class="textfield" id="phone" value="<?php echo $row&#91;phone&#93;?>"/>
Δεν εμφανίζονται καθόλου.
Εγώ αυτό που θέλω είναι η λίστα να περιέχει ΟΛΑ τα νοσοκομεία στην προκειμένη περίπτωση και να είναι επιλεγμένο αυτό στο οποίο εργάζεται ο συνδεδεμένος χρήστης. Σε κάθε περίπτωση σε ευχαριστώ πάρα πολύ για τη βοήθεια.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

Δημοσίευση από Apostolis_38 » 10 Ιαν 2011 08:45

tsalaki έγραψε:

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

<option value="<?=$row&#91;hospital_id&#93;?>"><?=$row&#91;hospital&#93;?></option>

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

<input name="phone" type="text" class="textfield" id="phone" value="<?php echo $row&#91;phone&#93;?>"/>
- Το = μετά τα php tags γιατί το βάζεις; Βάλε echo

- To value δεν εμφανίζεται στις html σελίδες. Το χρησιμοποιείς για να στείλεις την τιμή που σε ενδιαφέρει σε κάποιο άλλο σημείο/σελίδα. Για να σου εμφανίσει την τιμή θα πρέπει να εμφανίσεις την τιμή και έξω από το input

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

<input name="phone" type="text" class="textfield" id="phone" value="<?php echo $row&#91;phone&#93;?>"/><?php echo $row&#91;phone&#93;?>

Υ.Γ. τα echo στο τέλος θέλουν και ; για να εμφανιστούν.
Διάβασμα... :D

tsalaki
Δημοσιεύσεις: 31
Εγγραφή: 09 Μαρ 2009 20:27

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

Δημοσίευση από tsalaki » 10 Ιαν 2011 11:10

Καλημέρα,

Έκανα τις αλλαγές που μου είπατε αλλά δεν έγινε τίποτα διαφορετικό. Όσο για:

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

<input name="phone" type="text" class="textfield" id="phone" value="<?php echo $row&#91;phone&#93;?>"<?php echo $row&#91;phone&#93;?>/>
Επίσης δεν μου εμφανίζει τίποτα. Πριν χρησιμοποιήσω τα select χρησιμοποιώ textfields και οι τιμές που θέλω μου εμφανίζονται κανονικά γράφοντας π.χ.:

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

<input name="name" type="text" class="textfield" id="name" value="<?php echo $row&#91;name&#93;?>"/>
Όσο για το διάβασμα, δεν κάνουμε και τίποτα άλλο, σας διαβεβαιώ!

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

Δημοσίευση από Apostolis_38 » 10 Ιαν 2011 11:49

- <option value="<?=$row[hospital_id]?>">
Σβήσε το δεύτερο =
Εχεις ήδη ένα στο value.


- Aν θέλεις να εμφανίσεις την παλιά τιμή μόνο και μόνο ως πληροφορία η οποία θα χαθεί όταν ο χρήστης δώσει καινούργια τιμή τότε σωστά το έχεις στο value.
Αν θέλεις να διατηρηθεί ή τιμή θα βγάλεις το <?php echo $row[phone]?> έξω από το input. Και επιπρόσθετα θα δώσεις στο type την ιδιότητα readonly.

- Σχετικά με τις τιμές. Ασε τα input, κάνοντας ένα απλό echo $row["hospital_id"]; σου φέρνει τιμές;
Φυσικά το

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

$row = mysql_fetch_array&#40;$result&#41;;
και τα αποτελέσματα πρέπει να μπούν σε ένα while loop για να σου εμφανίσει όλες τις εγγραφές, όπως θέλεις.

tsalaki
Δημοσιεύσεις: 31
Εγγραφή: 09 Μαρ 2009 20:27

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

Δημοσίευση από tsalaki » 10 Ιαν 2011 11:57

Κάνοντας απλά

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

<?php echo $row&#91;"hospital_id"&#93;; 
echo $row&#91;"hospital"&#93;; ?>
Μου εμφανίζει σωστά τον κωδικό και το όνομα του νοσοκομείου στο οποίο εργάζεται ο χρήστης.
Όσο αφορά το while loop κάνω αυτό:

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

 <select name="hosp"> 
            <?php 
            while&#40;$row=mysql_fetch_array&#40;$result&#41;&#41;&#123; 
            ?> 
            <option value="<?=$row&#91;hospital_id&#93;?>"><?=$row&#91;hospital&#93;?></option> 
             <?php &#125; ?> 
       </select> 
Την τιμή θέλω απλά να τη βλέπει ο χρήστης και να επιλέγει τη νέα αν υπάρχει.[/code]

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

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

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

Επειδή σε βλέπω και το παλεύεις θα προσπαθήσω να σου ξεκαθαρίσω κάποια πράγματα.
Όταν έχεις ένα select Menu (πχ τα νοσοκομεία), θα πρέπει να έχεις στην βάση δεδομένων και έναν πίνακα για αυτά (πχ πίνακας hospitals). Βλέπω πως έχεις ένα πίνακα `nosokomeio` που προφανώς έχει τα πεδία id_nos και onoma_nos.
Αφού διαβάσεις τα στοιχεία του χρήστη (όπως κάνεις) και έχεις ήδη το $row[' hospital_id'] όταν φτάσεις στο select θα εμφανίσεις με ένα loop τα περιεχόμενα της συγκεκριμένης λίστας. Προσοχή αφού η $row έχει τα στοιχεία του χρήστη, στο δεύτερο query που θα κάνεις για να αντλήσεις τα δεδομένα των νοσοκομείων, πρέπει να χρησιμοποιήσεις διαφορετικό όνομα μεταβλητής από το $row. Κάνε το πχ $thisRow για να μην κάνεις overwrite τα δεδομένα του χρήστη.
Όταν φτάσεις στην select της φόρμας, θα έχεις:

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

 <tr>
      <td><b>Νοσοκομείο &#58;</b></td>
      <td>
        <select name="hospital">
            <?php
$res=mysql_query&#40;"select * from `nosokomeio`"&#41;;
            while&#40;$thisRow=mysql_fetch_array&#40;$res&#41;&#41;&#123;
            ?>
            <option value="<?php echo $thisRow&#91;'id_nos'&#93;?>" <? if&#40;$thisRow&#91;id_nos&#93; == $row&#91;'hospital_id'&#93;&#41; echo&#40;'selected="selected"'&#41;?>><?php echo $row&#91;'onoma_nos'&#93;?></option>
             <?php &#125; ?>
       </select>
     </td>
    </tr>
Τσεκάρισε μόνο αν είναι σωστά το Field Names που υποθέτω για τον πίνακα `nosokomeio` και αντικατέστησε τα σχετικά...

tsalaki
Δημοσιεύσεις: 31
Εγγραφή: 09 Μαρ 2009 20:27

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

Δημοσίευση από tsalaki » 10 Ιαν 2011 12:56

Σε ευχαριστώ πολύ για το σχόλιό σου. Έχεις δίκιο. Έκανα το εξής:

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

<select name="hospital"> 
            <?php 
				$myquery = "SELECT * FROM nosokomeio";
				$res = mysql_query&#40;$myquery&#41;;
           		while&#40;$thisRow = mysql_fetch_array&#40;$res&#41;&#41;&#123; 
            ?> 
            <option value="<?php echo $thisRow&#91;kwdikos_nos&#93;?>" <? if&#40;$thisRow&#91;kwdikos_nos&#93; == $row&#91;hospital_id&#93;&#41; echo&#40;'selected="selected"'&#41;?>><?php echo $row&#91;hospital&#93;?></option> 
             <?php &#125; ?> 
         </select>
Και μου εμφανίζει μια λίστα ως εξής: > όνομα νοσοκομείου που εργάζεται ο χρήστης. Η λίστα έχει 8 φορές το ίδιο πράγμα. Στη βάση μου υπάρχουν 8 νοσοκομεία καταχωρημένα στον πίνακα, όμως δε μου εμφανίζει όλα τα ονόματα. Κάνοντας:

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

 <option value="<?php echo $thisRow&#91;kwdikos_nos&#93;?>" <? if&#40;$thisRow&#91;kwdikos_nos&#93; == $row&#91;hospital_id&#93;&#41; echo&#40;'selected="selected"'&#41;?>><?php echo $thisRow&#91;onoma_nos&#93;?></option> 
Μου εμφανίζει όλα τα ονόματα των νοσοκομείων αλλά δεν έχει επιλεγμένο αυτό που εργάζεται ο χρήστης!Πολύ μπέρδεμα.. :(

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

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

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

Συγνώμη δικό μου λάθος.
Το σωστό πρέπει να είναι έτσι:

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

<select name="hospital">
            <?php
            $myquery = "SELECT * FROM nosokomeio";
            $res = mysql_query&#40;$myquery&#41;;
                 while&#40;$thisRow = mysql_fetch_array&#40;$res&#41;&#41;&#123;
            ?>
            <option value="<?php echo $thisRow&#91;kwdikos_nos&#93;?>" <? if&#40;$thisRow&#91;kwdikos_nos&#93; == $row&#91;hospital_id&#93;&#41; echo&#40;'selected="selected"'&#41;?>><?php echo $thisRow&#91;onoma_nos&#93;?></option>
             <?php &#125; ?>
         </select>
Αν έτσι δεν σου δουλεύει πρέπει το id νοσοκομείου που έχεις καταχωρημένο στον χρήστη να μην είναι σωστός ή το όνομα του πεδίου στον πίνακα nosokomeio να μην είναι kwdikos_nos
Πές μου τα ονόματα των πεδίων του πίνακα `nosokomeio` για να βγάλουμε άκρη

tsalaki
Δημοσιεύσεις: 31
Εγγραφή: 09 Μαρ 2009 20:27

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

Δημοσίευση από tsalaki » 10 Ιαν 2011 18:59

Ο πίνακας nosokomeio έχει τα πεδία kwdikos_nos και onoma_nos. Τον κωδικό του νοσοκομείου τον παίρνω στο sql query μου από το πεδίο kwd_nos_erg του πίνακα users. Στο sql ερώτημα γράφω κάτι τέτοιο:

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

u.kwd_nos_erg AS hospital_id
όπου u είναι ο πίνακας users. Το πρόβλημα είναι ότι δεν επιλέγεται το νοσοκομείο που αντιστοιχεί στον εκάστοτε χρήστη και ότι στη λίστα μου πριν από κάθε όνομα νοσοκομείου μου εμφανίζεται ένα > για κάποιο λόγο :-?

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

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

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

για δώσε τον κώδικα όπως τον έχεις κάνει τώρα.
Αυτό που λες πως εμφανίζεται είναι από κάποιο tag που δεν κλείνει σωστά...

tsalaki
Δημοσιεύσεις: 31
Εγγραφή: 09 Μαρ 2009 20:27

Απορία:Επιλογή από λίστα με βάση την τιμή που υπάρχει στη db

Δημοσίευση από tsalaki » 10 Ιαν 2011 21:53

Ο κώδικας του select:

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

 <select name="hospital"> 
            <?php 
				$myquery = "SELECT * FROM nosokomeio";
				$res = mysql_query&#40;$myquery&#41;;
           		while&#40;$thisRow = mysql_fetch_array&#40;$res&#41;&#41;&#123; 
            ?> 
            <option value="<?php echo $thisRow&#91;kwdikos_nos&#93;?>" <? if&#40;$thisRow&#91;kwdikos_nos&#93; == $row&#91;hospital_id&#93;&#41; echo&#40;'selected="selected"'&#41;?>><?php echo $thisRow&#91;onoma_nos&#93;?></option> 
             <?php &#125; ?> 
         </select>

Απάντηση

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

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

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