Προς το περιεχόμενο

php-mysql custom id


Προτεινόμενες αναρτήσεις

Δημοσ.

παιδιά καλημέρα έχω αυτόν τον κώδικα που βάζω μέσα στον πινάκα κάποιες έγγραφες και μετά τα παίρνω και σε μορφή excel, όλα καλά μέχρι εδώ! υπάρχει κάποιος τρόπος να φτιάξω custom id

(ουσιαστικά φτιάχνω μια submision form)


<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysql_connect('localhost','books','hDed03#0') or die(mysql_error());
mysql_select_db('seksocio_ergasiabooks') or die(mysql_error());
 
// Check connection
 if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
// attempt insert query execution
$author = $_POST['author'];
$title = $_POST['title'];
$genre = $_POST['genre'];
 
 
$sql = "INSERT INTO books (author, title, genre) VALUES ('$author', '$title', '$genre')";
 
if (!mysql_query($sql)) {
    die('Error: ' . mysql_error()); 
}
 
// close connection
mysql_close($link);
?>

 

και αντί να μου τα βγάζει έτσι στο excel 

 

id             author        title         genre

1              τεστ1        τεστ1       τεστ1

2              τεστ2        τεστ2       τεστ2

3              τεστ3        τεστ3       τεστ3

4              τεστ4        τεστ4       τεστ4

 

 

να τα δείχνει ετσι

 

id                            author        title          genre

aaaa-0001              τεστ1        τεστ1       τεστ1

aaaa-0002              τεστ2        τεστ2       τεστ2

aaaa-0003              τεστ3        τεστ3       τεστ3

aaaa-0004              τεστ4        τεστ4       τεστ4

Δημοσ.


τρεχω αυτο το αρχειο
<?PHP
// Original PHP code by Chirp Internet: www.chirp.com.au
// Please acknowledge use of this code by including this header.

function cleanData(&$str)
{
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}

// filename for download
$filename = "website_data_" . date('Ymd') . ".xls";

header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel");
mysql_connect ('localhost','books','hDed03#0') or die(mysql_error());
mysql_select_db('seksocio_ergasiabooks')  or die(mysql_error());


$flag = false;
$result = mysql_query("SELECT * FROM `books` ORDER BY `books`.`id` ASC") or die('Query failed!');
while(false !== ($row = mysql_fetch_assoc($result))) {
if(!$flag) {
// display field/column names as first row
echo implode("\t", array_keys($row)) . "\r\n";
$flag = true;
}
array_walk($row, __NAMESPACE__ . '\cleanData');
echo implode("\t", array_values($row)) . "\r\n";
}
exit;
?>

 

Δημοσ.

Αντί για SELECT * στο export σου κάνε

 

SELECT 'aaaa-' + LPAD(id, 4, '0') as custom_id, blabla τα υπόλοιπα πεδία που σε ενδιαφέρουν εδώ.

 

Ίσως χρειαστεί να κάνεις cast το id σε nchar ή κάποιον αντίστοιχο τύπο πρώτα, δεν ξέρω πως το χειρίζεται η mysql.

Δημοσ.

οκ μάλλον δεν κατάλαβες την ερώτηση την έχω γράψει λίγο περίεργα! θέλω αντί για id 1,2,3 κτλ να έχω id aaaa,aaaa2,aaaa3 και ρωτάω πως θα το κάνω αυτό πως θα φτιάξω custom id??

Δημοσ.

Θες να αντικαταστήσεις πλήρως το πεδίο id του πίνακα και αντί για int κλειδί να έχεις π.χ. ένα αλφαριθμητικό; Ή μόνο για το export σε ενδιαφέρει να τροποποιείς on the fly την μορφή του πεδίου;

Δημοσ.

θέλω να αντικαταστήσω πλήρως το id ουσιαστικά τι θέλω να κάνω σε αυτή την φόρμα, θα μπαίνει ο χρήστης θα γράφει πχ όνομα επώνυμο κτλ και θα ανεβάζει και ένα αρχείο πχ τεστ.pdf οπότε για να μην έχω μπέρδεμα θέλω όταν ανεβαίνει το αρχείο αρχικά να αλλάζει όνομα (αν έχουμε και μια λύση γιαυτό)? και να παίρνει το όνομα του εκάστοτε id του χρήστη το οποίο θέλω να το κάνω με πρόθεμα aaaa2016-νούμερο 

 

