काम नहीं कर रहा है सभी अच्छे। मुझे कुछ php के साथ समस्या है जो यादृच्छिक रूप से एक आईपी का चयन नहीं कर रहा है। मैं समझाने की कोशिश करूंगा।रैडर द्वारा ऑर्डर
<select name="State">
<option value="0" selected="selected">Select a State</option>
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
etc.....
</select>
किसी भी समय ग्राहक एक एक राज्य का चयन करता है और मेरे डेटाबेस के लिए प्रपत्र यह जाता सबमिट करता है और राज्य के लिए एक आईपी पता releavant खींचती है। यह मेरा डेटाबेस की तरह
+-------+---------------+
| state | ip |
+-------+---------------+
| AL | 67.100.244.74 |
| AK | 68.20.131.135 |
| AZ | 64.134.225.33 |
+-------+---------------+
इस मंच मैं कुछ php कोड है कि आईपी पते एकत्रित कर रहा है जब फ़ॉर्म सबमिट किया जाता है और यह मेरे ईमेल पर भेज दिया जाता है है पर लोगों के लिए धन्यवाद दिखाई देता है। उत्तम। यहां कोड
<?php
// visit http://php.net/pdo for more details
// start error handling
try
{
// connect
$pdo = new PDO('mysql:host=localhost;dbname=name', 'dbuser', 'pass');
// enable error handling through exceptions
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// create safe query
$query = $pdo->prepare("SELECT ip FROM vincer WHERE state = ? ORDER BY RAND() LIMIT 1");
// pass data & execute query (since the data are of string type
// and therefore can be passed in this lazy way)
$query->execute(array($_POST['State']));
// get value
$ip = $query->fetchColumn();
// print out the IP address using $ip
}
catch (Exception $e)
{
echo "sorry, there was an error.";
mail("[email protected]", "database error", $e->getMessage(), "From: [email protected]");
}
?><?php
if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "[email protected]";
$email_subject = "This is a test";
function died($error) {
// your error code can go here
echo "We are very sorry, but there were error(s) found with the form you submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['State']) ||
!isset($_POST['comments'])) {
died('We are sorry, but there appears to be a problem with the form you submitted.');
}
$first_name = $_POST['first_name']; // required
$last_name = $_POST['last_name']; // required
$email_from = $_POST['email']; // required
$state = $_POST['State']; // not required
$comments = $_POST['comments']; // required
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
}
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$first_name)) {
$error_message .= 'The First Name you entered does not appear to be valid.<br />';
}
if(!preg_match($string_exp,$last_name)) {
$error_message .= 'The Last Name you entered does not appear to be valid.<br />';
}
if(strlen($comments) < 2) {
$error_message .= 'The Comments you entered do not appear to be valid.<br />';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Form details below.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "First Name: ".clean_string($first_name)."\n";
$email_message .= "Last Name: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "State: ".clean_string($ip)."\n";
$email_message .= "Comments: ".clean_string($comments)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
if (!mail($email_to, $email_subject, $email_message, $headers))
{
echo "failed to send message";
}
?>
एकमात्र चीज जो यह नहीं कर रही है वह राज्य से एक यादृच्छिक आईपी पकड़ रही है। प्रत्येक राज्य यानी एएल, एके, एजेड इत्यादि के लिए .. मेरे पास लगभग 150 अलग-अलग आईपी पते हैं। तो आइए कहें कि कोई अलाबामा (एएल) की स्थिति का चयन करता है, मैं चाहता हूं कि यह यादृच्छिक रूप से डेटाबेस से चुनें और आईपी के समान पंक्ति में आईपी। यह आईपी पता ठीक कर रहा है, लेकिन यह हमेशा मुझे AL के लिए एक ही आईपी भेज रहा है।
कोड यह इस करना चाहिए के अनुसार क्योंकि रेंड द्वारा आदेश में वहाँ
$query = $pdo->prepare("SELECT ip FROM vincer WHERE state = ? ORDER BY RAND() LIMIT 1");
मैं चारों ओर से पूछा है और कुछ लोगों को मैं आईडी के नाम के साथ मेरी तालिका में एक और स्तंभ की जरूरत है, तो यह सुझाव दिया यह
-------+-------+---------------+
| id | state | ip |
+------+-------+---------------+
| 1 | AL | 67.100.244.74 |
| 2 | AK | 68.20.131.135 |
| 3 | AZ | 64.134.225.33 |
+------+-------+---------------+
वे कहते हैं कि मुझे आईडी चाहिए ताकि मैं यादृच्छिक रूप से आईपी में खींच सकूं। क्या कोई यह जानता है कि यह सब काम करने के लिए मुझे यह आईडी जोड़ने के लिए PHP कोड क्या है। किसी भी मदद की बहुत सराहना की जाएगी
धन्यवाद हर कोई
अली
आप एक राज्य के लिए केवल एक रिकॉर्ड है, तो यह हमेशा खींच लेंगे ** कि ** रिकॉर्ड। यह भी ध्यान रखें कि रैंड() हर बार एक ही यादृच्छिक अनुक्रम चलाएगा, इसलिए जब तक तालिका बदलती नहीं है तब तक आपको वही डेटा मिल रहा है। – Johan
यदि आपके पास 'state = 'AL'' के साथ केवल एक पंक्ति है, तो इसमें कोई आश्चर्य की बात नहीं है कि आपको हर समय एक ही आईपी मिलती है। –
"यह भी ध्यान रखें कि रैंड() हर बार एक ही यादृच्छिक अनुक्रम चलाएगा, इसलिए जब तक तालिका बदलती नहीं है तब तक आपको वही डेटा मिल रहा है" आपके पास यह @ जॉन से कहां है? यदि मैं तालिका में "रैंड() LIMIT 1" द्वारा क्रमबद्ध करता हूं, तो मुझे हमेशा एक अलग परिणाम मिलता है, भले ही तालिका बदलती न हो। उपयोगकर्ता 1010 9 14 यदि आप इसे कई बार निष्पादित करते हैं तो "रैंड()" चुनें " शायद mysql विन्यास उचित बीज स्रोत का उपयोग नहीं करता है। आपके उत्तर के लिए – Flyingmana