Problème PHP MySQL Update

catcher41 -  
 catcher41 -
Bonjour,
Voila je débute en PHP/MySQL jusqu'à présent je me débrouillais grâce à ce forum et aux personnes qui fessaient des erreurs semblable aux miennes...

Mais làje bloquel :


Le but de cette page et de faire un lexique intéractif : où l'on peut supprimer,rechercher, modifier et ajouter des pages,j'arrive à les créer, je n'ai pas encore attaqué la suppression ni la recherche car j'arrive à modifier cependant une fois la donnée modifiée impossible de la modifier de nouveau, je me retrouve avec une page vide, et mon petit test(else pour modifier) m'indique que la value modifier est vide dès lors qu'une modification à eu lieux, pourquoi?

C'est pas très clair je peux vous apporter plus e précision si vous le souhaité...

Voici le code malheuresement assez long car sur une même page afin d'être intégré à un site déjà existant :

<?php
$log = $_SERVER['REMOTE_ADDR'].' vient de se connecter au site.';
require ('./pages/log.php');
?>

<form name="searchMain" action="recherche.php" method="get">
<fieldset class="clearfix">
<label for="searchField">Rechercher</label>
<input type="text" id="searchField" name="recherche" maxlength="64" value="" />

<select name="voirtout" id="searchOptions">
<option value="">Partout</option>
<option value="nom">Nom</option>
<option value="description">Description</option>
<option value="complementaire">Complémentaire</option>
<option value="commandes">Commandes</option>
<option value="createur">Créateur</option>

</select>

<input type="submit" />

<a href="?page=lexique&nouvelle=ok" >
nouvelle note
</a>

</fieldset>
</form>



<table width="100%">
<tr height=25>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=a" >
A
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=b" >
B
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=c" >
C
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=d" >
D
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=e" >
E
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=f" >
F
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=g" >
G
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=h" >
H
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=i" >
I
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=j" >
J
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=k" >
K
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=l" >
L
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=m" >
M
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=n" >
N
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=o" >
O
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=p" >
P
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=q" >
Q
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=r" >
R
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=s" >
S
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=t" >
T
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=u" >
U
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=v" >
V
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=w" >
W
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=x" >
X
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=y" >
Y
</a>
</td>
<td align="center" valign="bottom">
<a href="?page=lexique&lettre=z" >
Z
</a>
</td>
</tr>
</table>

<br>
<?php
if (!empty($_GET['lettre'])){//si la variable lettre n'est pas vide alors il se passe ceci :

$lettre = $_GET['lettre'];

mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("test"); // Sélection de la base lexi

// On est connectés, on peut travailler sur la BDD
$reponse = mysql_query("SELECT nom FROM lexi WHERE nom LIKE '$lettre%' ORDER by nom")
or die("Erreur SQL : $query<br/>".mysql_error());; // Requête SQL

// Avec cette boucle, on liste uniquement le nom du lexi :
while ($donnees = mysql_fetch_array($reponse) )
{
echo '<a href="?page=lexique&note='.$donnees['nom'].'" >';
echo $donnees['nom'];
echo '</a>';
echo "<br />";


}

// On a fini de travailler, on ferme la connexion :
mysql_close(); // Déconnexion de MySQL
}



if (!empty($_GET['note'])){//si la variable note n'est pas vide alors il se passe ceci :

$note = $_GET['note'];

echo "$note";echo "<br>";

mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("test"); // Sélection de la base lexi

// On est connectés, on peut travailler sur la BDD
$reponse = mysql_query("SELECT * FROM lexi WHERE nom LIKE '$note'")or die("Erreur SQL : $query<br/>".mysql_error());; // Requête SQL

// Avec cette boucle, on liste uniquement le nom du lexi :
while ($donnees = mysql_fetch_array($reponse) )
{


echo 'description : ' ;
echo $donnees['description'];echo "<br>";

echo 'complementaire : ' ;
echo $donnees['complementaire'];echo "<br>";

echo 'commande : ' ;
echo $donnees['commande'];echo "<br>";
}

// On a fini de travailler, on ferme la connexion :
mysql_close(); // Déconnexion de MySQL

echo '<a href="?page=lexique&modifier=ok&n=';
echo $note;
echo'" >modifier note</a>';
}


if (!empty($_GET['nouvelle'])){//si la variable nouvelle n'est pas vide alors il se passe ceci :

echo'<form method="post" action="?page=lexique&ajouter=ok.php">

<label for="nom">Nom de la note : </label>
<input type="text" name="nom" id="nom" /><br />

<label for="description">Description : </label><br />
<textarea name="description" id="description" cols="60" rows="4" ></textarea><br />

<label for="complementaire">Complementaire : </label><br />
<textarea name="complementaire" id="complementaire" cols="60" rows="4" ></textarea><br />

<label for="commande">Commande associées : </label><br />
<textarea name="commande" id="commande" cols="60" rows="4" ></textarea><br />

<input type="submit" value="Ajouter" />

</form>';

}