το τελικό αποτέλεσμα που θέλω να έχει η mysql μου είναι αυτό 

 

id                            author        title          genre    file

aaaa-0001              τεστ1        τεστ1       τεστ1     aaaa-0001.pdf

aaaa-0002              τεστ2        τεστ2       τεστ2     aaaa-0002.pdf

aaaa-0003              τεστ3        τεστ3       τεστ3     aaaa-0003.pdf

aaaa-0004              τεστ4        τεστ4       τεστ4     aaaa-0004.pdf


ο αριθμός στο id και στο file δε με απασχολεί και τόσο κατά κύριο λόγο θέλω να ναι τα ίδια 

Δημοσ.

Άρα θα χρειαστεί να φτιάξεις το table σου να έχει σαν id αντί για int τύπο (ή ό,τι έχει χρησιμοποιηθεί) κάποιον VARCHAR(666), όπου 666 ένα max μέγεθος που πιστεύεις πως σε καλύπτει.

 

Λίγο πριν το insert, φτιάχνεις δυναμικά το id με το username και με τον επόμενο αριθμό που χρειάζεται να χρησιμοποιηθεί για τον χρήστη αυτόν (π.χ. select count(1) + 1 from books where id like 'aaaa%' -- όπου aaaa το username εκείνης της στιγμής) και θα το χρησιμοποιείς κανονικά την ώρα του insert για να δηλώσεις την τιμή του id πεδίου (μιας και όπως είναι τώρα το id σου είναι auto increment και δεν χρειάζεται να το αναφέρεις την ώρα της καταχώρησης).

 

So,

 

- user = 'lougkra', ο οποίος έχει 327 uploads.

 

- Do your magic with PHP για να πάρεις την τιμή του πεδίου που σου επιστρέφει το query " SELECT COUNT(1) + 1 FROM books WHERE id LIKE 'lougkra%' ".

 

- Φτιάξε το όνομα του αρχείου έτσι όπως το θες.

 

- Φτιάξε το id έτσι όπως το θες, π.χ. $mySuperCool_id = $user + '-' + $new_count

 

- Do the insert " INSERT INTO books (id, author, title, genre, file) VALUES ($mySuperCool_id, bla, bla, bla, $mySuperCool_file)"

 

 

Τα παραπάνω αν είσαι υποχρεωμένος να έχεις το id με την συγκεκριμένη μορφή. Θα μπορούσες να έχεις σαν primary key τον συνδυασμό δύο στηλών (π.χ. ένα id και το username/user_primary_key), το οποίο θα διευκόλυνε την ζωή σου (στο οποίο διαβάζω πως αναλόγως τον τύπο που έχεις επιλέξει για την βάση σου, έχει την δυνατότητα να κάνει auto increment π.χ. μόνο το id πεδίο του κλειδιού ενώ κάνεις καταχώρηση, but have fun exploring).

 

Hope it helps.

Δημοσ.

φίλε σε υπέρ ευχαριστώ επειδή όμως δεν έχω πολλές γνώσεις προχτές σκέψου έπιασα να τα ψάχνω αυτά θα μπορούσες σε αυτόν τον κωδικά παρακάτω να κάνεις τις αλλαγές που μου είπες??

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$FileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 10000000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}

// Allow certain file formats
if($FileType != "doc" && $FileType != "docx" && $FileType != "rtf"
&& $FileType != "pdf" ) {
    echo "Sorry, only DOC, DOCX, RTF & PDF files are allowed.<br>";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}

/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysql_connect('mysqlcluster7','beta_form','χχχχχ') or die(mysql_error());
mysql_select_db('betaform') or die(mysql_error());
 
// Check connection
 if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
// attempt insert query execution
$author = $_POST['author'];
$title = $_POST['title'];
$fileToUpload = basename($_FILES["fileToUpload"]["name"]);

$sql = "INSERT INTO books (author, title, fileToUpload) VALUES ('$author', '$title', '$fileToUpload')";


if (!mysql_query($sql)) {
    die('Error: ' . mysql_error()); 
}
 
// close connection
mysql_close($link);

?>
Δημοσ.

Θα χρειαστεί να γίνουν αλλαγές στην βάση σου πρώτα για να αλλάξεις τον κώδικα. Δυστυχώς εκεί δεν μπορώ να σε βοηθήσω. Καλή τύχη στην αναζήτηση!

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...