Generare si Incrementare numar inregistrare in baza de date
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
giulian9
- Mesaje:44
Generare si Incrementare numar inregistrare in baza de date
Salut , intrucat cunostintele nu ma ajuta , sunt nevoit sa cer ajutor celor care sunt mai
.
Am urmatorul cod :
Cod: Selectaţi tot
$i=1;
$numar="$rma1$i";
$result=1;
while ( $result ) { //sa fie $result == true :?: ar rula la infinit cred sau...
$sql = "SELECT nummer FROM databank WHERE nummer=$nummer";
$result = mysqli_query($conn,$sql);
if ($result) {
echo "Numarul va fi generat din nou";
$i=$i+1;
$nummer="$rma1$i";
echo "Numarul nou este:$nummer";
}
}
$sql = "UPDATE databank SET nummer = $nummer WHERE id = $id";
if (!$conn->query($sql)) {
echo 'Error: '. $conn->error;
Ceea ce vreau sa fac e sa generez un numar ( are data curenta + nr de ordine 1,2,3) sa il verific in baza de date daca exista si daca da sa cresc valoarea cu o unitate . Pentru o singura apelare functioneaza , insa ma gandesc ca ar trebui sa il pun intr-o bucla .
Aici duc lipsa de
si nu imi dau seama cum as putea face; ms anticipat.
- Edit:
Am folosit cautarea in tabel ce e aici in tutorial insa tot nu arata cum ar trebuie , nr de inreg nu e in ordine crescatoare.
Cod: Selectaţi tot
$sql = "SELECT nummer FROM databank WHERE nummer LIKE $nummer";
$result = mysqli_query($conn,$sql);
$count = mysqli_num_rows($result);
if ( $count > 0 ) {
echo "Generare nr de inreg ";
$i=$i+1;
$nummer="$rma1$i";
echo "Numarul este :$nummer";
dupa care update in baza de date ...
MarPlo
Mesaje:4343
Salut
Personal nu prea am inteles ce vrei sa faci, cum ai in baza de date si ce /cum vrei sa rezulte.
Daca vrei rezultatele sa fie returnate in ordine crescatoare dupa "nummer", poti folosi ORDER BY:
Cod: Selectaţi tot
$sql = "SELECT nummer FROM databank WHERE nummer LIKE $nummer ORDER BY nummer";
giulian9
Mesaje:44
Baza de date are mai multe inregistrari , cand un angajat apasa butonul de confirmare , un numar de inregistrare trebuie sa fie generat de forma: 201702071/201702072/201702073 ( date('Ymd')1 ) si atribuit unei linii . Reusesc sa generez doar primul numar . Practic eu trebuie sa verific daca nr nu este deja atribuit iar daca este ,noul numar de inreg sa creasca cu o unitate, de asta foloseam $i=$i+1 ....insa nu imi dau seama ce bucla sa folosesc ca sa fac cautarea in mysql si daca e gasit sa ii creasca valoarea , daca nu ramane acelasi .
MarPlo
Mesaje:4343
Poti sa specifici in UPDATE sa creasca valoarea daca acel numar e deja; fara sa fie nevoie de SELECT anterior.
Cam asa:
Cod: Selectaţi tot
$sql="UPDATE databank SET nummer = (nummer +1) WHERE nummer = $nummer";
giulian9
Mesaje:44
Ca sa se inteleaga cam ce vreau sa fac :
Cod: Selectaţi tot
$rma1=date('Ymd');
$i=1;
$nummer="$rma1$i";
$sql = "SELECT nummer FROM databank WHERE nummer LIKE $nummer "; // nummer=$nummer
$result = mysqli_query($conn,$sql);
$count = mysqli_num_rows($result);
if ( $count > 0 ) {
echo "Generare numar.";
$i=$i+1;
$nummer="$rma1$i";
echo "Numarul este: $nummer"; //test
$sql = "UPDATE databank SET nummer = $nummer WHERE id = $id";
if (!$conn->query($sql)) {
echo 'Error: '. $conn->error; } } else {
echo "Numarul de inreg este : $nummer"; //test
$sql = "UPDATE databank SET nummer = $nummer WHERE id = $id";
if (!$conn->query($sql)) {
echo 'Error: '. $conn->error; }}
}
MarPlo
Mesaje:4343
Vezi daca iti e de folos acest cod, poate ca idee.
Cod: Selectaţi tot
$rma1=date('Ymd');
//select all rows with nummer=$rma1(NR)
$sql = "SELECT id, nummer FROM databank WHERE nummer LIKE '$rma1%' ORDER BY nummer";
$result = mysqli_query($conn,$sql);
$count = mysqli_num_rows($result);
if($count > 0){
while($row = $result->fetch_assoc()){
//get and increment $nr in nummer in $row, update it
$nr=str_ireplace($rma1, '', $row['nummer'])+1;
$nummer="$rma1$nr"; //new number
echo "<br>Numarul este: $nummer"; //test
$sql = "UPDATE databank SET nummer = $nummer WHERE id =". $row['id'];
if (!$conn->query($sql)) echo 'Error: '. $conn->error;
}
}
Sau acesta:
Cod: Selectaţi tot
$rma1=date('Ymd');
$i=1;
$nummer="$rma1$i";
//select all rows with nummer=$rma1(NR)
$sql = "SELECT id, nummer FROM databank WHERE nummer LIKE '$rma1%' ORDER BY nummer";
$result = mysqli_query($conn,$sql);
$count = mysqli_num_rows($result);
if($count > 0){
while($row = $result->fetch_assoc()){
//if $nummer is in $row, update it
if($row['nummer'] ==$nummer){
echo "Generare numar.";
$i++;
$nummer="$rma1$i";
echo "Numarul este: $nummer"; //test
$sql = "UPDATE databank SET nummer = $nummer WHERE id =". $row['id'];
if (!$conn->query($sql)) echo 'Error: '. $conn->error;
}
}
}
giulian9
Mesaje:44
Multumesc mult . Exact secventa care lipsea , acel "while' . Stima Julian
Subiecte similare
- Adaugare orar zilele saptamanii in baza de date
PHP - MySQL - XML
Primul mesaj
Salut
Am o baza de date cu toate locatiile
location_id | name |address |telephone | open
Si un formular prin care incarc datele in bd....
Ultimul mesaj
Treaba cu adaugare json in mysql e simpla, se rezuma la adaugarea unui sir care contine ghilimele duble.
Problema la tine e ca acele ghilimele sunt...
- Afisare numar cel mai mare dintr o coloana
PHP - MySQL - XML
Primul mesaj
Bună Marplo
Vreau să extrag din coloan pret cel mai mare numar ca de exemplu 4444.
Mie imi afisează 54 în loc de 4444, dacă în loc de 4444 modific...
Ultimul mesaj
Am schimbat `pret` varchar(20) DEFAULT NULL in `pret` int(11) NOT NULL ca la tine si merge.
Multumesc