Modifier le contenu de la base

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 : Modifier le contenu de la base

par Cyrano » 24 août 2005, 17:39

Commence donc par virer les "@" avant les $_POST, on ne développe JAMAIS en masquant les messages d'erreur.

par diabolo » 24 août 2005, 17:37

En utilisant cette fonction
(print_r($_POST)
s'affiche ceci :
Array ( [nom] => azertotot [text] => 1234 )
Là par contre azertoto apparait dans le champs nom de la base et 1234 dans le champs text et prix n'apparait même pas, tout semble décalé !

par Invité » 24 août 2005, 16:55

En écrivant ceci :


<?php

$host = "#";
$user = "#";
$pass = "#";
$bdd = "#";

// connection base de données
@mysql_connect($host, $user, $pass) or die ("Impossible de se connecter à la base de donnée");

//selection de la base
@mysql_select_db($bdd) or die ("Impossible de se connecter à la base");


// Requête modifiée
$text = mysql_escape_string(@$_POST["text"]);
$prix = mysql_escape_string(@$_POST["prix"]);
$sql = "UPDATE brice SET text='".$text."' , prix='".$prix."' WHERE NumLogin= '. $id .' ";

//echo mysql_affected_rows()."egt(s) modifié(s)";
echo $sql;

//header("location:index.php");
?>
J'ai ceci

UPDATE brice SET text=' 1234 et 5678 ' , prix='' WHERE NumLogin= '. .'
Les chiffres 1234 et 5678 devrai être dans prix et dans la requete text=' ' on devrai trouver du texte genre 'azerty'

diabolo

par diabolo67 » 24 août 2005, 11:07

Bonjour ,

Je met l'ensemble du code cette fois
<?php

 $host = "#";
 $user = "#";
 $pass = "#";
 $bdd = "#";
  
 // connection base de données
 @mysql_connect($host, $user, $pass) or die ("Impossible de se connecter à la base de donnée");
 
 //selection de la base
 @mysql_select_db($bdd) or die ("Impossible de se connecter à la base");
 
 
 // Requête modifiée 
 $text = mysql_escape_string($text);
 $prix = mysql_escape_string($prix);
 $sql = "UPDATE brice SET text='".$text."' , prix='".$prix."' WHERE NumLogin='".$id."'";
 
 header("location:index.php");
?>
diabolo

par Cyrano » 24 août 2005, 00:45

Et tu exécutes où ta requête ? Le bout de code que tu montre comporte la requête et le header juste après, mais aucun code d'exécution, ni connexion a la base, ni sélection de la base de données ni mysql_query pour exécuter la requête... :-k

par diabolo67 » 23 août 2005, 20:01

J'ai supprimer ce qu'il y avait avant le header mais rien ne bouge dans la base.
 // Requête modifiée 
 $text = mysql_escape_string($text);
 $prix = mysql_escape_string($prix);
 $sql = "UPDATE brice SET text='".$text."' , prix='".$prix."' WHERE NumLogin='".$id."'";
header("location:index.php");
diabolo

par Cyrano » 23 août 2005, 19:44

Tu as une erreur parce que la requête a loupé et renvoie du texte affiché avec echo() juste avant le header. C'est soit echo() et ensuite un lien vers l,autre page, soit header et rien d'autre avant.

par diabolo67 » 23 août 2005, 19:22

Bonjour

Je suis toujours dans l'impasse sa ne fonctionne pas avec ce code :
 // Requête modifiée
 $text = mysql_escape_string($text);
 $prix = mysql_escape_string($prix);
  $sql = "UPDATE brice SET text='".$text."' , prix='".$prix."' WHERE NumLogin='".$id."'";
 
 echo mysql_affected_rows()."egt(s) modifié(s)";


 $res = mysql_query($sql) or die(mysql_error());

 header("location:index.php");
?>
J'ai sa comme erreur ! :
-1egt(s) modifié(s)
Warning: Cannot modify header information - headers already sent by (output started at /home/diapason/www/brice/modif.php:24) in /home/diapason/www/brice/modif.php on line 29
[/code]

Pourtant rien n'est modifié dans ma base !
J'comprend plus rien

diabolo

par Cyrano » 22 août 2005, 18:22

ça devrait te sauter aux yeux comme la vérole sur le bas-clergé
traumatisée :shock:
Oups, t'étais là ? 8-[

par mere-teresa » 22 août 2005, 18:17

ça devrait te sauter aux yeux comme la vérole sur le bas-clergé
traumatisée :shock:

par Cyrano » 22 août 2005, 18:12

et alors ? on s'en tape, lors du traitement, ce que tu récupère, c'est du texte, pas du PHP, et pour le récupérer, tu as besoin du nom des champs de saisie.

Et il manque aussi ton $id...

par diabolo67 » 22 août 2005, 18:11

Bon j'ai du faire encore un amalgamme.

Dans mon formulaire mes deux zones texarea contiennent du php .Elle affiche bien ce que je désire.

Maintenant que j'ai tout modifier et que je veux renvoyez le tout dans ma base tu me suggère d'utiliser ceci :
$text = $_POST['text'];
$prix = $_POST['prix'];
Cela fonctionne si je m'est du texte dans mes formulaire mais là c'est du php quise trouvent dans mes deux textarea. Du coup je n'ai pas réutiliser la même méthode que lors de la première insertion dans la base.

diabolo

par Cyrano » 22 août 2005, 17:59

DOnc tu ne récupères pas le contenu du formulaire. Et l'identifiant qui te sert à savoir quelle ligne mettre à jour, il dit arriver d'où ? de la lune peut-être ?

Logique, logique et encore logique, ça doit être la base fondamentale de tout développement.

par diabolo67 » 22 août 2005, 17:49

Désolé pour la coloration moi j'ai pas l'ensemble en vert du coup je me suis pas rendu compte.

Pour répondre à ta question tout ce que j'ai écrit c'est ceci
$text = mysql_escape_string($text);
$prix = mysql_escape_string($prix);
J'utilse deux zones textarea dans lesquels j'ai mis du php pour récupérer le contenu de ma base et pouvoir le modifier

diabolo

par Cyrano » 22 août 2005, 17:43

Juste la ligne avec la balise <form> aurait suffi. Utilise donc [php] au lieu de [code] quand tu envoies du code, la coloration syntaxique est plus facile à suivre que le vert.

Maintenant, comment récupères-tu les données dans la partie traitement ?
Est-ce que tu fais bien quelque chose du genre
$var = $_POST['champ_formulaire_var'];
:?: