κωδικας auto-id

Από που να ξεκινήσω; Που θα βρω; κ.α. γενικές ερωτήσεις για την δημιουργία μιας ιστοσελίδας.

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

Απάντηση
stavroula_apo
Δημοσιεύσεις: 121
Εγγραφή: 18 Σεπ 2010 03:12

κωδικας auto-id

Δημοσίευση από stavroula_apo » 02 Μαρ 2011 22:34

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php include("myerror.php");?>
<link rel="stylesheet" type="text/css" href="style.css"/>
<script language="javascript" type="text/javascript" src="script.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Student Data</title>
</head>
<body>
<br/>
<br/>
<br/>
<div id="container">
<h2>Καταχώρηση φοιτητή</h2><br/>


<?php

if($_POST["studfirst"] !="" && $_POST["studlast"] !="" && $_POST["studbirth"] !="" && $_POST["studaddress"] !="" && $_POST["studemail"] !="") {


$con=mysql_connect("localhost", "stavroula", "1987") or
die("Η σύνδεση με το server απέτυχε <br />");

mysql_select_db("school", $con) or
die("Η σύνδεση με τη βάση απέτυχε <br />");


$query="INSERT INTO student (studfirst, studlast, studbirth, studaddress, studemail) VALUES ('$_POST[studfirst]', '$_POST[studlast]', '$_POST[studbirth]', '.$_POST[studaddress]', '$_POST[studemail]')";


mysql_query("SET NAMES 'utf8';", $con);
mysql_query("SET CHARACTER SET 'utf8';", $con);

if(!mysql_query($query, $con)){
die(myerror($con));
}else{
echo "Η εγγραφή καταχωρήθηκε επιτυχώς! <br/><br/>";
$query="select * from student where studid=".$_POST['studid'];
$result=mysql_query($query, $con);
$row=mysql_fetch_array($result);
?>
<table border="1">
<tr>
<td>Όνομα: </td>
<td><?php echo $row['studfirst'];?></td>
</tr>
<tr>
<td>Επώνυμο: </td>
<td><?php echo $row['studlast'];?></td>
</tr>
<tr>
<td>Ημερομηνία γέννησης: </td>
<td><?php echo $row['studbirth'];?></td>
</tr>
<tr>
<td>Διεύθυνση: </td>
<td><?php echo $row['studaddress'];?></td>
</tr>
<tr>
<td>E-mail: </td>
<td><?php echo $row['studemail'];?></td>
</tr>
</table>
<?php
}
mysql_close($con);
}
?>
<br />
<br />
<input type="button" value="<Επιστροφή" class="button" onclick="history.back()"/>
</div>
</body>
</html>

εχω θεσει το πεδιο studid auto-id απο το phpmyadmin. τρεχοντας εκει ενα query καταχωρουνται κανονικα οι τιμες. ομως μεσω του κωδικα π παραθετω παραπανω οχι.διακρινεται καποιο λαθος π εγω δε βλεπω?

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6235
Εγγραφή: 30 Νοέμ 2004 03:09

κωδικας auto-id

Δημοσίευση από fafos » 02 Μαρ 2011 23:53

an tou eleges na kanei insert to studid me kenh timh isos sou ekane thn xarh..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

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

κωδικας auto-id

Δημοσίευση από dva_dev » 03 Μαρ 2011 04:59

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

...
$query="INSERT INTO student &#40;studfirst, studlast, studbirth, studaddress, studemail&#41; VALUES &#40;'$_POST&#91;studfirst&#93;', '$_POST&#91;studlast&#93;', '$_POST&#91;studbirth&#93;', '.$_POST&#91;studaddress&#93;', '$_POST&#91;studemail&#93;'&#41;";
...
echo "Η εγγραφή καταχωρήθηκε επιτυχώς! <br/><br/>";
$query="select * from student where studid=".$_POST&#91;'studid'&#93;;
...
Αφού το studid δεν το δίνεις εσύ με το χέρι στο insert, κατά το select ξέρεις με κάποιο τρόπο τι τιμή θα έχει και έχεις προνοήσει να το περάσεις και με post όταν φορτώνεις τη σελίδα?

Οταν παραθέτεις κώδικα καλό θα ήταν να τον μαρκάρεις και να πατάς το κουμπάκι "Code" για να μην βγαίνουν τα ματάκια μας να τον διαβάσουμε.

stavroula_apo
Δημοσιεύσεις: 121
Εγγραφή: 18 Σεπ 2010 03:12

κωδικας auto-id

Δημοσίευση από stavroula_apo » 03 Μαρ 2011 07:24

dva_dev έγραψε:

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

