probleme update

Petit nouveau ! | 2 Messages

23 nov. 2013, 16:43

Bonjour

J'ai écrit un programme avec update.php et j'ai un gros probleme mon programme affiche que la mise a jour n'a pas été effectuer et je ne comprend pas pourquoi
<html>


<head>



</head>


<body>
<?php
$mysqli = new mysqli('localhost', 'root', '', 'projet_ville_site');
if (isset($_POST['submite']))
{
$ville_nom = $_POST['ville_nom'];

$ville_texte = $_POST['ville_texte'];
$ville_id = $_POST['ville_id'];

if ((empty($ville_nom)) OR empty($ville_texte))

{
$message = '<p class="error"> Le contenue est vide</p>';
}

else 
{
if ($mysqli -> query('UPTATE projet_ville SET ville_nom ="' .$ville_nom.'" , ville_texte ="' .$ville_texte.'" WHERE ville_id ='.$ville_id))
{
$message = '<p class="message"> la mise a jour de la ville est'.$ville_nom. ' </p>';
}

else{
$message ='<p class="error"> la mise a jour  '.$ville_nom.' n a pas ete effectue </p>';
}


}
}

$id = $_GET['id'];

$result = $mysqli-> query('SELECT ville_id, ville_nom, ville_texte FROM projet_ville WHERE ville_id='.$id);

$row = $result-> fetch_array();

$ville_nom = $row['ville_nom'];
$ville_texte = $row['ville_texte'];


?>
<h1>ajouter une ville</h1>
<?php if (isset($message)) echo $message ?>
<form method="post">
<input type="text" name="ville_nom" value="<?php echo $ville_nom?>"/></input>
<textarea name="ville_texte"> <?php echo $ville_texte?></textarea>
<input type="hidden" name="ville_id" value="<?php echo $id?>"/>
<input type="submit" name="submite"></input>

</form>
</body>



</html>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 nov. 2013, 15:32

Salut,

Cela veux dire la requête ce passe mal.
Tu aura plus d'infos avec mysqli::error a ajouter dans le message d'erreur (au moins pur le temps du debug).

Ta requête sql est sensible aux injections sql (plus d'info en km demandant à Google).
En sql le délimiteur de chaîne de caractère c'est l'apostrophe et non le guillemet ;)


@+
Il en faut peu pour être heureux ......

Invité
Invité n'ayant pas de compte PHPfrance

27 nov. 2013, 19:03

Quand je fais print_r($error); il y'a marqué un zero qu'est que sa veut dire?

Petit nouveau ! | 5 Messages

28 nov. 2013, 15:29

pour voir les erreurs fait
print_r($mysqli->error);
et moogli a raison ta requête sql est sensible aux injections sql et en sql le délimiter de chaîne de caractère c'est l'apostrophe et non le guillemet

autre chose, toujours vérifier que les données envoyées par l'internautes sont conforme. Dans le cas contraire il est préférable de ne rien faire et d'envoyer un message a l'internaute.

$ville_nom = $mysqli->real_escape_string($ville_nom); // protection injection 
$ville_texte = $mysqli->real_escape_string($ville_texte);// protection injection 

//si ID de ville est un entier, je te conseil :
$ville_id=intval($ville_id);// on force $ville_id pour etre un entier (attention tout de même  : voir ma phrase sur "données envoyées" )
// sinon :
$ville_id= $mysqli->real_escape_string($ville_id);// protection injection 

if($mysqli -> query(' UPTATE `NOM_DE_LA_BASE`.`projet_ville` SET `ville_nom` =  \'' .$ville_nom.'\' , `ville_texte` = \''.$ville_texte.'\' WHERE `ville_id` =\''.$ville_id.'\' ;'))
{
 /* ton code */
}

Invité
Invité n'ayant pas de compte PHPfrance

29 nov. 2013, 22:23

Je vous remerci en faite le seule erreur c que j'ai mis un echo dans le input c'est pour sa qu'on pouvais pas écrire autre chse donc la requête ne fonctionnait pas bien, ayant tester plusieurs pour trouver une solution j'ai fini par trouver la réponse

Invité
Invité n'ayant pas de compte PHPfrance

29 nov. 2013, 22:32

Mais merci encore pour vos conseille je vais en tenir compte pour les prochains probleme