Php insert

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Php insert

Re: Php insert

par moogli » 03 juil. 2011, 12:15

heu tu comprend ce que tu fait ?

donne nous l''affichage des requetes (2 ou 3 cc'est suffisant ;) ).

le nom de champs SQL ne devraient pas contenir d'espace, tu peux, dans ce cas, utiliser des 'back quotes' (`) pour protéger les nom de champs).

@+

Re: Php insert

par audi68 » 03 juil. 2011, 11:33

si je rajoute or die(mysql_error()); il y a lerreur qui s affiche et plus ce que contiennent mes champs

j ai bien cette erreur You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'num vo, marque, modele, finition, boite vitesses, couleur, couleur interieure, c' at line 1

dois je mettre des _ a la place es espace?

Pour les requetes je dois faire comment pour les essaier dans phpmyadmin?

Merci de ton aide

Re: Php insert

par moogli » 02 juil. 2011, 23:00

affiche requete juste avant le mysql_query().

par exemple : echo $requete.'<hr />';
Tu pourras voir ce que contient la variable à chaque tour et vérifier ce qui se passe au final !

as tu bien recopier le message d'erreur (copier coller) où a tu oublié le _ entre num et vo ?

lorsque tu affiche les requêtes tu peux les essayer avec phpmyadmin ou une console mysql !


@+

Re: Php insert

par audi68 » 02 juil. 2011, 21:21

Merci de ta reponse j ai modifier
<?php 
$row = 1; 
$connexion = @mysql_connect('mespass'); 
if (is_resource($connexion)) 
{ 
if (@mysql_select_db('mbd', $connexion)) 
{ 
if (($handle = fopen("montxt.txt", "r")) !== FALSE) 
{ 
while (($data = fgetcsv($handle, 1000, "|")) !== FALSE) 
{ 
$num = count($data); 
echo "<p> $num champs à la ligne $row: 
</p>\n"; 

$row++; 
echo $data[$c] . "
\n"; 
// structure de ta table 
$requete = 'insert into ma table (id, ref_num_vo, marque, modele, finition, boite_vitesses, couleur, couleur_interieure, carburation, carrosserie, nb_portes, km, options, immat, chassis, prix_public, puiss_fiscale, date_M.E.C, garantie, photos) values (';
 
for ($c=0; $c < $num; $c++) 

{ 

$requete .= '"'.addslashes($data[$c]). '", '; 
} 
$requete = rtrim($requete, ', ').')'; 

// On execute ensuite la requete 
mysql_query($requete, $connexion) or die(mysql_error());; //rajout erreur sql 
} 
fclose($handle); 
} 
} 
mysql_close($connexion); 
} 
?> 
par contre j ai lerreur suivante You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'num vo, marque, modele, finition, boite_vitesses, couleur, couleur_interieure, c' at line 1

mais je ne vois pas l erreur que j ai faites

merci de ton aide

Re: Php insert

par moogli » 02 juil. 2011, 20:44

- le or die n'a pas lieu d'être a cette endroit il devrait être après le mysql_query
- le echo juste après le for devrait être après la { et non avant car la y a erreur de syntaxe !
- reste a tester en mettant les choses aux bon endroit ;)

@+

Re: Php insert

par audi68 » 02 juil. 2011, 20:03

Merci de ton aide

Par contre n y a til pas moyen de faire un insert avec mon code?

Il est juste non?

Merci

Re: Php insert

par moogli » 02 juil. 2011, 00:50

PDO c'est qu'a partir de php5, il ne s'agit pas d'une fonction mais d'une classe, je te conseil de regarder aussi la poo ;)
http://www.siteduzero.com/tutoriel-3-34 ... x-bdd.html
http://julp.developpez.com/php/pdo/?pag ... ter#L3.2.2


@+

Re: Php insert

par audi68 » 01 juil. 2011, 23:52

merci de ta reponse mais pdo fonctionne avec php5?

donc mon exemple ne fonctionne pas?

tu me conseil la fonction pdo je dois me renseigner car je ne la connais pas

Merci je testerais demain

Re: Php insert

par moogli » 01 juil. 2011, 22:45

salut,

pour le fichier tu peux utiliser file t'aura une ligne par case dans le tableau
après un foreach pour chaque ligne

je te conseil PDO et une requete préparée pour mettre directement le tableau requete :)

par exemple
<?php
$PARAM_hote='localhost'; // le chemin vers le serveur
$PARAM_port='3306';
$PARAM_nom_bd='sdz'; // le nom de votre base de données
$PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter
$connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);

$requete = 'insert into ma table et
    (id, ref_num_vo, marque, modele, finition, boite_vitesses, couleur, couleur_interieure, carburation, carrosserie, nb_portes, km, options, immat, chassis, prix_public, puiss_fiscale, date_M.E.C, garantie, photos) 
    values (?, ?,?,?,?, ?, ?, ?, ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ?)';
$prepa = $connexion ->prepare($requete);
$fichier = file('mon.txt');
foreach ( $fichier as $ligne ){
    $l = str_getcsv($ligne, '|');
    $prepa->execute($l);
}
//$$prepa->closeCursor();
?>
bon a tester mais le principe est la ;)

@+

Php insert

par audi68 » 01 juil. 2011, 18:06

Bonjour a tous,

Je veux inserer mes données d un fichier .txt dans ma base de données

J arrive a lire le fichier et en recuperer les données

Par contre je coince sur l insertion dans la base rien ne s enregistre



<?php
$row = 1;
$connexion = @mysql_connect(mes pass);
if (is_resource($connexion))
{
if (@mysql_select_db('ma table', $connexion))
{
if (($handle = fopen("mon.txt", "r")) !== FALSE)
{
while (($data = fgetcsv($handle, 1000, "|")) !== FALSE)
{
$num = count($data);
echo "<p> $num champs à la ligne $row: <br /></p>\n";

$row++;
echo $data[$c] . "<br />\n";
// IL faut adapter ici la requete à la structure de ta table
$requete = 'insert into ma table (id, ref_num_vo, marque, modele, finition, boite_vitesses, couleur, couleur_interieure, carburation, carrosserie, nb_portes, km, options, immat, chassis, prix_public, puiss_fiscale, date_M.E.C, garantie, photos) values (';

for ($c=0; $c < $num; $c++)
echo $data[$c] . "<br />\n"; // rajout du echo
{
$requete .= '"'.addslashes($data[$c]). '", ';
}
$requete = rtrim($requete, ', ').')'or die(mysql_error());; //rajout erreur sql

// On execute ensuite la requete
mysql_query($requete, $connexion);
}
fclose($handle);
}
}
mysql_close($connexion);
}
?>

Quelqu un a une idee?