...
$query="INSERT INTO student &#40;studfirst, studlast, studbirth, studaddress, studemail&#41; VALUES &#40;'$_POST&#91;studfirst&#93;', '$_POST&#91;studlast&#93;', '$_POST&#91;studbirth&#93;', '.$_POST&#91;studaddress&#93;', '$_POST&#91;studemail&#93;'&#41;";
...
echo "Η εγγραφή καταχωρήθηκε επιτυχώς! <br/><br/>";
$query="select * from student where studid=".$_POST&#91;'studid'&#93;;
...
Αφού το studid δεν το δίνεις εσύ με το χέρι στο insert, κατά το select ξέρεις με κάποιο τρόπο τι τιμή θα έχει και έχεις προνοήσει να το περάσεις και με post όταν φορτώνεις τη σελίδα?

Οταν παραθέτεις κώδικα καλό θα ήταν να τον μαρκάρεις και να πατάς το κουμπάκι "Code" για να μην βγαίνουν τα ματάκια μας να τον διαβάσουμε.
οχι δε το ξερω αλλα τωρα με μπερδεψες...


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

κωδικας auto-id

Δημοσίευση από korgr » 03 Μαρ 2011 12:33

Σταυρούλα αυτό

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

<?php 

if&#40;$_POST&#91;"studfirst"&#93; !="" && $_POST&#91;"studlast"&#93; !="" && $_POST&#91;"studbirth"&#93; !="" && $_POST&#91;"studaddress"&#93; !="" && $_POST&#91;"studemail"&#93; !=""&#41; &#123; 


$con=mysql_connect&#40;"localhost", "stavroula", "1987"&#41; or 
die&#40;"Η σύνδεση με το server απέτυχε <br />"&#41;; 

mysql_select_db&#40;"school", $con&#41; or 
die&#40;"Η σύνδεση με τη βάση απέτυχε <br />"&#41;; 


$query="INSERT INTO student &#40;studfirst, studlast, studbirth, studaddress, studemail&#41; VALUES &#40;'$_POST&#91;studfirst&#93;', '$_POST&#91;studlast&#93;', '$_POST&#91;studbirth&#93;', '.$_POST&#91;studaddress&#93;', '$_POST&#91;studemail&#93;'&#41;"; 


mysql_query&#40;"SET NAMES 'utf8';", $con&#41;; 
mysql_query&#40;"SET CHARACTER SET 'utf8';", $con&#41;; 

if&#40;!mysql_query&#40;$query, $con&#41;&#41;&#123; 
die&#40;myerror&#40;$con&#41;&#41;; 
&#125;else&#123; 
echo "Η εγγραφή καταχωρήθηκε επιτυχώς! <br/><br/>"; 
$query="select * from student where studid=".$_POST&#91;'studid'&#93;; 
$result=mysql_query&#40;$query, $con&#41;; 
$row=mysql_fetch_array&#40;$result&#41;; 
?>


γίνεται

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

<?php 

if&#40;$_POST&#91;"studfirst"&#93; !="" && $_POST&#91;"studlast"&#93; !="" && $_POST&#91;"studbirth"&#93; !="" && $_POST&#91;"studaddress"&#93; !="" && $_POST&#91;"studemail"&#93; !=""&#41; &#123; 


$con=mysql_connect&#40;"localhost", "stavroula", "1987"&#41; or 
die&#40;"Η σύνδεση με το server απέτυχε <br />"&#41;; 

mysql_select_db&#40;"school", $con&#41; or 
die&#40;"Η σύνδεση με τη βάση απέτυχε <br />"&#41;; 
mysql_query&#40;"SET NAMES 'utf8';", $con&#41;; 
mysql_query&#40;"SET CHARACTER SET 'utf8';", $con&#41;; 

$query="INSERT INTO student &#40;studfirst, studlast, studbirth, studaddress, studemail&#41; VALUES &#40;'$_POST&#91;studfirst&#93;', '$_POST&#91;studlast&#93;', '$_POST&#91;studbirth&#93;', '.$_POST&#91;studaddress&#93;', '$_POST&#91;studemail&#93;'&#41;"; 

$lastid = mysql_insert_id&#40;&#41;; // έτσι θα ξέρεις ποια τιμή δώθηκε αυτόματα στο πεδίο studid

if&#40;!mysql_query&#40;$query, $con&#41;&#41;&#123; 
die&#40;myerror&#40;$con&#41;&#41;; 
&#125;else&#123; 
echo "Η εγγραφή καταχωρήθηκε επιτυχώς! <br/><br/>"; 
$query="select * from student where studid=".$lastid; // και εδώ την χρησιμοποιείς την τιμή αυτή
$result=mysql_query&#40;$query, $con&#41;; 
$row=mysql_fetch_array&#40;$result&#41;; 
?>

stavroula_apo
Δημοσιεύσεις: 121
Εγγραφή: 18 Σεπ 2010 03:12

κωδικας auto-id

Δημοσίευση από stavroula_apo » 03 Μαρ 2011 21:29

korgr έγραψε:Σταυρούλα αυτό

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

<?php 

