PHP-MySQL Μια μικρή βοήθεια

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

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

Απάντηση
free-stuff
Δημοσιεύσεις: 87
Εγγραφή: 28 Νοέμ 2008 13:07

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από free-stuff » 06 Ιουν 2010 18:21

Χαιρετώ το φόρουμ.

Πάει λίγος καιρός που ασχολήθηκα με php και την ξέχασα λιγάκι.

Αν μπορείτε να με θυμήσετε κάτι θα το εκτιμούσα πολύ.

Φτιάχνω ένα εκπαιδευτικό site στα πλαίσια εργασίας του πανεπιστημίου.

Εικόνα

Στο phpMyAdmin του XAMPP έχω έναν πίνακα Stats με 2 fields. Το πρώτο ονομάζεται Name και το δεύτερο Grade.

Ερώτηση 1: Πώς βάζω το όνομα του χρήστη στον πίνακα Stats στο πεδίο Name;
Ερώτηση 2: Θα έχω 10 ερωτήσεις και κάθε σωστή απάντηση παίρνει μια μονάδα. Με το πάτημα του κουμπιού "Τέλος", θέλω να υπολογίζω το άθροισμα των σωστών απαντήσεων και να βάζω αυτό το νουμερο στο πεδίο Grade, που αντιστοιχεί στο πεδίο Name.

π.χ. Γράφω το όνομα "Γιάννης" και βάζω 10 απαντήσεις στα radios. Στο τέλος πέτυχα 6 σωστές απαντήσεις. Θέλω να δημιουργήσει μια γραμμή στον πίνακα που να βάλει το "Γιάννης" στο Name και το "6" στο Grade. Μετά αν κάνει το τεστ και ο Γιώργος, να δημιουργήσει δεύτερη γραμμή και να εγγράψει το Γιώργο και το σκορ του.

Ακολούθως, σε μια άλλη σελίδα θα εμφανίζεται αυτός ο πίνακας όπου θα μπορούν οι χρήστες να βλέπουν τα ονόματα και τους βαθμούς τους.

Αν μπορεί κάποιος να με βοηθήσει στην αρχή θα το εκτιμούσα πολύ.

Άβαταρ μέλους
dimitrisdamo
Δημοσιεύσεις: 78
Εγγραφή: 19 Νοέμ 2009 20:00
Επικοινωνία:

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από dimitrisdamo » 07 Ιουν 2010 14:48

μπορεις να παραθεσεις τον html κωδικα ? :) [/code]

free-stuff
Δημοσιεύσεις: 87
Εγγραφή: 28 Νοέμ 2008 13:07

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από free-stuff » 07 Ιουν 2010 14:51

Φίλε μου ήδη σήμερα κατάφερα το 1! Αύριο που θα ασχοληθώ με το 2 θα ρωτήσω αν χρειαστώ κάτι, σ' ευχαριστώ!

Άβαταρ μέλους
dimitrisdamo
Δημοσιεύσεις: 78
Εγγραφή: 19 Νοέμ 2009 20:00
Επικοινωνία:

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από dimitrisdamo » 07 Ιουν 2010 15:08

οκ οπως νομιζεις :D
ζητησα να παραθεσεις τον κωδικα γιατι πιστευω θα ηταν πιο ευκολο να υλοποιησης κατι απο την αρχη οπως αρχικα ζητησες

free-stuff
Δημοσιεύσεις: 87
Εγγραφή: 28 Νοέμ 2008 13:07

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από free-stuff » 09 Ιουν 2010 13:36

Επιστρέφω με ερώτηση και κώδικα...

Στην αρχή του τεστ ο χρήστης βάζει το όνομα του και αυτό εισάγεται στον πίνακα της βάσης...

Εικόνα

Εικόνα

Κώδικας...

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

<form action="insert.php" method="post">
Όνομα&#58; <input type="text" name="firstname" />
<input type="submit" value="Αποστολή" />
</form>

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

<?php
$sql="INSERT INTO stats &#40;Name&#41;
VALUES
&#40;'$_POST&#91;firstname&#93;'&#41;";
?>
Αυτό που θέλω να κάνω τώρα είναι να βάλω 10 ερωτήσεις πολλαπλής επιλογής με radios και ο χρήστης να επιλέγει ένα radio στην κάθε ερώτηση....

