introducere date prelucrate cu for() in tabel mysql

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
ionut
Mesaje: 26

introducere date prelucrate cu for() in tabel mysql

Salutare!
Am o mica problema la introducerea unor date in baza de date si de cateva zile incerc sa imi dau seama cum as putea sa fac pt a iesi asa cum vreau, dar nu reusesc.
Deci cam asa sta treaba:

Iau datele dintr-o textarea, le pun intr-o variabila, $text, dupa aia cu strlen() ii aflu nr de caractere. Dupa ce am aflat cate caractere are string-ul luat din textarea creez un for(), in care sa iau fiecare caracter din valoarea lui $text si sa ii atribui un cod din zece caractere, coduri pe care le tin intr-un array, si practic astfel sa inlocuiesc textul scris in formular cu acele coduri, un fel de criptare.

Pana aici merge destul de bine, problema apare cand vreau sa introduc textul rezultat in baza de date, daca creez interogarea SQL in interiorul lui for() imi va introduce in tabel cate un rand pt fiecare caracter din valoarea lui $text, adica se face INSERT INTO de fiecare data cand codul instructiuni for() este executat, dar eu vreau ca toate caracterele sa fie schimbate cu codul corespunzator lor, toate acele coduri sa fie intr-un singur sir care sa fie introdus intr-un singur rand din tabel.

Am pus interogarea SQL dupa for() dar atunci variabila $textCriptat in care este pus rezultatul schimbarii textului retine doar valoarea ultimului caracter din $text, am incercat sa o fac globala dar tot degeaba.

Am sa pun mai jos si partile scriptului.

FORMULARUL:

Cod: Selectaţi tot

<form method="post">
    <textarea name="text"></textarea>
    <br>
    <input type="submit" value="Trimie" name="trimite">
</form>
ARRAY:

Cod: Selectaţi tot

$cod = array( 
"a"=>"d3iB4Ujj2J", "b"=>"r4nP4Dde1X", "c"=>"h3zC5Wvf7U", "d"=>"w9bF0Plv7E", "e"=>"w9dE8Dto5O",  "f"=>"d0sU3Ast9X", "g"=>"x9xD3Dwb3M", "h"=>"z4cA2Arv5M", "i"=>"t0sR7Sgo8H", "j"=>"c7bU3Mqr2Z", "k"=>"i0lN7Lju9U", "l"=>"j9jS3Bnc7Y", "m"=>"m7zL0Gak1R", "n"=>"n6sO1Nqz9B", "o"=>"x8vG5Xqh4R", "p"=>"h5xE5Sdv4I", "r"=>"e1yP8Wad4O", "s"=>"k5nG0Etn1J", "t"=>"h2yI8Ixs9D", "u"=>"r2nN5Ymx6Z",  "v"=>"y0oC1Ufs6C", "x"=>"u5oU8Lem8T", "y"=>"t2sU5Zzz4F", "z"=>"n0kT6Sne3O", "w"=>"n5wW8Rrb8F", "q"=>"p6xD6Hiu9E", "A"=>"Xi0O1agC2C", "B"=>"Lx1G5gcV7L", "C"=>"Fl8B7zwR2C", "D"=>"Tz4K9ftS4V", "E"=>"Al7I6wsJ4T", "F"=>"Vt1G0hsR7O", "G"=>"Bq5D6qcW4R", "H"=>"Kq1L5fuI3O", "I"=>"Qy9F3taF2R", "J"=>"Jl1X2ttO9N", "K"=>"Py6H7zfY4M", "L"=>"Iy8B8nhB4E", "M"=>"Rs5D3hjS8Z", "N"=>"Dq0Q1lgP4I", "O"=>"Yb3O0shJ1S", "P"=>"Mp5H9eiZ7S", "R"=>"Av6F4usT1N", "S"=>"Dk9U8ngU0Q", "T"=>"Yr3Z5hiL5F", "U"=>"Xe1C6fvX2Q", "V"=>"Dh2J8awJ1M", "X"=>"Js8C2wtQ9L", "Y"=>"Pn9I2uiD7C", "Z"=>"Kp7N1otY0D", "W"=>"Wc2P4dfP9V", "Q"=>"Vu7B2urH0V", 0=>"6DgZ58w2Md", 1=>"5XkP54s9Dd", 2=>"7YzR61v0Ze", 3=>"8GzS77d4Cg", 4=>"7AaK18x4Nj", 5=>"8PiB63k7Na", 6=>"9WlJ67a4Qc", 7=>"3OlN99f4Ee", 8=>"0KwH84d7Bd", 9=>"1WaX32i3Yl", " "=>"a6UsV9a6Rx", "."=>"e4JnH2h3Bz", ":"=>"m0IhV7j5Ms", ","=>"g0XcE3a2Bq", "?"=>"u8RjF0p9Ml", "!"=>"i5FuN4z3Yq", ";"=>"a3IgS2e8Ix", "-"=>"u7CyM7u9Jv", "+"=>"k2WmU2f9Rx", "="=>"r6UbH0c9Jc", "@"=>"w8XbE5e9Cf", "["=>"i0ThN5b7Iu", "]"=>"y4KfR5q7Im", "{"=>"v5LpB5w4Nz", "}"=>"g0JuK8h3Xc",  "_"=>"o4MlY5y0Ld"
);
SCRIPTUL PHP:

Cod: Selectaţi tot

<?php
if(isset($_POST['trimite'])){

    $text = $_POST['text'];
    
    if(!empty($text)){
    
        $nrcaractere  = strlen($text);
        
        for ($index=0; $index<$nrcaractere; $index++) { 
        
            $textCriptat = $cod[$text{$index}];
        }    
        
    $conectare = new mysqli('localhost', 'root', '', 'dbcrypto');
    
    if (mysqli_connect_errno()){
    
        exit('Conectare nereulita la baza de date: '. mysqli_connect_error());
    }
    
    $sql = "INSERT INTO `parole` (`parola`) VALUES ('$textCriptat')"; 
    
    if ($conectare->query($sql) === TRUE) {
    
        echo 'Datele au fost adaugate';
    }
    else { echo 'Error: '. $conectare->error; }
    
    $conectare->close();
}
else { echo "Casuta de text este goala!"; }
?>
[/size]
As incerca sa fac asta cu switch, while() sau if() dar nu stiu cum as putea-o face, for() mi se pare cel mai indicat, as avea nevoie macar de cateva pareri.

Multumesc!

MarPlo Mesaje: 4343
Salut
E simplu. Datele prelucrate cu for() se concateneaza ca sir (cu " .= ") la o variabila definita inainte de for():

Cod: Selectaţi tot

$nrc = strlen($text);
$txtcript ='';
for($i=0; $i<$nrc; $i++) {
  $txtcript .= $cod[$text{$i}];
}
//in continuare se adauga sirul din $txtcript in baza de date 

ionut Mesaje: 26
A mers, ce usor era :) o sa revin daca mai am nelamuriri, multumesc

Subiecte similare