if&#40;$_POST&#91;"studfirst"&#93; !="" && $_POST&#91;"studlast"&#93; !="" && $_POST&#91;"studbirth"&#93; !="" && $_POST&#91;"studaddress"&#93; !="" && $_POST&#91;"studemail"&#93; !=""&#41; &#123; 


$con=mysql_connect&#40;"localhost", "stavroula", "1987"&#41; or 
die&#40;"Η σύνδεση με το server απέτυχε <br />"&#41;; 

mysql_select_db&#40;"school", $con&#41; or 
die&#40;"Η σύνδεση με τη βάση απέτυχε <br />"&#41;; 


$query="INSERT INTO student &#40;studfirst, studlast, studbirth, studaddress, studemail&#41; VALUES &#40;'$_POST&#91;studfirst&#93;', '$_POST&#91;studlast&#93;', '$_POST&#91;studbirth&#93;', '.$_POST&#91;studaddress&#93;', '$_POST&#91;studemail&#93;'&#41;"; 


mysql_query&#40;"SET NAMES 'utf8';", $con&#41;; 
mysql_query&#40;"SET CHARACTER SET 'utf8';", $con&#41;; 

if&#40;!mysql_query&#40;$query, $con&#41;&#41;&#123; 
die&#40;myerror&#40;$con&#41;&#41;; 
&#125;else&#123; 
echo "Η εγγραφή καταχωρήθηκε επιτυχώς! <br/><br/>"; 
$query="select * from student where studid=".$_POST&#91;'studid'&#93;; 
$result=mysql_query&#40;$query, $con&#41;; 
$row=mysql_fetch_array&#40;$result&#41;; 
?>


γίνεται

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

<?php 

if&#40;$_POST&#91;"studfirst"&#93; !="" && $_POST&#91;"studlast"&#93; !="" && $_POST&#91;"studbirth"&#93; !="" && $_POST&#91;"studaddress"&#93; !="" && $_POST&#91;"studemail"&#93; !=""&#41; &#123; 


$con=mysql_connect&#40;"localhost", "stavroula", "1987"&#41; or 
die&#40;"Η σύνδεση με το server απέτυχε <br />"&#41;; 

mysql_select_db&#40;"school", $con&#41; or 
die&#40;"Η σύνδεση με τη βάση απέτυχε <br />"&#41;; 
mysql_query&#40;"SET NAMES 'utf8';", $con&#41;; 
mysql_query&#40;"SET CHARACTER SET 'utf8';", $con&#41;; 

$query="INSERT INTO student &#40;studfirst, studlast, studbirth, studaddress, studemail&#41; VALUES &#40;'$_POST&#91;studfirst&#93;', '$_POST&#91;studlast&#93;', '$_POST&#91;studbirth&#93;', '.$_POST&#91;studaddress&#93;', '$_POST&#91;studemail&#93;'&#41;"; 

$lastid = mysql_insert_id&#40;&#41;; // έτσι θα ξέρεις ποια τιμή δώθηκε αυτόματα στο πεδίο studid

if&#40;!mysql_query&#40;$query, $con&#41;&#41;&#123; 
die&#40;myerror&#40;$con&#41;&#41;; 
&#125;else&#123; 
echo "Η εγγραφή καταχωρήθηκε επιτυχώς! <br/><br/>"; 
$query="select * from student where studid=".$lastid; // και εδώ την χρησιμοποιείς την τιμή αυτή
$result=mysql_query&#40;$query, $con&#41;; 
$row=mysql_fetch_array&#40;$result&#41;; 
?>
δεν θα πρεπει να δηλωσω και τη συναρτηση $lastid = mysql_insert_id(); οριζοντας σε ενα αρχειο php?

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

κωδικας auto-id

Δημοσίευση από dva_dev » 04 Μαρ 2011 04:47

Λόγω κεκτημένης ταχύτητας ο φίλος korgr έβαλε το mysql_insert_id πριν το mysql_query (mode πυθίας) ενώ πρέπει να μπει μετά κάπου στην αρχή του else (πριν τυπωθεί το μήνυμα ότι καταχωρήθηκε η εγγραφή).

Υπενθυμίζω απλώς ότι οι περισσότεροι κάνουμε και άλλα πράγματα ταυτόχρονα (ουζάκια, ουϊσκάκια, δουλειά που και που), οπότε δεν είναι σίγουρο ότι ο κώδικας είναι πάντα σίγουρα σωστός. Το τσεκάρισμα του κώδικα και του documentation το κάνει αυτός που χρησιμοποιεί τον κώδικα.

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

κωδικας auto-id

Δημοσίευση από korgr » 04 Μαρ 2011 12:01

Thanks dva_dev έτσι ακριβώς έγινε :)
Πράγματι το

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

$lastid = mysql_insert_id&#40;&#41;; 
πρέπει να μπει μετά το

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

&#125;else&#123; 

Απάντηση

Επιστροφή στο “Γενικές ερωτήσεις κατασκευής ιστοσελίδων”

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

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