Εικόνα

και με το πάτημα του κουμπιού αποστολής να υπολογίζω σε ένα script τον βαθμό που πήρε ο χρήστης (κάθε σωστή απάντηση = 1 βαθμός), ώστε στο τέλος η εντολή της INSERT να τροποποιηθεί ως εξής

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

<?php
$sql="INSERT INTO stats &#40;Name, Grade&#41;
VALUES
&#40;'$_POST&#91;firstname&#93;','$_POST&#91;grade&#93;'&#41; ";
?>
ώστε δίπλα από το όνομα του χρήστη να μπαίνει και ο βαθμός του!

Μπορεί κάποιος να μου δώσει μια ιδέα;

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

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από Apostolis_38 » 09 Ιουν 2010 16:31

Ενας τρόπος είναι να δώσεις σε κάθε απάντηση ένα μοναδικό name

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

<input name="checkbox1&#91;&#93;" type="checkbox" />Βόρεια
<input name="checkbox2&#91;&#93;" type="checkbox" />Νότια
<input name="checkbox3&#91;&#93;" type="checkbox" />Ρωσία
<input name="checkbox4&#91;&#93;" type="checkbox" />Γαλλία
και να τσεκάρεις ποιά κουμπιά έχουν πατηθεί

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

$checkbox1 = &#40;int&#41; $_POST&#91;"checkbox1"&#93;;
$checkbox2 = &#40;int&#41; $_POST&#91;"checkbox2"&#93;;
$checkbox3 = &#40;int&#41; $_POST&#91;"checkbox3"&#93;;
$checkbox4 = &#40;int&#41; $_POST&#91;"checkbox4"&#93;;

if &#40;isset &#40;$checkbox1&#41; &#41; &#123;
 $grade= 1;
&#125;
if &#40;isset &#40;$checkbox1&#41; && isset &#40;$checkbox3&#41; &#41; &#123;
 $grade= 2;
&#125;
και μετά να καταχωρείς το νούμερο που υπάρχει στο grade.

Αυτός είναι πολύ απλός τρόπος αλλά το κακό που έχει είναι οτι πρέπει να πιάσεις όλες τις δυνατές πιανότητες στο if. Αν έχεις πολλές ερωταπαντήσεις είναι ασύμφορο.
Υπάρχουν κι άλλοι αλλά πιο μπέρδεμα.

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από Banavas » 09 Ιουν 2010 18:43

Μπορείς πιο απλά να δώσεις σε κάθε σωστή απάντηση 1 και σε κάθε λάθος 0 στο τέλος αθρίζεις τις τιμές από τις μεταβλητές από κάθε grοup

Μπορείς με αυτό τον τρόπο να δώσεις περισσοτερες τιμές εκτος απο 0,1 ανάλογα με το βάρος της απάντησης πχ. 0,1,2,3 και μετά την άθριση να έχεις αποτέλεσμα από 0 έως 4 Χ αριθμό ερωτήσεων.

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

 
<input name="test1" type="radio" value="0" />Βόρεια 
<input name="test1" type="radio" value="0" />Νότια 
<input name="test1" type="radio" value="1" />Ρωσία 
<input name="test1" type="radio" value="0" />Γαλλία
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
dimitrisdamo
Δημοσιεύσεις: 78
Εγγραφή: 19 Νοέμ 2009 20:00
Επικοινωνία:

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από dimitrisdamo » 11 Ιουν 2010 20:45

σκεφτηκα κατι αλλα δεν ξερω κατα ποσο ειναι σωστο αλλα θα το παραθεσω ,
σκεφτηκα πως καλυτερα εινια να πεξεις με arrays δηλαδη να εχεις τις σωστες απαντησεις σε ενα array και να τραβας τις απαντησεις απο τα radio buttons μεσω post ..
το βραδυ θα παραθεσω και κωδικα ..
παω καφεδακι :D :D