if (!empty($_GET['ajouter'])){//si la variable ajouter n'est pas vide alors il se passe ceci :

$nom = $_POST['nom'];
$description = $_POST['description'];
$complementaire = $_POST['complementaire'];
$commande = $_POST['commande'];
$createur = $_SESSION['membre_qdg'];


$jour = date("d");
$mois = date("m");
$annee = date("Y");

mysql_connect("localhost", "root", "");
mysql_select_db("test");

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO lexi VALUES('', '$nom', '$description',
'$complementaire', '$annee-$mois-$jour', '$annee-$mois-$jour',
'$commande', '$createur')")or die("Erreur SQL : $query<br/>".mysql_error());;
mysql_query("UPDATE lexi SET nom = UPPER(nom)")
or die("Erreur SQL : $query<br/>".mysql_error());;
mysql_close();

echo "Vous venez de creer la nouvelle note : ";echo "$nom";echo "<br />";
echo "description : ";echo "$description";echo "<br />";
echo "complementaire : ";echo "$complementaire";echo "<br />";
echo "commande : ";echo "$commande";echo "<br />";

}

if (!empty($_GET['modifier'])){//si la variable modifier n'est pas vide alors il se passe ceci :

$note = $_GET['n'];

mysql_connect("localhost", "root", "");
mysql_select_db("test");

$nom = mysql_query("SELECT * FROM lexi WHERE nom LIKE '$note'");
while ($data = mysql_fetch_array($nom)){

echo'<form method="post" action="?page=lexique&retoucher=ok&note2=';
echo $note ;
echo '">

<label for="nom">Nom de la note : </label><br />
<textarea name="nom" id="nom" cols="30" rows="1" >';
echo $data['nom'];
echo ' </textarea><br />

<label for="description">Description : </label><br />
<textarea name="description" id="description" cols="60" rows="4" >';
echo $data['description'];
echo' </textarea><br />

<label for="complementaire">Complementaire : </label><br />
<textarea name="complementaire" id="complementaire" cols="60" rows="4" >';
echo $data['complementaire'];
echo ' </textarea><br />

<label for="commande">Commande associées : </label><br />
<textarea name="commande" id="commande" cols="60" rows="4" >';
echo $data['commande'];
echo ' </textarea><br />

<input type="submit" value="Modifier" />

</form>';

}
mysql_close();
}else{ echo "pas de modif" ;}

if (!empty($_GET['retoucher'])){//si la variable retoucher n'est pas vide alors il se passe ceci :

$note2 = $_GET['note2'];
$nom = $_POST['nom'];
$description = $_POST['description'];
$complementaire = $_POST['complementaire'];
$commande = $_POST['commande'];

mysql_connect("localhost", "root", "");
mysql_select_db("test");

mysql_query("UPDATE lexi SET nom ='$nom', description='$description',
complementaire='$complementaire', commande='$commande'
WHERE nom='$note2'")or die("Erreur SQL : $query<br/>".mysql_error());

mysql_query("UPDATE lexi SET nom = UPPER(nom)")
or die("Erreur SQL : $query<br/>".mysql_error());;

echo "note ";
echo $nom;
echo " modifiée";

mysql_close();
}


?>

merci d'avance...+++
A voir également:

3 réponses

Utilisateur anonyme
 
bonjour,

le code est effectivement long, tu aurais pu le réduire un peu en ne donnant que ce qui ne va pas.
cette ligne me semble fausse :
mysql_query("UPDATE lexi SET nom = UPPER(nom)")

$nom ne serait-il pas plus juste ?

--
1
catcher41
 
En effet j'ai obtimisé le code en mettant
mysql_query("UPDATE lexi SET nom = UPPER('$nom') WHERE nom = '$nom'")
au lieu de
mysql_query("UPDATE lexi SET nom = UPPER(nom))

mais mon problème est toujours là.Ce qui est étrange c'est que dans la base de donnée tous se passe bien, les modifications sont bien prise en compte et le message "pas de modif ne s'affiche plus" ( bon point), mais j'ai une page blanche là ou je devrai avoir mon formulaire...

Je continue à chercher si quelqu'un vois autre chose je suis preneur ^^
0
Utilisateur anonyme
 
reBonjour,
essayez de tracer le contenu de $_GET car ce tableau est peut être conservé alors que vous penser qu'il ne doit pas y être.
0
catcher41
 
Bonsoir, problème résolu...

Le soucis à l'air de venir de l'utilisation du LIKE à la place du = dans MySQL


$nom = mysql_query("SELECT * FROM lexi WHERE nom LIKE '$note'");
en
$nom = mysql_query("SELECT * FROM lexi WHERE nom = '$note'");

Mais pourquoi marche t-il une fois mais pas deux, grand mystère...

Si quelqu'un à la réponse, je la veux!
Merci encore.
0
Utilisateur anonyme
 
Bonsoir,
tous les test que je fais avec l'une ou l'autre des syntaxes suivantes :
$nom = mysql_query("SELECT * FROM lexi WHERE nom LIKE '$note'");

$nom = mysql_query("SELECT * FROM lexi WHERE nom = '$note'");

donnent les mêmes résultats.
le like peut donner des réponse différentes si on y ajoute % là où il faut.

reste aussi à voir si note est en caractère ou en numérique, si 10.00 ou 10 ?
--
0
catcher41 > Utilisateur anonyme
 
Non contrairement à ce que l'on peut croire la variable note et de type text...
0