Modifier le contenu de la base

Eléphanteau du PHP | 38 Messages

22 août 2005, 17:37

Le mieux c'est que je te donne le code que j'utilise pour l'affichage.
<form name="seminaire" action="modif.php" method="post" enctype="multipart/form-data">
<tr>
<td colspan="2">&nbsp; </td>
</tr>
<tr>
<td align="right"><b><font color="#FFFFFF">Voici le texte de l'oeuvre :</font><br /></b></td>
<td>&nbsp;<textarea  name="nom" cols="45" rows="15" value="$nom" class="align">
	          <?
                          $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");
 
                         $sql = 'select text from brice where nom like "%'.$_POST['nom'].'%" '; 
						
	        $res = mysql_query($sql); 
		 		 
                         if (mysql_num_rows($res)) 
                         { 
                         $val=mysql_fetch_assoc($res); 
                         echo $val["text"]; 
                         } 
                         else 
                         echo 'Nom : '.$nom.' pas trouvé'; 
 
                         mysql_close(); 
                         ?>
                     </textarea>
</td>			
</tr>
<tr>
<td align="right"><b><font color="#FFFFFF">Voici le prix affiché sur le site:</font><br /></b></td>
<td>&nbsp;<textarea  name="text" cols="45" rows="15" value="$text">
	          <?
                          $host = "sql6";
                          $user = "diapasonfred";
                          $pass = "z8WicuBR";
                          $bdd = "diapasonfred";
  
                         // 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");
 
                         $sql = 'select prix from brice where nom like "%'.$_POST['nom'].'%" '; 
						
	         $res = mysql_query($sql); 
		 		 
                         if (mysql_num_rows($res)) 
                         { 
                         $val=mysql_fetch_assoc($res); 
                         echo $val["prix"]; 
                         } 
                         else 
                         echo 'Nom : '.$nom.' pas trouvé'; 
 
                         mysql_close(); 
                         ?>
	       </textarea>
</td>			
</tr>
<tr>
<td colspan="3" align="center"><input type="submit" value="Modifier"></td>
</tr>
</form>
Diabolo

Mammouth du PHP | 19672 Messages

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'];
:?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 38 Messages

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

Mammouth du PHP | 19672 Messages

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 38 Messages

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

Mammouth du PHP | 19672 Messages

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...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 août 2005, 18:17

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

Mammouth du PHP | 19672 Messages

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-[
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 38 Messages

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

Mammouth du PHP | 19672 Messages

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 38 Messages

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

Mammouth du PHP | 19672 Messages

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 38 Messages

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

Invité
Invité n'ayant pas de compte PHPfrance

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

diabolo
Invité n'ayant pas de compte PHPfrance

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é !