Άβαταρ μέλους
dimitrisdamo
Δημοσιεύσεις: 78
Εγγραφή: 19 Νοέμ 2009 20:00
Επικοινωνία:

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από dimitrisdamo » 12 Ιουν 2010 00:28

php Κωδικας

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

<?php
$sostes=array&#40;"1","3","2"&#41;;einai oi sostes apantisis
$check=array&#40;&#41;;

for &#40;$i=1;$i<=3;$i++&#41;&#123;
array_push&#40;$check,$_POST&#91;"$i"&#93;&#41;;
&#125;
		for &#40;$i=0;$i<=3;$i++&#41;&#123;
					if &#40;$sostes&#91;$i&#93;==$check&#91;$i&#93;&#41;

					&#123;$vathmos++;&#125;



					&#125;
echo $vathmos;
?>

html κωδικας

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

<form action="freestuff.php" method="post">

<input name="1" type="radio" value="1" /> <br />
<input name="1" type="radio" value="0" /><br />
<input name="1" type="radio" value="0" /><br />


blabla<br />

<input name="2" type="radio" value="3" /><br />
<input name="2" type="radio" value="0" /><br />
<input name="2" type="radio" value="0" /><br />

bla bla bla<br />

<input name="3" type="radio" value="0" /><br />
<input name="3" type="radio"  value="0"/><br />
<input name="3" type="radio" value="3" /><br />
<input type="submit" value="eleos" />
ελπιζω να βοηθησα

free-stuff
Δημοσιεύσεις: 87
Εγγραφή: 28 Νοέμ 2008 13:07

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από free-stuff » 13 Ιουν 2010 12:50

@Apostolis_38 Θα έχω 10 ερωτήσεις οπότε είναι δύσκολο να καλύψω όλους τους συνδυασμούς με ένα if.

@Banavas Μου αρέσει η ιδέα σου, πως όμως θα αθροίσω τις τιμές;

@dimitrisdamo Προσπαθώ να καταλάβω τον κώδικά σου, μπορείς να τον εξηγήσεις λίγο;

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από Banavas » 13 Ιουν 2010 20:04

free-stuff έγραψε: @Banavas Μου αρέσει η ιδέα σου, πως όμως θα αθροίσω τις τιμές;
Αν test1 είναι η κοινή μεταβλητή για το group1 η test2 για το group2 κ.ο.κ.
$total = $_post['test1'] + $_post['test2'] + ....... $post['test_n'];

Αν χρησιμοποιήσεις μόνο 0,1 στις απαντήσεις τότε ένα άθροισμα =7 σημαίνει οτι απαντήθηκαν επτά ερωτήσεις σωστά.

Αν οι ερωτήσεις δεν έχουν την ίδια βαρύτητα μπορείς να πολαπλασιάσεις τις απαντήσεις με ένα συντελεστή βαρύτητας, που θα ορίσεις εσύ.
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
dimitrisdamo
Δημοσιεύσεις: 78
Εγγραφή: 19 Νοέμ 2009 20:00
Επικοινωνία:

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από dimitrisdamo » 15 Ιουν 2010 15:27

η δικη μου ιδεα ειναι να βαλεις ολες τις σωστες απαντησεις σε ενα array μετα απο την for που εχω δωσει στον κωδικα να προσπελασεις ολες τις απαντησεις του χρηστη και να καταχωρεις τις απαντησεις παλι σε ενα array κανεις μια συκριση και οπου ταιριαζει η απαντηση του χρηστη με την σωστη μεσα στο ηδη υπαρχων array με τις σωστες απαντησεις προσθετεις +1 βαθμο ειδαλως προσπερναει..
λιγο πιο συγκεκριμενα ..
Καθε ομαδα απο radio button εχει ενα name κανεις προσπελαση πχ το radio button με name =1 αν επιλεξει το πρωτο τοτε θα επιλαγει το value =1 οποτε οταν πας να κανεις συγκιριση θα παρει +1 ποντο ...
Το προβλημα ειναι κατα ποσο ειναι ασφαλες ολο αυτο

EDIT:βασικα τωρα που το βλεπω ειπα κατι σαν του banava ...αλλα με array :o :o
EDIT 2:Ισως αν καποιος ειναι ομως πονηρος μπορει απλα να δει πηγαιο κωδικα και ετσι και τις απαντησεις :kaloe: :kaloe:

free-stuff
Δημοσιεύσεις: 87
Εγγραφή: 28 Νοέμ 2008 13:07

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από free-stuff » 16 Ιουν 2010 13:05

Θέλω λίγη βοήθεια με τον κώδικά μου γιατί κάτι δεν πάει καλά με τα values.

Κώδικας αρχείου test.php

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

<form action="insert.php" method="post">
  <p>Όνομα&#58;
  <input type="text" name="firstname" />
  </p>
  <p>&nbsp;</p>
  <p><strong>ΕΡΩΤΗΣΗ 1&#58;</strong> Η Ιταλία είναι χώρα της...</p>
  
  <p>
    <input name="test1" type="radio" value="1" />
    Νότιας Ευρώπης 
<input name="test1" type="radio" value="0" />Βόρειας Ευρώπης 
<input name="test1" type="radio" value="0" />Δυτικής Ευρώπης 

</p>
  <p>&nbsp;</p>
  <p><strong>ΕΡΩΤΗΣΗ 2&#58;</strong> Η Ιταλία δε συνορεύει με την...</p>
  <p>
    <input name="test2" type="radio" value="0" />Ελβετία
  <input name="test2" type="radio" value="1" />Ρωσσία
  <input name="test2" type="radio" value="0" />Γαλλία
  
  </p>
  <p>&nbsp;</p>
  <p><strong>ΕΡΩΤΗΣΗ 3&#58;</strong> Από ποιά θάλασσα δε βρέχεται η Ισπανία;</p>
  <p>
    <input name="test3" type="radio" value="0" />
    Μεσόγειο θάλασσα
    <input name="test3" type="radio" value="0" />Ατλαντικό Ωκεανό
    <input name="test3" type="radio" value="1" />Ειρηνικό Ωκεανό
    
  </p>
  
  <p>&nbsp;</p>
  <p><strong>ΕΡΩΤΗΣΗ 4&#58;</strong> Το μέσο ύψος του εδάφους της Ισπανίας υπερβαίνει τα&#58;</p>
  <p>
    <input name="test4" type="radio" value="0" />
    300μ.
    <input name="test4" type="radio" value="1" />500μ.
    <input name="test4" type="radio" value="0" />700μ.
    
  </p>
  <p>&nbsp;</p>
  
  <p><strong>ΕΡΩΤΗΣΗ 5&#58;</strong> Ποιός είναι ο πληθυσμός της Γαλλίας;</p>
  <p>
    <input name="test5" type="radio" value="1" />
    65 εκατομμύρια
    <input name="test5" type="radio" value="0" />85 εκατομμύρια
    <input name="test5" type="radio" value="0" />105 εκατομμύρια
    
  </p>
  <p>&nbsp;</p>
  
  <p><strong>ΕΡΩΤΗΣΗ 6&#58;</strong> Ποιά είναι η νομισματική μονάδα της Γαλλίας;</p>
  <p>
    <input name="test6" type="radio" value="0" />
    Ρούπια
    <input name="test6" type="radio" value="0" />Φράγκα
    <input name="test6" type="radio" value="1" />Ευρώ
  </p>
  <p>&nbsp;</p>
    
    <p><strong>ΕΡΩΤΗΣΗ 7&#58;</strong> Ποιά είναι η πρωτεύουσα των Η.Π.Α.;</p>
  <p>
    <input name="test7" type="radio" value="0" />
    Σικάγο
    <input name="test7" type="radio" value="0" />Νέα Υόρκη
    <input name="test7" type="radio" value="1" />Ουάσινγκτον
    
  </p>
  <p>&nbsp;</p>
  
  <p><strong>ΕΡΩΤΗΣΗ 8&#58;</strong> Η επίσημη ημερομηνία ίδρυσης των Η.Π.Α. είναι η&#58;</p>
  <p>
    <input name="test8" type="radio" value="0" />
    4η Ιουνίου 1776
    <input name="test8" type="radio" value="1" />4η Ιουλίου 1776
    <input name="test8" type="radio" value="0" />4η Αυγούστου 1776
    
  </p>
  <p>&nbsp;</p>
  
  <p><strong>ΕΡΩΤΗΣΗ 9&#58;</strong> Η Αγγλία και το Ηνωμένο Βασίλειο είναι το ίδιο;</p>
  <p>
    <input name="test9" type="radio" value="0" />
    Ναι
    <input name="test9" type="radio" value="1" />'Οχι
    
  </p>
  <p>&nbsp;</p>
  
  <p><strong>ΕΡΩΤΗΣΗ 10&#58;</strong> Ο προστάτης Άγιος της Αγγλίας είναι ο&#58;</p>
  <p>
    <input name="test10" type="radio" value="1" />
    Άγιος Γεώργιος
    <input name="test10" type="radio" value="0" />Άγιος Νικόλαος
    <input name="test10" type="radio" value="0" />Άγιος Δημήτριος
    
  </p>
  <p>&nbsp;</p>
  <blockquote>
    <blockquote>
      <blockquote>
        <p>
          <input type="submit" value="Αποστολή" />
          
        </p>
Κώδικας αρχείου insert.php

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

<?php
$con = mysql_connect&#40;"localhost","root",""&#41;;
if &#40;!$con&#41;
  &#123;
  die&#40;'Could not connect&#58; ' . mysql_error&#40;&#41;&#41;;
  &#125;

mysql_select_db&#40;"ekpaideutiko", $con&#41;;

mysql_query&#40;"SET NAMES 'utf8';"&#41;;

$total = $_post&#91;test1&#93; + $_post&#91;test2&#93; + $_post&#91;test3&#93; + $_post&#91;test4&#93; + $_post&#91;test5&#93; + $_post&#91;test6&#93; + $_post&#91;test7&#93; + $_post&#91;test8&#93; + $_post&#91;test9&#93; + $_post&#91;test10&#93; ; 

$sql="INSERT INTO stats &#40;Name, Grade&#41;
VALUES
&#40;'$_POST&#91;firstname&#93;','$_POST&#91;$total&#93;'&#41;";

if &#40;!mysql_query&#40;$sql,$con&#41;&#41;
  &#123;
  die&#40;'Error&#58; ' . mysql_error&#40;&#41;&#41;;
  &#125;


mysql_close&#40;$con&#41;
?>
Όταν πατάω αποστολή, το όνομα μπαίνει κανονικά στη βάση αλλά ο βαθμός μένει 0. Πού έχω το λάθος;

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από burnmind » 16 Ιουν 2010 13:31

Για δοκίμασε έτσι:

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

$total = $_POST&#91;'test1'&#93; + $_POST&#91;'test2'&#93; + $_POST&#91;'test3'&#93; + $_POST&#91;'test4'&#93; + $_POST&#91;'test5'&#93; + $_POST&#91;'test6'&#93; + $_POST&#91;'test7'&#93; + $_POST&#91;'test8'&#93; + $_POST&#91;'test9'&#93; + $_POST&#91;'test10'&#93; ; 

$sql="INSERT INTO stats &#40;Name, Grade&#41; 
VALUES 
&#40;'$_POST&#91;firstname&#93;', $total&#41;"; 

free-stuff
Δημοσιεύσεις: 87
Εγγραφή: 28 Νοέμ 2008 13:07

PHP-MySQL Μια μικρή βοήθεια

Δημοσίευση από free-stuff » 16 Ιουν 2010 14:48

burNMind έγραψε:Για δοκίμασε έτσι:

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

$total = $_POST&#91;'test1'&#93; + $_POST&#91;'test2'&#93; + $_POST&#91;'test3'&#93; + $_POST&#91;'test4'&#93; + $_POST&#91;'test5'&#93; + $_POST&#91;'test6'&#93; + $_POST&#91;'test7'&#93; + $_POST&#91;'test8'&#93; + $_POST&#91;'test9'&#93; + $_POST&#91;'test10'&#93; ; 

$sql="INSERT INTO stats &#40;Name, Grade&#41; 
VALUES 
&#40;'$_POST&#91;firstname&#93;', $total&#41;"; 
Ούτε έτσι δουλεύει.

Απάντηση

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

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

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